软件测试脚本指南

Rosine ·
更新时间:2024-11-14
· 746 次阅读

  测试脚本是自动执行测试过程(或部分测试过程)的计算机可读指令。测试脚本可以被创建(记录)或使用测试自动化工具自动生成,或用编程语言编程来完成,也可综合前三种方法来完成。

  测试脚本的结构

  为了提高测试脚本的可维护性和可复用性,必须在执行测试脚本之前对它们进行构建。或许会发现这样的情况,即有的操作将出现在几个测试过程中。因此,应有目的地确定这些操作的目标,这样可以复用它们的实施。

  例如,可以采用这样一些测试过程,这些过程是由对某个记录执行的不同操作组成的。这些测试过程可能是添加、修改和删除某个记录的操作的组合:

  ■ 添加、修改、删除(显而易见的操作)

  ■ 增加、删除、修改

  ■ 增加、删除、增加、删除...

  ■ 增加、增加、增加...

  如果把这些操作看作是独立的测试过程,分别在不同的测试脚本中对它们进行实施,而且在其他测试过程中复用它们,那么可以达到更高的复用水平。

  另外,还可以有目的地以如下方式来构建测试过程:更改目标软件时,需要对测试过程进行局部的可控制的变更。这将使得测试过程和测试脚本对目标软件的变化有更大的应变能力。例如,假设软件的登录部分已经改变。在遍历该登录部分的所有测试用例中,只有关于登录的测试过程和测试脚本需要进行改变。

  记录技术

  为使测试脚本获得更高的可维护性,应该以不易受测试对象变化影响的方式来记录测试脚本。例如,在填写对话框字段的测试脚本中,从一个字段跳转到下一个字段有以下几种选择方式:

  ■ 使用 TAB 键

  ■ 使用鼠标

  ■ 使用键盘快捷键

  在这些选择中,有一些选择更易于受到设计变化的影响。如果在屏幕上插入了一个新的字段,则使用 TAB 键将不是很可靠。如果重新指定快捷键,则它们也无法提供可靠的记录手段。当使用鼠标确定字段的方法受变化制约时,这种方法亦不可靠。然而,一些测试自动化工具带有测试脚本记录器,可以通过比较可靠的方法来命令记录器标识该字段,例如可以通过开发工具(PowerBuilder、SQLWindows 或 Visual Basic)来指定它的对象名。在这种方式下,记录的测试脚本不会受用户界面的微小变化所影响(例如,布局变更、字段标签变更、格式变更等等)。

  数据驱动的测试

  许多测试过程包括在给定的数据输入屏幕内输入几组字段数据,检查字段确认功能、错误处理等等。它们的过程步骤都是一样的;只有数据不同。不要记录每个输入数据集的测试脚本,而应该建立单独的记录,然后对其进行修改以处理多个数据集。例如,因为无效数据而产生相同错误的所有数据集可以共享同一个已记录的测试脚本。对测试脚本进行修改,将数据作为可变信息进行访问,从文件或其他外部源中读取这些数据集,而且在所有相关数据集间循环执行。

  如果在编制测试脚本或测试代码时已经考虑了输入数据集和输出数据集的循环执行因素,则必须先建立相应数据集。这些数据集的常用格式是文本文件中用逗号隔开的字段的记录。这种格式易于从测试脚本和测试代码中读取,同时也易于创建和维护。

  多数数据库包和电子表格包可以生成逗号分隔的文本输出。采用这些包来组织或获取数据集有两个重要的优点。首先,它们为输入和编辑数据提供一个构造环境,比单纯使用文本编辑器或文字处理软件要好。其次,它们大多具有查询现有的数据库并捕获返回数据的能力,因此很容易从现有源中提取数据集。

  错误处理

  已记录的测试脚本是按顺序执行的。不存在分支点。测试脚本强壮的错误处理功能要求增加响应错误条件的逻辑。当错误发生时可以应用的决策逻辑包括:

  ■ 分支到另外的测试脚本上。

  ■ 调用试图清除错误条件的脚本。

  ■ 退出该脚本,并启动下一个脚本。

  ■ 退出脚本和软件,重启,并在该脚本失败后重新开始测试下一个测试脚本。

  每一种处理错误的技术都需要有添加到测试脚本中的编程逻辑。因此,该逻辑应该尽可能地限制在用来控制低级测试脚本排序的高层测试脚本。这使得低级测试脚本完全可以从记录中进行创建。

  测试脚本同步和时间安排

  当进行重点测试时,通常需要同步测试脚本以便它们在预先确定的时间启动。通过将期望的开始时间与系统时间比较,可以修改测试脚本以便它们可以在某个特定的时间启动。在联网系统中,每个测试站将通过网络共享同一个时钟。在以下示例中(在用 Visual Basic 编写的脚本中),有关语句已在脚本启动前插入,以使在达到脚本启动时间前将其挂起。

InputFile$ = "TIME.DAT" Open InputFile$ For Input As 1 Input #1, StartTime$ Close #1 Do While TimeValue(StartTime$) > Time DoEvents Loop [Start script]

  本示例中,要求的开始时间存储在一个文件里。这样,更改开始时间时无需更改测试脚本。读取该时间并储存到一个名为 StartTime$ 的变量中。Do While 循环一直进行到到达开始时间为止。DoEvents 语句非常重要。它允许在测试脚本被挂起和等待启动时执行后台任务。如果没有 DoEvents 语句,那么系统在开始时间到达之前没有任何响应。

  测试和调试测试脚本

  在记录测试脚本的同一测试软件上执行这些近记录的测试脚本时,不应该发生任何错误。此时的环境及软件与它被记录的时候是相同的。可能存在测试脚本无法成功运行的情况。对该测试脚本进行测试将暴露这些情况,并允许在实际测试之前对其进行修正。以下讨论了三种典型问题:

  ■ 对用于在用户界面选择记录项的方法而言,若存在多义性,将使得测试脚本在回放时进行不同操作。例如,通过文本(或标题)识别的两个记录项可能拥有完全相同的文本。当执行该脚本时,将会产生多义性。

  ■ 虽然测试运行/会话特定的数据被记录下来(即,指针、日期/时间戳或其他一些系统生成的数据值),但是它们与回放时的数据不同。

  在记录和回放时的时间差异会导致问题产生。记录测试脚本比执行测试脚本在过程上一直要慢得多。有时,产生的时间差异会导致测试脚本先于软件运行。这种情况下,可以插入等待状态以调整测试脚本相对于软件的运行速度。



软件测试 测试脚本 脚本 测试 软件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号