软件测试基础概要

什么是软件测试

软件包括静态测试和动态测试

  • 静态测试 不运行程序,通过对代码和项目文档检查,分析,代码分析工具发现缺陷

    发现的缺陷:与标准之间的偏差、需求错误、设计错误、可维护性不足、错误的接口说明等

  • 动态测试 通过运行程序,比较软件的外在表现和需求、设计之间是否一致,从而发现缺陷

    发现的缺陷:功能实现错误,功能和用户需求的偏差

在《软件测试的艺术》中,作者认为:测试是为了证明程序有错,通过运行程序发现问题

软件测试的对象

按功能划分

软件 = 程序 + 数据 + 文档

程序:运行程序

数据:业务数据、用户数据等

文档:用户手册、安装文档、需求文档、设计文档

按结构划分

软件包含组件/模块、UI、数据库、系统

全过程软件测试

测试贯穿软件整个生命周期

需求评审 设计评审 单元与集成测试 系统测试 验收测试
需求缺陷 设计缺陷 代码和接口缺陷 系统缺陷 其它各种缺陷

缺陷

任何违背质量的问题都可以称为缺陷

内部质量 代码风格、内聚性、耦合性…

外部质量 功能、性能、安全性、可靠性…

使用质量 用户体验、经济风险、健康风险、上下文覆盖…

调试是不是测试?

测试是找到软件中存在的缺陷

调试是找到缺陷产生的原因

软件测试的正面解读

  • 一致性的验证:设计是否满足需求,代码是否符合设计

  • 确认软件系统是否满足用户的实际需求

软件测试 = Verification + Validation

软件测试的价值

  • 发现问题,督促问题解决,提供产品质量

  • 持续提供质量反馈,及时揭示质量风险,有助于控制项目风险,提高产品质量

  • 全面评估产品质量,提供有关产品质量的全面、客观的信息

  • 通过缺陷分析,归纳缺陷产生原因,有助于缺陷预防

质量控制质量保证

测试达人观点分享

进阶软件测试人员需要掌握的

  • 从发现缺陷到预防缺陷
  • 将质量思想融入到整个项目团队
  • 技术广度比开发要求更高 更全面的知识可以让我们更准确的定位问题,采用更好的测试手段
  • 测试除了对技术的了解,也要对产品功能、特性要有系统性思考
  • 要有很强的沟通能力、冲突管理能力、说服项目管理、开发人员改正问题
  • 开发技术发展很快,测试需要具有质量和效率的意识,也要有良好的技术以适应技术的飞速发展
  • 测试不仅是质量保证,还包括从产品策划、架构设计到流程优化的综合能力提升