软件测试

1. 分类

开发阶段分类:

  • 单元测试:对最小模块测试
  • 集成测试:小模块集成后测试
  • 系统测试:所有流程统一的测试,包括功能测试、兼容性测试、性能测试、安全测试
  • 验收测试:上线前的测试,包括
    • α测试:内测,开发环境下测试模拟用户测试
    • β测试:公测,实际环境下用户的测试

是否查看代码:

  • 白盒测试:查看源代码进行测试,研究产品内部源代码和程序结构,例如单元测试。
  • 黑盒测试(数据驱动测试):完全查看源代码进行测试,不考虑程序内部结构和内部特性,注重与测试软件的功能需求,只关心软件的输入数据和输出数据。
  • 灰盒测试:只看一部分源代码进行测试,介于白盒与黑盒之间的测试

测试执行方式:

  • 静态测试:不运行程序,只是检查代码
  • 动态测试:运行程序,检查输入数据与输出数据是否符合逻辑

是否手工测试:

  • 手动测试:即人工测试
  • 自动测试:使用代码进行测试

其他:

  • 冒烟测试:
  • 回归测试:软件测试的第二轮开始,测试此前的bug是否修复
  • 随机测试:模拟用户测试(用户测试一般是随机的),一般在最后一次
  • 探索性测试:升级版的随机测试,未来的发展方向

2.自动化分层测试体系

  • 70%单元测试
  • 20%服务测试
  • 10%用户界面测试

3.黑盒测试

常用测试方法:

  • 等价类划分

    输入域明确:把程序的输入域划分为若干个子集

    分类:每个子集中选取少数代表性数据作为测试用例,其等价于所在类的其他值

    常见分类:有效、无效等价类

  • 边界值分析:将边界值作为重点测试数据,对等价类的补充

  • 因果图:一个有向图,显示因果模型中变量之间的因果关系

  • 判定表:一种表达因果关系的逻辑表达方式,使用表格分类条件、中间结果、最终结果之间的关系

  • 决策树:判定表的另一种表示(比因果图和判定表好),可使用流程图表示

  • 探索性测试:一种软件测试风格。基于上下文质量反馈的测试风格。适时调整测试执行

    • 成本低,可以不用提前设计大量测试用例
    • 可以激发测试工程师的创造性,更快发现问题
    • 测试覆盖度无法得到有效保障
    • 多数测试活动都是由探索性测试与脚本用例结合

3.测试用例

最终结果:成功失败

三大核心要素:标题、步骤、断言

  • 标题:测试用例的描述
  • 步骤:测试执行过程的描述
  • 断言:实际结果与预期结果对比