测试开发
测试开发的对象包括自动执行的测试用例和辅助测试活动的工具。
自动化测试的基本策略
- 产品相关 - 自动化测试应该切合当前产品
- 聚焦风险 - 自动化测试应该聚焦风险,重点解决产品面临的最大风险,而不必强求面面俱到
- 多种多样 - 自动化测试应该在资源允许的范围内尽力拓展测试领域,以提供给多样化的测试
- 讲求实用 - 自动化测试应该讲求实用,测试人员需要根据项目有语境选择合适的开发策略
将测试开发视为软件开发
利用自动化测试金字塔来指导测试开发
金字塔底层是自动化测试的基础,主要包含单元测试和组件测试 金字塔中层是面向业务的自动化测试。调用产品提供的编程接口 金字塔顶层是少量的基于图形界面的自动化测试 金字塔上方是手工测试
面向调试的测试代码
- 测试代码应该尽可能简单
- 测试代码应该容易阅读
- 测试代码需要合理的抽象和封装
- 测试代码应该检查每一步操作的结果,发现问题立刻报告
- 测试代码应该拥抱日志
- 除了文本日志,测试代码还可以记录其他形式的日志
以下场景可以适用于计算机辅助测试
- 用程序完成需要反复执行的测试准备工作
- 用程序产生测试数据,并让产品使用它们
- 用程序模拟用户操作
- 用程序监控产品行为
测试任务中存在许多运用程序来提高工作效率的机会。测试人员需要抓住这些机会,综合运用多种开发技术来构建不同类型的测试工具
大规模自动化测试 high volume automated testing 大规模自动化测试是一种测试策略,通过自动化地执行海量的测试用例,来强力检测产品缺陷。
常见的测试基于最佳采样的,出发点是获得数量较少,有代表性的测试用例,通过少量的典型采样来评估整个空间
基于大规模的采用的测试技术 HiVAT, 运行的每一个测试都是平凡的,但是海量的测试用例密集地覆盖了测试空间,能够发现精心构造的小规模TCs所错过的缺陷。
模式测试是一种修改输入数据来暴露软件缺陷的方法。
HiVAT实施方式:流程是讲将测试任务分发给多台计算机,然后汇总来自所有计算机的测试结果
- 测试人员使用工具生成大量的测试用例
- 根据可用计算机的数量,测试控制服务器把测试用例划分为若干组,将它们分配给测试执行计算机
- 在测试执行计算机上,测试程序运行测试用例,并记录测试日志
- 测试控制服务器汇总来自各台计算机的测试结果,将它们保存到测试结果仓库中
- 测试人员调查测试所发现的问题,并提交缺陷报告
如何生成大量的测试输入数据
- 穷举所有的取值
- 尽可能多地收集真实的业务数据
- 随机地产生测试数据
- 用启发式规则指导随机采用
- 为每一条测试数据生成唯一的编号
测试人员可以从两个角度来考察测试数据集的质量
- 很好的覆盖了业务领域
- 很好的覆盖了代码实现
如何构建测试先知,以自动地发现产品缺陷
- 检查产品和参考程序的一致性
- 检查被测版本和已发布版本的一致性
- 检查产品自身的行为是否一致
- 用一组约束规则来检查产品的结果
- 基于测试模型的检查
如何监控测试的执行
- 用独立的监控进程监视测试程序和被测产品
- 测试程序记录测试进度,以便重新启动后继续运行尚未执行的测试用例
- 测试程序主动向测试控制服务器申请测试用例,即使用拉模式来分配测试用例
- 当某台计算机发生故障时,测试控制服务器应该记录错误,并将分配给它的测试用例集转移动其他计算机上
如何调查大量的测试失败
- 测试程序应该记录它执行的所有测试用例或命令,以便测试人员重现错误
- 一旦测试程序发现软件错误,它应该尽可能多地报错产品信息和环境信息
- 用多台计算机执行测试时,测试程序应该将测试结果提交到一个中心节点
- 让测试人员通过查询命令来获取特定的测试结果