APP下载

基于Spring的API自动化测试系统的设计与实现

2015-07-25陈茉莉张会林张洋洋

通信电源技术 2015年5期
关键词:测试人员测试用例软件测试

陈茉莉,张会林,刘 波,张洋洋

(1.上海理工大学 光电信息与计算机工程学院,上海 200093;2.上海市现代光学系统重点实验室,上海 200093;3.邵阳学院电气系,湖南 邵阳 422002)

0 引 言

在早期的软件测试活动中,人们普遍采用手工测试法,从编写测试用例开始到执行测试,直到比较测试结果得出测试结论,都是由测试人员手动来完成。但是随着软件业的发展,测试的需求越来越大,测试所遇到的场景也越来越复杂,加之软件测试过程越来越智能化、高效化,软件测试开始由原来的人工测试向自动化测试方向发展。在开发一款软件时,不可能针对每一个操作系统都开发一个相应的后台,为了能够只用一种语言就开发出各种平台都适用的后台程序,API就产生了。前端和后台的开发人员可以通过API来进行交互操作,而并不需要了解对方是如何具体去实现这个功能的,API相当于一个连接前后端的桥梁。既然API占据着一个特殊的地位,那么它的质量也是软件质量的基础。API的测试既保证了后台的质量,也为前端开发人员减轻了负担。因此,如果提高API测试的自动化程度,就可以辅助测试人员高效完成工作。针对以上的情况,API自动化测试系统的开发刻不容缓。本系统主要针对Android、IOS操作系统,对App的API进行单元测试,保证软件在编码阶段的质量,为之后的集成测试、系统测试打下坚实的基础。另一方面,基于API的自动化测试系统可以代替手工进行API的回归测试,这样在系统版本升级的时候就不必再浪费人力在回归测试上,既保证了产品的质量又提高了测试的效率。

1 系统的分析与设计

本系统由业务处理、测试用例、数据层和Yimin工具四个部分组成。其中,业务处理是系统的核心部分,由它来完成访问持久性数据库的操作、根据测试用例执行测试、比较测试结果等一系列业务动作;测试用例是业务处理的基础部分,也是整个测试的基础,系统根据测试用例来执行并比较结果得出最终测试结果;数据层主要是数据源提供数据信息,Yimin工具主要是用来和后台交互,返回响应的API信息。

1.1 系统的需求分析

本系统的主要目的是对API进行自动化测试,最终能够保证软件产品的质量。首先来介绍一下API在整个软件项目中的重要地位。

该项目是针对手机而开发的客户端应用软件,主要适用于Android和IOS两大手机操作系统。为了使得软件产品具有高质量、高稳定性、高健壮性的特点,开发团队的前后端分工十分明确。API为客户端和后台的交互起到了桥梁的作用。API在项目中的位置如图1所示。

图1 API在项目中的位置

API在整个项目中所处的特殊地位,要求它的质量必须够高,也正因为如此,对API的测试也是整个测试环节中必不可少的。因为Yimin这个工具的局限性,本文提出了针对API测试的自动化测试系统,这个系统的主要作用是省去测试人员对测试结果一一比对的过程,由系统自动去完成获取接口返回信息和结果比较的工作,也减少了对API进行回归测试的成本。

1.2 系统的总体设计

本系统主要分为大四个模块:业务逻辑、数据层、Yimin和测试用例,各个模块之间相互协作完成测试工作,同时四个模块又是相互独立的模块,每一个模块内部发生变化,都不会对其他模块产生影响。模块之间的关系如图2所示。

图2 系统的总体设计

如图2所示,业务逻辑层是整个系统的核心部分,由它来完成访问数据层和测试用例的工作,在业务逻辑层中,还会对结果进行处理,它会访问Yimin工具。数据层主要是为测试提供数据支持,它会提供测试过程中需要用到的存储在数据库中的数据。测试用例主要是提供一些访问Yimin所需要的信息和进行测试的期望结果。Yimin是该系统专门用于API测试的一个工具,当通过拼接接口名加参数连接上Yimin之后,Yimin这个工具会返回相应的接口信息。四个模块各有所长,它们只要完成各自负责的功能,不需要干预其他的模块功能的实现,而且其中一个模块的变化对于其它两个模块来说是透明的。

业务逻辑层作为系统的核心模块,需要和数据层、测试用例进行交互。业务逻辑层在与数据层交互时主要采用了Spring的DAO模式;访问测试用例时主要是通过测试用例的路径来获得,接着解析测试用例获得名称、期望结果等信息;最后通过测试用例中解析出来的信息,生成一个URL来访问Yimin工具。

