软件测试实战读书笔记

测试开发

Posted by DanteYu on September 12, 2016

测试开发

测试开发的对象包括自动执行的测试用例辅助测试活动的工具


自动化测试的基本策略

  • 产品相关 - 自动化测试应该切合当前产品
  • 聚焦风险 - 自动化测试应该聚焦风险,重点解决产品面临的最大风险,而不必强求面面俱到
  • 多种多样 - 自动化测试应该在资源允许的范围内尽力拓展测试领域,以提供给多样化的测试
  • 讲求实用 - 自动化测试应该讲求实用,测试人员需要根据项目有语境选择合适的开发策略

将测试开发视为软件开发


利用自动化测试金字塔来指导测试开发

金字塔底层是自动化测试的基础,主要包含单元测试和组件测试 金字塔中层是面向业务的自动化测试。调用产品提供的编程接口 金字塔顶层是少量的基于图形界面的自动化测试 金字塔上方是手工测试


面向调试的测试代码

  • 测试代码应该尽可能简单
  • 测试代码应该容易阅读
  • 测试代码需要合理的抽象和封装
  • 测试代码应该检查每一步操作的结果,发现问题立刻报告
  • 测试代码应该拥抱日志
  • 除了文本日志,测试代码还可以记录其他形式的日志

以下场景可以适用于计算机辅助测试

  • 用程序完成需要反复执行的测试准备工作
  • 用程序产生测试数据,并让产品使用它们
  • 用程序模拟用户操作
  • 用程序监控产品行为

测试任务中存在许多运用程序来提高工作效率的机会。测试人员需要抓住这些机会,综合运用多种开发技术来构建不同类型的测试工具


大规模自动化测试 high volume automated testing 大规模自动化测试是一种测试策略,通过自动化地执行海量的测试用例,来强力检测产品缺陷。

常见的测试基于最佳采样的,出发点是获得数量较少,有代表性的测试用例,通过少量的典型采样来评估整个空间

基于大规模的采用的测试技术 HiVAT, 运行的每一个测试都是平凡的,但是海量的测试用例密集地覆盖了测试空间,能够发现精心构造的小规模TCs所错过的缺陷。

模式测试是一种修改输入数据来暴露软件缺陷的方法。

HiVAT实施方式:流程是讲将测试任务分发给多台计算机,然后汇总来自所有计算机的测试结果

  1. 测试人员使用工具生成大量的测试用例
  2. 根据可用计算机的数量,测试控制服务器把测试用例划分为若干组,将它们分配给测试执行计算机
  3. 在测试执行计算机上,测试程序运行测试用例,并记录测试日志
  4. 测试控制服务器汇总来自各台计算机的测试结果,将它们保存到测试结果仓库中
  5. 测试人员调查测试所发现的问题,并提交缺陷报告

如何生成大量的测试输入数据

  1. 穷举所有的取值
  2. 尽可能多地收集真实的业务数据
  3. 随机地产生测试数据
  4. 用启发式规则指导随机采用
  5. 为每一条测试数据生成唯一的编号

测试人员可以从两个角度来考察测试数据集的质量

  1. 很好的覆盖了业务领域
  2. 很好的覆盖了代码实现

如何构建测试先知,以自动地发现产品缺陷

  1. 检查产品和参考程序的一致性
  2. 检查被测版本和已发布版本的一致性
  3. 检查产品自身的行为是否一致
  4. 用一组约束规则来检查产品的结果
  5. 基于测试模型的检查

如何监控测试的执行

  1. 用独立的监控进程监视测试程序和被测产品
  2. 测试程序记录测试进度,以便重新启动后继续运行尚未执行的测试用例
  3. 测试程序主动向测试控制服务器申请测试用例,即使用拉模式来分配测试用例
  4. 当某台计算机发生故障时,测试控制服务器应该记录错误,并将分配给它的测试用例集转移动其他计算机上

如何调查大量的测试失败

  1. 测试程序应该记录它执行的所有测试用例或命令,以便测试人员重现错误
  2. 一旦测试程序发现软件错误,它应该尽可能多地报错产品信息和环境信息
  3. 用多台计算机执行测试时,测试程序应该将测试结果提交到一个中心节点
  4. 让测试人员通过查询命令来获取特定的测试结果