软件测试的核心问题
- 测试用例:测试用例设计、测试方法、测试策略
- 测试效率:测试用例约简、自动化测试、测试工具
- 测试效果:测试覆盖率分析、测试报告分析
软件测试的过程
- 拟定测试计划
- 编制测试大纲
- 设计测试用例
- 实施测试
- 分析测试结果(生成测试报告)
软件测试的类别(从不同角度划分)
1. 测试技术(代码是否可见的通用划分)
(1)白盒测试:基于软件代码的内部逻辑来设计测试用例。测试退出条件是代码覆盖率,一般由开发人员完成。Test based on code. Test covers as much implemented behavior as possible.
(2)黑盒测试:基于需求和功能性,不需要了解内部的设计和代码,通过软件外部表现来发现缺陷和错误。Tests based on spec. Test covers as much as special behavior as possible.
(3)灰盒测试:介于白盒测试和黑盒测试之间的技术,既关注软件外部表现,又注意程序内部逻辑结构
2. 开发阶段
(1)单元测试:对最小的软件设计单元(模块)的验证工作
(2)集成测试:验证模块间接口是否正确,多个模块是否能协调一致地正确实现需求和功能。
(3)系统测试:测试整个系统的行为和错误属性
(4)性能测试:评价系统响应时间,吞吐率等系统属性,并与不同版本或竞争产品进行比较。
(5)确认测试:验证软件是否可以按照用户合理的期望方式工作。
(6)验收测试:保证客户对所有的需求都满意(阿尔法测试和贝塔测试)
(7)回归测试:保证增强型或改正型修改使软件正常运行,不影响已有功能。
3. 执行状态
(1)静态测试:不运行程序,而通过人工对程序和文档进行分析与检查。
(2)动态测试:通过人工或利用工具运行程序进行检查,分析程序执行状态和外部表现。
4. 执行主体
(1)开发方测试:开发方通过检测和提供证据,证实软件是否满足规定的需求——验证测试或阿尔法测试。
(2)用户测试:用户通过运行和使用软件,检测与核实软件实现是否符合自己预期要求——贝塔测试
(3)第三方测试:介于软件开发方和用户之间的测试组织进行的测试活动。
5. 特殊测试/objectives of testing
(1)国际化测试:保证全球化软件产品符合不同国家的语言和使用习惯。
(2)即兴测试、随机测试、探索式测试:通过直觉和经验,不采用任何形式的测试,针对有经验的工程师。
(3)兼容性测试:确保软件在不同基础设施下都能够一致地发挥作用。
(4)安全性测试:测试软件是否存在安全漏洞和隐患。
(5)可用性与易获得性测试:确认产品的易用性、美感及是否方便行动不便的用户。
(6)面向对象系统测试:针对采用面向对象技术开发的软件所的测试技术。
(7)Web测试:发现存在于web应用中的内容、功能、性能、安全性等方面的错误的测试活动集。