2 系统的实现

本项目中使用了一些Spring的注解,使得项目的开发变得简单高效。Spring利用了DAO模式,将业务逻辑和数据层分离。该系统采用Spring的DAO模式来对数据库进行访问,使用MySQL的数据库。Spring可以通过配置文件实现与数据库的连接,访问数据源,本系统采用DAO模式,并用JDBC的方式来实现DAO。为了更好地模块化JDBC操作,简化传统的JDBC操作的复杂和繁琐过程,使用模板方式封装JDBC数据库操作,即JdbcTemplate。用模板封装数据库操作的优点在于可以简化JDBC的操作,开发者只需要提供SQL、设置SQL中的变量,最后提取ResultSet,而JDBC对象的获取释放、异常类型转化的操作都由模板负责。最后通过TestNG的配置文件来达到将测试用例和代码相分离的目的。只需要将要执行的case放入配置文件中,在执行测试时,选择Run as TestNG Suite,测试就能按照测试用例一条一条执行下去。该方法使得自动化测试具有了更高的灵活性,不再受到测试用例的约束。在测试执行得到一个结果后,需要对测试结果和期望结果进行比较,其中一种就是得到的测试结果完全等价于期望的结果,这里使用equals()方法来进行两个结果之间的比较。另一种可能的结果就是测试结果中包含了期望结果的内容,在这种情况下,只要测试所得出的结果集中包含了期望结果中的所有的信息,那么测试也能通过。这种情况可以使用contains()方法来实现。还有一种测试结果就是对数字的比较,有些情况下,系统的逻辑要求是如果某个参数的值不大于某个指定值,就可以认为测试是通过的。

3 结束语

本文介绍了软件测试在软件发展过程中所占据的不可替代的位置,并且随着软件复杂度的增加,软件测试的重要性也越发突出。随着功能的不断增加,手工测试不再是高效的测试方法。自动化测试的效率很高,减少测试人员的测试时间,能让测试人员更加专注于测试用例的设计,使得系统的逻辑更加细致和完善。本文介绍了基于Spring的API自动化测试系统中所用到的技术,主要包括Spring框架、DAO模式和TestNG框架。介绍了基于Spring的API自动化测试系统的设计;采用了分层的设计思想,将业务逻辑层和数据层分离;运用Spring的IOC容器实现依赖注入,让IOC容器来管理对象之间的依赖关系,降低耦合度;采用TestNG测试框架将测试用例和测试代码分离,由系统自己去读取测试用例,将执行的结果和测试用例中的期望结果进行比较来得到最终的测试结果。本系统目前的主要作用是用于对API的自动化测试,只要对该系统稍加改进,就能扩展到对UI的自动化测试,具有广阔的应用前景。

[1] 戴莉萍,杜 琼.一种软件测试V模型的改进及其应用[J].计算机与现代化,2004,13(7):29-33.

[2] 柯 玲,徐 京,李 颖.IOC模式及其在设备监控软件中的应用[J].航天器工程,2009,(18):117-122.

[3] 林 宁,孟庆余.软件测试实用指南[M].北京:清华大学出版社,2004.

[4] 刘晓丹,武君胜.基于数据驱动的自动化测试平台设计[J].科学技术与工程,2008,8(3):779-782.

[5] 王 萍.软件测试的重要性[J].软件导刊,2009,4(8):20-21.

[6] 王艳秋,燕孝飞.软件自动化测试初探[J].计算机与网络,2007,2(5):168-171.

[7] Randell B.System structure for software fault tolerance[J].IEEE Trans.Software Eng,1975,14(6):220-231.

[8] Bill Councill.Third-Party Testing and Stirrings of The New Software Engineering[J].IEEE Software,1999,16(6):76-79.

[9] Edward Kit.软件测试过程改进[M].北京:机械工业出版社,2003.

[10]GUO PJ,ERNST MD,PERKINGS JH,et al.The Daikon System for dynamic detection of likcly invariants[Z].2006.

猜你喜欢

测试人员测试用例软件测试
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
EXCEL和VBA实现软件测试记录管理
软件测试误区分析
浅析软件测试中的心理学应用
软件测试工程化模型及应用研究
绿植防辐射只是个传说,是真的吗?
基于依赖结构的测试用例优先级技术