基于用例库的自动化回归测试的设计和实现

2018-02-27 13:29叶素梅
电脑知识与技术 2018年35期
关键词:自动化测试

叶素梅

摘要:当软件产品的代码被修改,特别是在产品的版本更新时,会对原有的代码产生影响。为了保证产品的整体性能,必须对整个代码进行回归测试。回归测试的重复度较高,工作量较大,自动化测试可以大大提高测试的效率。通过设计并生成测试脚本,在服务器上执行测试命令,并调取用例库中的测试用例,可以实现回归测试的自动化。对测试结果进行分析后,自动生成测试报告。

关键词:回归测试;自动化测试;用例库;测试用例复用

中图分类号:TP311.52     文献标识码:A     文章编号:1009-3044(2018)35-0055-02

Abstract: When the code of the software product is modified, especially when the product version is updated, it will affect the original code.In order to ensure the overall performance of the product, the entire code must be tested for regression.Regression testing has high repeatability and heavy workload. Automated testing can greatly improve the efficiency of testing.The automation of regression testing can be realized by designing and generating test scripts, executing test commands on the server and calling test cases from the test case database.After analyzing the test results, the test report is automatically generated.

Keywords:Regression Testing; Automated Testing;Testcase Database; Testcasereuse

在软件开发的整个过程中,对代码的任何一次修改,都有可能给软件带来问题。软件代码的修改一般是增加新功能,或者是对已有代码进行缺陷修正和性能提升。新加入的代码除了本身可能存在问题外,也有可能会对原有的代码产生影响[1]。同样的,对缺陷进行修正的同时,又可能引发了其他的缺陷。因此,每当代码发生改变时,需要对代码进行回归测试,再一次测试所有的功能[2]。对新增的代码需要对应的增加新的测试用例,对原有的代码需要再次运行所有的测试用例,以便确定修改后的代码达到了预期的目标。

回归测试在整个软件开发周期中,有着很重要的作用,保障着整个产品的质量和安全。但是回归测试在软件测试环节的工作量很大,手動测试的效率不高[3]。在回归测试中引入自动化测试,通过控制被测软件的执行,模拟手动测试,可以大大提高测试的效率,节约开发的成本[4]。本文通过对测试用例库中用例的复用,在多个服务器之间进行脚本设计与执行,构建了一个适用于回归测试的自动化平台。

1 系统设计

软件测试过程中,有很多重复性的工作,特别是在产品的回归测试中尤为明显。我们设计了一个由多台服务器构成的测试平台,能够自动执行测试脚本,并通过测试结果的比较分析,最终生成测试报告。

1.1 系统的构成

回归测试平台包含4个服务器系统,分别是代码服务器、编译服务器、用例库服务器和测试执行服务器等。

代码服务器上保存着产品所有被测代码,可以进行产品的版本管理。在这个服务器上可以根据版本号,自动签出需要测试的所有代码。代码被签出后,在编译服务器上进行产品编译,并根据测试任务生成测试命令脚本。

用例库服务器管理着产品测试中的可复用测试用例。通过接口可以向库中手动添加用例,对库中已有的用例可以通过用例号自动调取。测试执行服务器主要是在服务器上搭建了产品运行的所有环境,以确保产品能够正常运行。根据产品需求的不同,不同版本的产品所需要的硬件、设备参数、性能参数等环境不太一致。在专门的测试执行服务器上执行产品测试,最大程度上模拟了最终产品的运行环境,避免了多系统多版本的干扰,能够得到最真实的测试结果。

1.2 系统的逻辑关联

系统所涉及的四类服务器都构建在局域网环境内。编译服务器负责从代码服务器上签出需要测试的代码,并开始进行编译。编译成功后的产品会回传到代码服务器进行版本管理。当编译结束后,在编译服务器上会生成测试脚本,也就是生成不同的测试命令清单,并根据测试命令,拉取测试用例清单。测试用例清单会传送到测试用例库,用于测试用例的校验。这个过程主要是为了确保测试用例库中有全部所需的用例,以免自动执行时,因为无法调取测试用例而报错。

测试命令会下发到测试执行服务器中,针对每一条执行命令,调取合适的测试用例,并分析结果,最终生成一个测试报告。图1给出了在各服务器之间数据流转的示意图。通过这个平台,能够有效地进行产品的回归测试,尽可能检测出因为代码的修改而造成的软件缺陷,而且测试效率得到很大的提升。

2 系统实现

2.1 回归测试的预处理

