《软件测试》读书笔记 第十五章 自动测试和测试工具
15.1工具和自动化的好处
- 重复执行测试:(回归測试)
代码——测试——修复,这一过程总是需要重复。
如果要测试某项特性,也许需要不止一次执行测试,而是重复多次。第一遍测试后,需要确认修复了之前发现的缺陷,同时没有引入新的软件缺陷。 - 工具和自动化的主要属性是:
- 速度。
- 效率。
- 准确度和精确度。
- 节省资源。
- 仿真和模拟。这自动化工具可以以选定的方式来驱动或响应软件。
- 坚持不懈。
15.2测试工具
- 测试工具的优点:
- 使用时并不是总需要深入了解工具在怎样做或者做什么。
- 可以建立工具监视和改变上百万计算机之间原始通信。要有效使用这些工具,测试员需要具备一些白盒技能以及底层协议的知识。
主要测试工具
15.2.1査看器和监视器
- 査看器和监视器:能够看到正常情况下看不到的软件运行的细节。
- 例子:
代码覆盖率分析器是査看工具。大多数代码覆盖率分析器是入侵式工具,因为它们需要编译并链接到原程序中才能获得所需信息。
通信分析器:允许査看通过网络或者其他通信电缆传输的原始协议数据。只是监听线路,提取经过的数据,在另一台计算机上显示。这种类型的系统对软件是非入侵式的。在网络中,这种监视器被称为嗅探器,因为它像一个电子鼻,从空气中嗅探数据。
15.2.2驱动程序
- 驱动程序:控制和操作被测试软件的工具
- 简单例子:批处理文件—即依先后顺序执行的程序或命令的一个简单清单。
15.2.3 桩
- 桩:桩与驱动程序本质上是相反的,不控制或者操作被测试软件;相反,它接收或者响应软件发送的数据。
- 例子:
原始:一种方法是输入数据并打印,然后査看打印输出结果,没有效率,出错率高。
使用桩:一台计算机输入数据,另一台计算机运行桩软件代替打印机,读取并解释打印数据, 就可以非常快捷并且准确地检验测试结果。
15.2.4压力和负载工具
- 压力和负载工具:用于向被测试软件增加压力和负载。通过创造资源不足或者负载过重等环境条件恶劣的情况下,来测试是否出现当有足环境良好时, 工作状况良好,但如果环境恶劣,就可能出现缺陷的情况。
15.2.5干扰注入器和噪声发生器
- 干扰注入器和噪声发生器:类似于压力和负载工具,但是在行为上更具有随机性。
- 例如,压力工具具有随机更改可用资源的执行模式。某个程序可能在内存充足条件下运行良好,也能应付内存不足状况,但是如果可用内存不断变化,就可能有问题。压力工具的执行模式可以暴露此类软件缺陷。
15.2.6分析工具
-
常用工具如下:
-
文字处理软件
电子表格软件
数据库软件
文件比较软件
抓屏和比较软件
调试器
二进制——十六进制计算器
秒表
录像机或者照相机
15.3软件测试自动化
- 软件测试自动化:启动、执行几乎不用人工干预,自动执行测试用例、査找软件缺陷、分析看到的信息、记录结果。
15.3.1宏录制和回放
- 宏录制和回访软件:在Mac系统上可以使用Quickeys程序;在Windows上可以使用Macro Magic。
- Macro Magic设置向导可以设置宏而如下选项:
① 名称。为宏命名以便以后辨认。
② 重复次数。可以设置宏在运行时重复或者循环的次数。
③ 触发条件。设置宏如何启动,可以按热键、输入一串字符、单击快捷方式、当或者 当系统闲置一段时间之后来启动。
④ 捕捉对象。可以选择只捕获(记录)键盘操作或键盘以及鼠标的移动和单击都记录。
⑤ 回放速度。宏回放的速度范围是 [80%*录制速度,500%*录制速度]。
⑥ 回放位置。该选项确定鼠标移动和单击位置与某个窗口的位置是绝对的还是相对的。 - 缺点:
① 宏无法检验软件是否以预期方式进行,只能消除了所有重复输入和鼠标移动,使测试员只需要观察宏的执行,确认得到预期结果。
② 不能保证宏的同步执行。如网页加载时间不定,而宏的时间是一定的,从而导致错误。
③ 回放位置的不确定性,程序并非总是在屏幕上的同一位置启动和出现。把回放位置设置为相对于程序窗口比设置为屏幕的绝对位置更好,但GUI的一丁点变化也会扰乱捕捉的步骤。
15.3.2可编程的宏
- 可编程的宏:不似通过录制第一次执行测试时的操作来创建可编程的宏,而是在创建时编写回放系统遵循的简单指令。
- 缺点:
① 限于直接执行命令,只能循环和重复。变量和决策语句不能使用。
② 没有自动检査测试结果的能力。 - 优点:
① 可以暂停执行,向测试员提示预期结果,并询问测试结果,通过还是失败。
② 解决录制宏的时序问题,不依靠绝对延时,等待特定条件成立才继续执行。
15.3.3完全可编程的自动测试工具
具有成熟编程语言的能力,具有驱动被测试软件的宏命令,以及进行验证的能力,是具备査找软件缺陷能力的工具。
- 验证正确与否的方法:
① 屏幕捕获。比较首次自动测试执行时的正确屏幕截图与当前屏幕截图,若不同,则标记为软件映陷。
② 控件值。可以检査软件窗口中各种控件的值。
③ 文件和其他输出。将输出与正确文件比较。
15.4随机测试:猴子和大猩猩
测试猴子:模拟用户可能的操作。
15.4.1笨拙的猴子
- 笨拙的猴子:不了解被测试软件,只是随机地单击鼠标或者敲击按键,直到完成循环,或者软件、操作系统崩溃。
- 原因:
随机输入最终可能打出程序员和测试员没有想到的奇特序列。
不停重复和使用可能会暴露内存泄漏等软件缺陷, - 缺点:乏一些使其更加有效的重要特性。
15.4.2半聪明的猴子
- 增加某些特性来提高猴子的智商,使其成为半聪明的猴子。
- 具有崩溃辨认能力,如果为猴子编写新功能,使其能识别发生了崩溃,并重新启动计算机,然后重新开始测试。
15.4.3聪明的猴子
- 聪明的猴子:
可以看懂描述软件的全部状态信息,可以像用户那样试用软件,只是使用更快,而且可以验证遇到的情况。
可以查找崩溃缺陷、查看数据、检查操作结果、找出其余预期结果的差距。
15.5使用测试工具和自动化的实质
- 测试自动化不是万能的。 正确规划和执行,工具和自动化可以使测试效率大大提高,发现其他方式不能发现的缺陷。但错误执行,会导致自动化测试的努力被放弃,增加项目成本。
- 使用自动化测试工具需要考虑:
① 软件变更。软件改变,宏需要可以灵活应对改变
② 人眼和直觉是不可替代的。
③ 验证难以实现。例如:屏幕捕获,当屏幕改变迅速,需要能正确识别。
④ 容易过分依赖自动化。小心杀虫剂怪现象。
⑤ 编写宏、开发工具和编制猴子,遵守程序员遵守的标准和规范。三者都属于开发工作。
⑥ 某些工具是入侵式的,可能导致被测试的软件不正常地失败。如果发现了软件缺陷,要设法在不使用该工具的情况下重现这个软件缺陷。因为缺陷可能是由工具引起的问题。