您好, 访客   登录/注册

软件自动化测试技术研究

来源:用户上传      作者:

  摘要:为了提高软件测试的效率,降低软件测试的成本,针对具有稳定软件架构的样本程序进行自动化测试技术的研究。通过分析软件的数据流程和用户需求,结合行业或领域的历史数据,构建软件测试平台和相关工具库,以此为基础,实现自动生成测试用例和测试脚本,进而完成自动化测试。自动化测试平台具有可继承性和可扩展性,对于不断变化的用户需求和软件版本,更新维护更加灵活方便。
  关键词:软件测试;数据库;测试用例; Selenium; Python
  中图分类号:TP311.56        文献标识码:A
  文章编号:1009-3044(2020)17-0033-02
  Abstract:In order to improve the efficiency of software testing and reduce the cost of software testing, the automatic testing technology was studied for the sample program with stable software architecture. By analyzing the data flow and user requirements of the software, and combining with the historical data of the industry or field, the software test platform and relevant tool library are built. On this basis, test cases and test scripts are automatically generated to complete automated tests. The automation test platform has the inheritability and the extensibility, the software maintenance is more flexible and convenient.
  Key words: software testing; database; test case; Selenium; Python
  1 引言
  在互聯网技术的快速发展背景下,社会的各行各业对软件产品的需求都在不断地增加,并且对软件的功能要求也越来越多,软件的版本迭代的越来越快,因此软件测试的时间就会被压缩,也就是面临测试工作量加大和测试时间缩短的压力。考虑人工测试的时间成本,软件自动化测试将在现代软件测试行业中扮演更加重要的角色。
  为了提高软件总体开发效率,相同行业或相同领域的软件研发在发展过程中将趋于成熟,开发过程也越来越规范,软件的架构也愈加稳定,成熟稳定的软件架构是软件测试自动化的基础,这种软件程序也可以被称为样本程序[1]。除了稳定的软件架构,自动化软件测试的实现还需要各行业软件运行过程中积累的海量行业数据[2],并从中提取有效的样本数据作为生成测试用例的样本库,结合软件架构和相对应的样本库构建自动化测试平台。
  目前,软件自动化测试工具的类型有很多,例如Selenium[3]、QTP[4]等。这些测试工具本身就具有很强功能,但对于不断的用户需求变化和软件产品更新迭代,其并不能提供便捷的自动化脚本编写方案,为了自动化测试工具更加专业化[5],因此本文研究了一种基于成熟稳定软件架构的样本程序的自动化测试平台框架,利用稳定的软件架构和行业数据,自动提取测试用例和生成测试脚本,对软件进行自动化测试。
  2 软件自动化测试平台框架
  自动化测试平台构建首先要确定该行业或领域软件的数据流程,即细化各个功能模块之间的数据流以及数据的行为参数(用户需求);然后以数据流和行为参数为基础从该行业或领域数据中提取各个模块的测试数据;最后建立相应的工具库。软件自动化测试平台工作框图如图1 所示。
  2.1 数据流
  软件是由多个模块组成,数据流就是各个模块之间的输入输出关系,每个数据流可以定义成一个由数据元素和数据关系组成的结构体,包括模块、输入来源模块、输出接收模块、输入数据元素、输出数据元素、功能关键字以及行为参数关键字,其中行为参数关键字是根据用户需求定义的规则参数。
  以软件系统中基本的增删改查模块中的修改功能为例(系统中有修改权限限制)。输入来源模块是系统菜单中的“操作界面”,输入数据包括“操作人员信息”“操作对象”和“操作内容”,输出接收模块是“显示界面”和“后台数据库”,输出数据包括“操作对象”“操作内容”和“操作结果”,功能描述的关键字为“修改”,行为参数关键字是“人员权限级别”。该数据流结构表示为:
  {“增删改查”;“操作界面”;“显示界面”,“后台数据库”;“操作人员信息”,“操作对象”,“操作内容”;“操作对象”,“操作内容”,“操作结果”;“修改”;“人员权限级别”}。
  2.2 行为参数
  行为参数主要是从用户需求中提取出来,用于约束软件的数据流,就是输入各种数据后输出的结果都必须满足用户需求,否则即测试不合格。行为参数用于反推出对应模块的数据流具有几种输入数据,以此覆盖所有测试用例,达到充分测试的目的。
  同样以修改功能为例,该模块数据流中的行为参数是“人员权限级别”,从输入数据中“操作人员信息”中获取“人员权限级别”,如果操作人员的“人员权限级别”具有修改的权限,操作成功并将“操作内容”和“操作结果”发送“显示界面”和“后台数据库”;如果没有权限,则操作不成功,将“操作结果”发送“显示界面”。此数据流可以生成2种测试用例,也就是至少需要2组测试数据来进行充分测试。   此外,数据流可能包含多个行为参数,生成的测试用例数量就由各个行為参数排列组合种类数决定。
  2.3 测试数据
  测试的流程就是通过输入各类测试数据后,判断得到的输出数据是否正确或者满足需求。因此在确定整个软件的数据流和行为参数后,以此为基础从大量的实际数据中提取具有代表性并能完全覆盖各类输入输出情况的数据作为最终的测试数据。
  以修改功能为例,至少可以提取出2组测试数据。如输入数据:操作人员信息(张三,等级1),操作对象(显示界面),操作内容(颜色)。输出数据:操作对象(显示界面),操作内容(颜色),操作结果(成功);输入数据:操作人员信息(李四,等级7),操作对象(显示界面),操作内容(颜色),输出数据:操作对象(无),操作内容(无),操作结果(失败)。
  2.4 工具库
  由软件自动化测试平台工作框图中可以看出,通过软件架构、用户需求和行业数据可以依次提取数据流库、行为参数库和测试数据库,这三种库组成了自动化测试平台的工具库。其中数据流库和行为参数库是需要根据软件的版本更新和用户需求的变化进行同步更新,然后再以新的数据流库和行为参数库为依据从行业数据提取测试数据并更新测试数据库。
  数据库采用了MySQL数据库,作为一种开源的结构化查询语言(SQL)数据库管理系统,它还具有性能卓越、服务稳定、安装简单、易于维护、支持多种开发语言和平台以及维护成本低等优点[6]。
  3 自动化测试工具
  本文实现自动化测试工具的脚本开发是基于Python语言[7],测试工具以Selenium为基础框架。通过从工具库抽取待测试模块的数据流和行为参数,匹配出测试数据,生成测试用例,然后组装出自动化测试脚本,配置测试工具的参数,调用测试程序,输出测试结果和相应的测试问题报告,完成自动化测试。整个自动化测试的流程如图2所示。
  3.1 脚本语言
  可用于实现自动化测试的编程语言有很多种,目前软件测试工程师使用的语言主要有Python、Java等。其中Java语言开发应用最为广泛,目前在各个领域的软件开发,Java都是比较主流的选择,它具有很好兼容性的优点,因此很多主流的测试工具都是用Java开发出来的。
  本文采用的是Python语言,作为一种语法简单、适合初学编程者的编程语言,近几年来Python生态的发展很迅猛,在数据分析、Web开发、人工智能以及自动化测试等领域都有涉及。Python语言优势在于灵活,而测试行业就是用户需求不断变化,可以充分利用Python广泛的第三方库来快速灵活的开发或更新自动化测试工具,提高测试效率。Python语言的劣势是执行效率比较慢,在测试行业中这一点并不明显。
  3.2 测试工具
  采用Selenium作为自动化测试工具主要看重其强于其他测试工具的四个优点。第一,它支持多种语言(Python、PHP、Java等)、平台(windows、Linux等)以及各类浏览器(Firefox、IE、Safari等);第二,它可集成各种开发平台,如TestNG、SauceLabs和Jenkins等;第三,可移动测试;第四,具有大型插件库,可通过各种插件扩展其更多功能[8]。
  4 结论
  目前使用的软件自动化测试的各类工具,在每次进行新的测试项目时,都需要耗费大量的时间和人力成本进行测试用例提取和测试脚本编写。针对这一情况,本文研究了一种可以自动化提取测试用例和生成测试脚本的软件自动化测试平台框架,以行业或领域软件的数据流程、用户需求和测试数据为基础,建立相应的工具库,最后实现自动化测试脚本的组装,完成自动化测试。而且同一行业或领域的自动化测试平台具有很好可继承性和可扩展性,便于后期用户需求变更后的更新维护,进而提高整个自动化测试流程的效率。
  参考文献:
  [1] 王致富.基于样本程序和规则库的代码自动化检查工具[D].北京:中国科学院研究生院,2011.
  [2] 周惠群,左春,蔡玉宝. 特定领域的数据参考模型建模方法研究[J]. 计算机工程与设计, 2009, 30(3): 605-609.
  [3] 庄文龙,陈惠娟. 基于Selenium2的自动化测试应用[J]. 福建电脑, 2019, 15(8): 21-24.
  [4] 李玉,尉双梅,汪添生. 基于QTP的企业级应用软件自动化测试方法[J]. 计算机系统应用, 2016, 25(6): 219-224.
  [5] 王津,左春,张正. 基于样本程序的自动化测试工具[J]. 计算机工程, 2019, 25(6): 211-218.
  [6] 刘晓光. 基于MySQL的分布式SQL数据库的设计与实现[D]. 北京:中国科学院大学,2016.
  [7] 孟聪. 基于Python的软件测试自动化平台研究[J]. 信息与电脑(理论版), 2019, 5(16): 45-51.
  [8] 姜文,刘立康. 基于Selenium的web软件自动化测试[J]. 计算机技术与发展, 2018, 6(9): 29-32.
  【通联编辑:代影】
转载注明来源:https://www.xzbu.com/8/view-15315234.htm