在对一个新版本的产品进行回归测试之前,必须有针对性地进行软硬件方面的前期准备。在编译服务器上需要构建编译环境,我们的产品主要是要区分Linux系统和windows系统。测试用例库服务器上需要根据代码的更新,设计并手动新增合适的测试用例。这些用例需要事先进行手动测试,以确保新增的用例真实有效。一般而言,测试用例库中更多的是新增用例,不太会删除用例。新增的用例都有对应的用例编号,以便能存入到用例库中进行复用管理。测试执行服务器上需要构建产品运行的真实环境。对于我们的产品而言,就是需要机、电、光等各部分都配合到位。

2.2 测试的设计

当产品编译成功并且测试用例库完备以后,就可以进行回归测试的脚本设计了。这个过程需要测试人员人工干预,是一个半自动的过程。测试人员根据产品的业务逻辑,选择产品的业务编号。每个业务都有相应的测试命令和测试用例列表。测试人员完成选择后,编译服务器上会根据业务逻辑自动生成测试脚本。

测试命令脚本示例如下所示:

<TestCommandID = 0101.10>

<Parameter1> a </ Parameter1>

<Parameter2> b </ Parameter2>

……

<InputSet>//192.168.1.1/in.dat</InputSet>

<OutSet>//192.168.1.7/result.dat</OutSet>

<TestCase Suits ID>0101</ TestCase Suits ID>

</ TestCommandID>

一個测试任务一般仅生成一个测试脚本,该脚本依据不同的业务逻辑分成若干段落,每个段落有若干条测试命令,并定义了命令执行的一些参数。对于环境参数一般使用文件附件的形式调入。测试结果的输出也是记录在对应的文件中。同时测试命令中给出了需要到测试用例库中去调取的用例套编号。

2.3 脚本的执行

测试任务脚本在专门的服务器上执行,由测试人员根据任务编号输入脚本启动命令后开始。脚本在执行过程中,会对硬件环境的情况进行检测,对于硬件没有准备好或者某些场景没有保存的情况,都会一一记录在测试结果内。在测试命令执行过程中,会自动调取用例库中的用例。在测试用例测试过程中,如果出现错误,一般会有三种情况。第一种情况是测试用例没有准备好。这种情况比较少见,一般是由于软件功能新增后,配套的测试用例没有同步。第二种情况是测试用例结果错误。针对特定的用例值,运行后的结果是错误的。这就是需要捕捉的软件缺陷。还有一种情况是测试命令结果返回错误。这种情况是指用例运行结果正确,但是测试命令返回的结果有误。这个情形出现后,要根据具体情况分析,看看缺陷到底是出现在软件产品上,还是出现在测试工具本身。

2.4 报告生成

当测试脚本运行结束后,系统会生成当前测试的报告。测试报告给出了测试的统计信息和明细信息。整个报告一般分为三部分:第一部分是测试的统计信息,给出每种缺陷发生的数目;第二部分给出测试用例的运行结果明细;第三部分给出测试命令的运行结果明细。测试报告的示例如下所示:

Test Time: 2018-11-9 09:08:55

Test Task ID: 201811005

Excuting Machine: 192.168.1.7

Object Machine: 192.168.1.2

Summary of Test:

Pass:  300

EnvNotReady: 0

ExeError: 0

RltError: 0

EnvNotRestore: 0

Test cases detail:

0101 → pass

……

Test command detail:

0101.10 → pass

……

3 结论

当产品的版本进行更新时,随着代码的修改或增加,对原有代码会产生影响。此时需要对整个产品进行回归测试,以尽可能保证产品整体的稳定性和安全性。回归测试的重复率较高,而且工作量较大。通过测试任务脚本的生成与执行,并结合测试用例的复用,能够实现回归测试的自动化,避免测试用例执行的遗漏,大大提高软件测试的效率。

参考文献:

[1] 李丹, 刘杰. 软件回归测试及其实践[J]. 电子产品可靠性与环境试验, 2001(6):23-25.

[2] 李刚毅, 金蓓弘. 自动化回归测试的技术和实现 [J]. 计算机应用研究, 2006, 23(2):192-194+213.

[3] 张丽波. 软件自动化测试的设计与实施[J]. 佳木斯大学学报:自然科学版, 2004, 22(4):568-572.

[4] 朱芳, 李曦, 赵振西. 一种多平台自动化测试工具的设计和实现 [J]. 计算机工程, 2004, 30(24):186-188.

[通联编辑:梁书]

猜你喜欢
自动化测试
浅谈空调控制器自动化测试