本栏目责任编辑:梁书
计算机工程应用技术
接口自动化测试框架设计优化与实现
孙立哲
(公安部第三研究所,上海201204)
摘要:随着浏览器技术的迭代更新,文档对象技术在一些主流浏览器版本中不再受支持,前期设计的轻量级接口自动化测
试框架中结果统计分析与展示模块因而功能不能正常使用。基于此,本文对前期设计的轻量级接口自动化测试框架做了一定的设计优化,将用于记录测试用例及结果的XML 文件结构设计优化为MySQL 数据库表结构设计,将测试执行模块写数据入XML 文件优化为写数据库表,将结果统计分析与展示模块由前端JS 读取XML 文件数据优化为后端JSP 读取数据库表数据。经验证测试,优化后的测试框架不再受文档对象技术的限制,实用性更佳,能在较主流的几款浏览器中正常使用,是一种有效的技术替代方案。关键词:自动化测试框架;设计优化;动态Web 技术;JSP ;MySQL 中图分类号TP311
文献标识码:A
文章编号:1009-3044(2021)08-0212-03
开放科学(资源服务)标识码(OSID ):
Optimization and Implementation of Interface Automation Testing Framework SUN Li-zhe
(The Third Research Institute of Ministry of Public Security,Shanghai 201204,China)Abstract:With the iterative update of technology,document object technology is no longer supported in some browsers,thus the function of the statistical analysis and presentation module in the interface automation test framework designed in the early stage is affected.Based on this,this paper made some
optimization for the automation test framework,such as with MySQL database table structure design replacing the XML file,with writing data into database table replacing into file,with reading data from database ta⁃ble by back-end JSP replacing from file by front-end JS.The optimized test framework is no longer limited by browser document object technology and has better usability,could be used in a few more mainstream browsers and is an effective technical alterna⁃tive.
Key words:automation test framework;design optimization;dynamical Web technology;JSP;MySQL
前期针对某后端服务产品接口多、内部处理逻辑复杂且版本迭代频繁的情况,为了实现短时间快速测试,基于面向对象技术、Web 开发技术等设计并实现了一套较实用的轻量级接口自动化测试框架[1]。该框架由两大部分组成,一是基于面向对象技术和XML 文档DOM 开发等技术的自动化测试执行模块,主要实现了对测试数据批量配置、测试脚本设计、测试脚本批量执行以及自动生成XML 格式的测试结果数据文件。另一部分是集XML 、HTML 、CSS 和JS 等集成开发技术的测试结果统计分析与展示模块,主要实现对测试结果文件内数据的统计分析并以Web 页面形式作个性化展示。在浏览器支持文档对象技术的情况下,该框架能表现出较好的实用性。但随着浏览器版本的迭代,文档对象技术不再受支持,如Microsoft Edge 84.0.522.52和Firefox 78.0b6,因此该框架部分功能无法正常使
用。为了解决该问题,本文对该框架作了技术优化,将用于记
录测试用例及结果等数据的XML 文件设计改为MySQL 数据库表设计[2-3],将测试执行模块写数据入XML 文件改为写入数据库表,将结果统计分析与展示模块由前端JS 读取XML 文件数据改为后端JSP [4]读取数据库表数据。优化后自动化测试框架的结果统计分析与展示模块功能在Microsoft Edge 84.0.522.52、Google Chrome 84.0.4147.105和Firefox 78.0b6等几款主流浏览器新版中可正常使用,是一种较好的替代方案。
1优化前后整体设计对比
优化前,整套测试框架部署在客户端。在客户端Eclipse 平台执行测试执行模块,测试执行模块中以接口为单位对测试用例作分类设计与实现,测试执行时以一个接口为一个测试集分
收稿日期:2020-11-20
作者简介:孙立哲(1984—),女,河北邢台市宁晋县人,硕士,主要研究方向为计算机应用技术。
212
计算机工程应用技术
本栏目责任编辑:梁书Computer Knowledge and Technology 电脑知识与技术
第17卷第8期(2021年3月)
类执行各测试用例,并将测试用例及结果等数据按测试集分类写入本地XML 文件。测试执行结束后,在本地浏览器中打开HTML 文件,加载本地的CSS 文件,通过本地JS 文件脚本读取XML 文件做统计分析并动态更新HTML 文件内容实现个性化展示。
优化后整套框架分前端客户端程序、后端MySQL 数据库服务和后端Web 动态JSP 页面服务[5]。与优化前一致,前端客户端执行测试执行模块,区别是将测试用例及结果等数据写入后端MySQL 服务器数据库表,测试执行结束后,在前端浏览器中访问部署在远程Web 服务器上的动态JSP 页面来浏览测试结果及数据,JSP 页面访问MySQL 数据库,对表中数据做统计分析,并与CSS 结合实现样式个性化展示。CSS 文件与优化前一致。优化后接口自动化测试框架部署如图1
前端测试和后端测试的区别
所示。
图1优化后接口自动化测试框架部署
2优化前后具体设计实现对比
2.1数据库表结构设计
优化前,以XML 文件存储测试用例及结果数据。XML 文件根元素包含各测试集元素,一个测试集元素对应一个接口,以接口名作为测试集元素的唯一性标识属性,测试集元素下包含与该接口对应的所有测试用例元素,以测试用例名作为测试用例元素的唯一性属性标识,测试用例元素下包含该测试用例所对应的接口请求数据元素、接口响应数据元素、接口测试结果元素。
优化后,数据库表及字段设计与优化前的XML 文件数据结构相对应,包括测试集表和测试用例表。测试集表包含主键唯一自增id 字段和testSuiteId 字段。其中testSuiteId 字段用于存储测试集名,对应优化前XML 文件中测试集元素的唯一性标识属性。测试用例表用于存储各测试集下的测试用例及其与测试集表中某测试集的关联关系,包含主键唯一自增id 字段、testCaseId 字段、testSuite_id 字段、reqStr 字段、resStr 字段、re⁃sult 字段。testCaseId 字段表示测试用例名,对应优化前测试用例元素的唯一性属性标识。testSuite_id 字段表示该测试用例所属测试集,与测试集表中id 字段关联。reqStr 字段、resStr
字段、result 字段表示某测试用例对应的接口请求数据、接口响应数据、接口测试结果。result 字段值为Pass 表示该测试用例接口功能测试成功,Fail 表示该测试用例接口功能测试失败。MySQL 索引的合理创建可提高数据库表数据的查询检索速度,创建索引时,需确保该索引是应用在SQL 查询语句的条件[6]。对测试用例集表数据做统计分析时,需要汇总统计每个测试集
下所有测试用例并统计其中成功的用例数和失败的用例数,统计查询条件是testSuite_id 字段和result 字段,因此,对test⁃Suite_id 字段和result 字段创建复合索引,从而提高统计查询执行速率。复合索引只有在字段顺序与查询条件顺序一致时才有效果,因此,两个字段在复合索引中的次序与统计分析模块中对数据库表的查询条件次序一致。2.2测试执行模块设计优化与实现
优化前,测试执行模块在执行前新建XML 文件并获取文档根元素,在每个测试集执行前以接口名为测试集元素唯一性属性,将测试集元素作为文档根元素的子元素写入文件,在测试集下每个测试用例执行前以测试用例名为测试用例元素唯一性属性,以该测试用例对应的接口请求数据、响应数据、测试结果分别作为该测试用例元素的三个子元素,将该测试用例元素作为其所属测试集元素的子元素写入文件。
优化后,在.properties 属性文件中配置MySQL 数据库访问配置信息。测试执行模块在执行前,读取配置文件中数据库访问配置并建立MySQL 数据库静态连接[8]。在每个测试集执行前以接口名为testSuiteId 字段值,用数据库静态连接向测试集表插入一行数据。在每个测试用例执行前以测试用例名作为testCas
eId 字段值、以该测试用例所属测试集在测试集表中的id 字段值作为testSuite_id 字段值、以对应接口请求数据、响应数据、测试结果分别作为reqStr 字段值、resStr 字段值、result 字段值,向测试用例表插入一行数据。测试执行过程中,测试集表中将收集并存储所有接口的接口名,测试用例表中将收集并存储每个测试集下的所有测试用例。所有测试执行结束后,关闭数据库连接。
2.3结果统计分析与展示模块设计优化与实现
优化前,结果统计分析与展示模块由HTML 文件、CSS 文
件、JS 文件和XML 文件构成,全部在前端客户端部署并执行。XML 文件是数据源。HTML 文件定义结果展示主界面整体布局,主要由概要区、结果汇总区、结果细节区构成,概要区以表格形式展示测试用例总数、用例成功总数和用例失败总数。结果汇总区以表格形式展示各测试集名及其下所含测试用例总数、用例成功总数和用例失败总数,其中测试集名为超链接。结果细节区默认隐藏,点击某个测试集名超链接后,结果细节区显现且以表格形式显示该测试集下所有测试用例及结果详情。主界面整体层叠样式通过引入CSS 文件定义,部分样式及子区域通过引入的JS 文件根据统计结果作个性化动态更新,各区内的数据通过JS 脚本根据对XML 文件数据做统计分析后的结果作动态更新。前端客户端浏览器访问HTML 文件,以个性化Web 页面的形式查看所有测试集下的汇总结果以及每个测试集下所有测试用例及结果详情。
优化后,统计分析与展示模块由后端MySQL 数据库表和后端基于JSP 文件与CSS 文件的动态Web 服务构成。前端浏览器中访问后端Web 服务主界面JSP 文件查看测试结果。统计分析与展示模块与测试执行模块共用测试框架数据库表,测试执行模块将测试集和测试用例及结果等数据写入数据库表,统计分析与展示模块读取数据库表数据做统计分析。JSP 文件分主界面JSP 文件和结果细节JSP 文件。主界面JSP 文件中定义的整体布局与优化前HTML 文件中定义的基本一致,唯一区别是结果细节区不再在主界面下方显示,而是以弹出新页面的方式
213
本栏目责任编辑:梁书
计算机工程应用技术Computer Knowledge and Technology 电脑知识与技术第17卷第8期(2021年3月)
跳转到结果细节JSP 文件。主界面整体层叠样式的处理机制与优化前一致。主界面概要区、结果汇总区各表格数据通过JSP 脚本访问数据库表经统计查询后作动态更新。查询测试用例表中用例总数、用例成功数、用例失败数,并更新概要区表格数据。查询测试集表中所有测试集,以一个测试集为一行,在结果汇总区表格中增加各测试集行,在测试用例表中根据测试用例表与测试集表的关联字段testSuite_id 以及result 字段查询各测试集下的用例总数、用例成功数、用例失败数,并更新结果汇总区表格数据。
结果细节JSP 文件主要包括结果细节区,在结果细节区以表格形式显示某测试集下的所有测试用例细节信息。在主界面结果汇总区点击某个测试集名超链接跳转到结果细节JSP 文件时,将测试集名在测试框架数据库测试集表中对应的id 字段值作参数传入。结果细节JSP 文件根据传入的测试集id 字段值查询属于该测试集的所有测试用例,以一条用例为一行,在结果细节区表格中增加各测试用例行,并将测试用例名、请求串数据、响应串数据、用例执行结果更新到结果细节区表格。
3优化前后结果统计分析与展示模块页面效果对比
优化前,测试框架中结果展示主界面在Firefox 67.0b9版浏览器中正常加载后概要区和结果汇总区显示效果如图2
所示。
图2旧版浏览器中页面正常显示效果
优化前,测试框架中结果展示主界面在Firefox 78.0b6版浏览器中无法正常加载时概要区和结果汇总区显示异常效果如图3
所示。
图3旧版浏览器中页面加载异常显示效果优化后,在浏览器中访问测试框架中部署在远程Web 服务上的主界面JSP 文件,主界面JSP 概要区和结果汇总区在新版Firefox 78.0b6浏览器中可正常显示,显示效果与图2一致。点
击某个测试集名后弹出的新页面中结果细节区显示效果如图4
所示。
图4某测试集对应的结果细节区示例
4结语
随着浏览器技术的迭代更新,文档对象技术不再受支持,前期设计的接口自动化测试框架中部分功能使用受到影响。为了解决该问题,本文对该自动化测试框架做了设计优化,将用于数据存储的XML 文件以MySQL 数据库表代替,将测试执行模块写XML 文件改为写数据库表,将结果统计分析与展示模块由前
端JS 读取XML 文件数据改为后端JSP 读取数据库表数据。优化后的测试框架能在Microsoft Edge 84.0.522.52、Google Chrome 84.0.4147.105和Firefox 78.0b6等中正常使用,有更好的实用性和浏览器版本兼容性。
参考文献:
[1]孙立哲.轻量级接口自动化测试框架设计与实践[J].计算机应用与软件,2020,37(1):27-30,36.
[2]Oracle.MySQL Reference Manual[EB/OL].sql/doc/refman/5.6/en/column-indexes.html.
[3]唐汉明.深入浅出MySQL[M].北京:人民邮电出版社,2014.[4]Oracle.JavaServer Pages Technology [EB/OL].a⁃cle/java/technologies/jspt.html.
[5]陈丹丹.JSP 项目开发全程实录[M].北京:清华大学出版社,2013.
[6]Baron S ,Peter Z ,Vadim T.高性能MySQL[M].宁海元,周振兴,彭立勋,等译.北京:电子工业出版社,2013:141-193.[7]黄威,聂藩,丁建完.关键字驱动的测试自动化框架模型与系统实现[J].计算机技术与发展,2012,22(4):57-60,64.
[8]Cay S Horstmann.Java 核心技术[M].11版.林琪,苏珏涵,等,译.北京:机械工业出版社,2019.
【通联编辑:梁书】
214

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。