CN103885873A - 一种自动化集成测试的方法 - Google Patents
一种自动化集成测试的方法 Download PDFInfo
- Publication number
- CN103885873A CN103885873A CN201210558326.7A CN201210558326A CN103885873A CN 103885873 A CN103885873 A CN 103885873A CN 201210558326 A CN201210558326 A CN 201210558326A CN 103885873 A CN103885873 A CN 103885873A
- Authority
- CN
- China
- Prior art keywords
- testing
- integration testing
- test
- class
- robotization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种自动化集成测试的方法包括:步骤一:收集工程jar包依赖情况,包括scope为test的;步骤二:收集属于集成测试的java类;步骤三:增加一个可运行的java类,在该类运行的时候,获取步骤一中收集到的jar包信息,在classloader里面增加收集到的jar包,然后启动web容器;步骤四:在应用启动过程中新起一个线程,待应用启动完成之后,执行步骤二收集到的测试类,测试报告统一输出到指定的目录,以便查看执行测试的结果;步骤五:待所有所述测试类都运行完毕之后,关闭容器,程序退出。本发明将单元测试的技术方案移入集成测试中,让集成测试跟单元测试一样,可以自动执行并且发送测试报告。
Description
技术领域
本发明涉及一种集成测试方法,尤其是一种自动化集成测试的方法。
背景技术
现在在java领域单元测试的应用中比较广泛的框架有testng和junit,都比较流行。相关的类mock工具有jmockit、mockito、easymock等。数据库的mock工具有dbunit等。这些工具灵活使用之后,就可以有效的对我们的代码进行单元测试。
但在集成测试阶段,我们目前只能做到对http接口进行返回结果进行构造,然后将接口地址设置为mock地址。相对来说,这个mock数据是大家共享的,为了达到各自使用一份,需要做很多处理。在单元测试中基本上没有这个问题,一个测试类里面mock的数据就专属于这个类,不会影响别的测试类。
如图1所示,就是传统的集成测试阶段所需要完成的工作,http地址修改为mock地址,从mock地址拿返回数据。数据库同样如此。如果按照单元测试来说,只需要把调用http或者其他接口的api进行mock,返回我们想要的数据即可。如图2所示,我们在单元测试相关代码中定义了mock代码,影响service1调用service2的方法,让它去执行我们定义的mock代码,这块代码只在这个测试类中起作用。不会影响其他测试类。
在集成测试阶段,web容器启动之后,一般我们只能通过外部mock工具对接口返回数据进行mock。单元测试mock工具的便利性,在集成测试阶段就无法利用了。需要做2套mock,这样才方便测试。
发明内容
本发明的目的就是在集成测试阶段,可以直接使用单元测试的测试方法进行集成测试。统一集成测试代码和单元测试代码,用作mock的数据既可以用来做单元测试,也可以用来做集成测试。
本发明为实现上述目的,所采用的技术方案是提供一种自动化集成测试的方法,包括:
步骤一:收集工程的jar包依赖情况,包括scope为test的;
步骤二:收集测试类,收集属于集成测试的java类;
步骤三:增加一个可运行的java类(有main方法),在所述java类运行的时候,获取步骤一中收集到的所述jar包信息,在classloader里面增加收集到的jar包,然后启动web容器;
步骤四:在应用启动过程中新起一个线程,待应用启动完成之后,执行步骤二收集到的所述测试类,测试报告统一输出到指定的目录,以便于使用人员查看执行测试的结果;
步骤五:待所有所述测试类都运行完毕之后,关闭容器,程序退出。
进一步的,所述步骤三中所述的web容器为jetty。
进一步的,所述自动化集成测试的方法应用于j2ee的web工程。
进一步的,所述自动化集成测试的方法是在一个maven工程下实现的。
本发明由于采用了上述技术方案,使之与现有技术相比,可以在集成测试中直接使用单元测试的Mock技术,不需要依赖外部的http进行mock。可以将单元测试的技术方案移入集成测试中,让集成测试跟单元测试一样,可以自动执行并且发送测试报告,提高测试效率。
附图说明
图1是传统的集成测试阶段Mock示意图
图2是单元测试阶段Mock示意图
图3是本发明中自动化集成测试方法的流程图
图4是本发明中集成测试阶段Mock示意图
具体实施方式
以下结合附图和具体实施例对本发明提出的一种自动化集成测试的方法作进一步详细的说明。
请参考图3,图3是本发明中自动化集成测试方法的流程图。本实施例是在maven定义的集成测试(integration-test)阶段进行的,本实施例中的测试代码放在这个阶段执行。
在本实施例中,我们进行了如下几步,如图3所示:
(1) 收集工程的jar包依赖情况,包括scope为test的,这个主要目的是为了让最终的单元测试代码也可以在web容器里面运行;
(2) 按照一定的规则收集属于集成测试的java类,以便于容器启动之后立即运行这些测试类;
(3) 增加一个可运行的java类(有main方法)。在该类运行的时候,获取第一步收集到的jar包信息,然后启动jetty或者其他web容器,在classloader里面增加收集到的jar包,然后启动容器;
(4) 在应用启动过程中新起一个线程,待应用启动完成之后,执行第二步收集到的这些测试类,测试报告统一输出到指定的目录,以便于使用人员查看执行测试的结果(主要是失败原因);
(5) 待所有测试类都运行完毕之后,关闭容器,程序退出。
在我们获知自动化运行结果后,如果测试类运行失败,就可以修正测试代码,成功则执行下一个流程。
在本实施例中我们开发了一个maven插件来完成上述图1的这些逻辑,测试类中的代码可以按照普通的单元测试代码书写,例如:可以访问某一个url,获取这个url返回的html代码,然后验证是否是我们想要的结果。
这里我们写了如下一个maven插件maven-inte-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-inte-plugin</artifactId>
<configuration>
<subfix>*Inte.java</subfix>
</configuration>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
通过在java工程的pom文件做如上配置,在执行mvn integration-test的时候,就会自动执行这个插件,运行我们设置的后缀为Inte的测试代码。
上述的实施例,是在一个maven工程下实现的,当然在其他j2ee中也可以实现上图1的逻辑。所应用的范围限于j2ee的web工程。其他语言、其他性质的工程不涉及。
在这里的测试类中如果对某一个类的行为进行了mock,势必就会影响到执行的url的返回结果了,这样如果某一个service类需要访问http服务,我们就可以直接mock返回结果,而不必再去另外搭建一个mock http服务了。
如图4所示,在集成测试类中,可以直接访问一个url,这个url会执行我们设定好的流程,然后通过mock代码可以影响每一步执行过程,达到我们集成测试的目的。
将集成测试跟普通的单元测试代码看起来类似,这样有利于开发人员直接维护这些代码。一旦修改了系统中的相关代码,那么开发人员可以及时的发现并修正集成测试代码。做到集成测试与业务同步,避免集成测试不及时的问题。
上文对本发明优选实施例的描述是为了说明和描述,并非想要把本发明穷尽或局限于所公开的具体形式,显然,可能作出许多修改和变化,这些修改和变化可能对于本领域技术人员来说是显然的,应当包括在由所附权利要求书定义的本发明的范围之内。
Claims (4)
1.一种自动化集成测试的方法,包括:
步骤一:收集工程的jar包依赖情况,包括scope为test的;
步骤二:收集测试类,收集属于集成测试的java类;
步骤三:增加一个可运行的java类(有main方法),在所述java类运行的时候,获取步骤一中收集到的所述jar包信息,在classloader里面增加收集到的jar包,然后启动web容器;
步骤四:在应用启动过程中新起一个线程,待应用启动完成之后,执行步骤二收集到的所述测试类,测试报告统一输出到指定的目录,以便于使用人员查看执行测试的结果;
步骤五:待所有所述测试类都运行完毕之后,关闭容器,程序退出。
2.根据权利要求1所述的一种自动化集成测试的方法,其特征在于所述步骤三中所述的web容器为jetty。
3.根据权利要求1所述的一种自动化集成测试的方法,其特征在于所述自动化集成测试的方法应用于j2ee的web工程。
4.根据权利要求3所述的一种自动化集成测试的方法,其特征在于所述自动化集成测试的方法是在一个maven工程下实现的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210558326.7A CN103885873A (zh) | 2012-12-20 | 2012-12-20 | 一种自动化集成测试的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210558326.7A CN103885873A (zh) | 2012-12-20 | 2012-12-20 | 一种自动化集成测试的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103885873A true CN103885873A (zh) | 2014-06-25 |
Family
ID=50954781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210558326.7A Pending CN103885873A (zh) | 2012-12-20 | 2012-12-20 | 一种自动化集成测试的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885873A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809071A (zh) * | 2015-05-14 | 2015-07-29 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
CN104899142A (zh) * | 2015-06-10 | 2015-09-09 | 北京嘀嘀无限科技发展有限公司 | 一种远程mock测试方法及装置 |
CN105224466A (zh) * | 2015-11-17 | 2016-01-06 | 广州亦云信息技术有限公司 | 一种基于Docker的集成测试方法及系统 |
CN105224449A (zh) * | 2014-06-26 | 2016-01-06 | 富士通株式会社 | 移动终端上的应用程序的测试方法和装置 |
WO2017012218A1 (zh) * | 2015-07-17 | 2017-01-26 | 中兴通讯股份有限公司 | 利用tck测试安卓系统j2me标准接口实现的方法 |
CN109284222A (zh) * | 2017-07-20 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 软件单元、数据处理系统中的项目测试方法、装置及设备 |
CN109976994A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | Java项目的白盒测试方法、装置、计算机设备 |
CN111382084A (zh) * | 2020-05-08 | 2020-07-07 | 北京金山云网络技术有限公司 | 测试方法、装置和电子设备 |
CN112328501A (zh) * | 2020-11-30 | 2021-02-05 | 浙江诺诺网络科技有限公司 | 一种测试方法、装置及电子设备和存储介质 |
CN114757156A (zh) * | 2022-06-14 | 2022-07-15 | 成都飞机工业(集团)有限责任公司 | 一种飞机系统试验指导书的编制方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1791037A (zh) * | 2005-12-26 | 2006-06-21 | 北京航空航天大学 | 一种实现Web服务自动化测试的方法 |
US20070277158A1 (en) * | 2006-02-24 | 2007-11-29 | International Business Machines Corporation | Method and apparatus for testing of business processes for Web services |
CN102043709A (zh) * | 2009-10-22 | 2011-05-04 | 上海杉达学院 | 软件测试系统 |
-
2012
- 2012-12-20 CN CN201210558326.7A patent/CN103885873A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1791037A (zh) * | 2005-12-26 | 2006-06-21 | 北京航空航天大学 | 一种实现Web服务自动化测试的方法 |
US20070277158A1 (en) * | 2006-02-24 | 2007-11-29 | International Business Machines Corporation | Method and apparatus for testing of business processes for Web services |
CN102043709A (zh) * | 2009-10-22 | 2011-05-04 | 上海杉达学院 | 软件测试系统 |
Non-Patent Citations (1)
Title |
---|
TAKE(滚一边去): "Maven实战(五)-自动化web应用集成测试", 《HTTP://WWW.DOUBAN.COM/GROUP/TOPIC/18250362/》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224449B (zh) * | 2014-06-26 | 2017-12-12 | 富士通株式会社 | 移动终端上的应用程序的测试方法和装置 |
CN105224449A (zh) * | 2014-06-26 | 2016-01-06 | 富士通株式会社 | 移动终端上的应用程序的测试方法和装置 |
CN104809071A (zh) * | 2015-05-14 | 2015-07-29 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
CN104809071B (zh) * | 2015-05-14 | 2017-08-11 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
CN104899142A (zh) * | 2015-06-10 | 2015-09-09 | 北京嘀嘀无限科技发展有限公司 | 一种远程mock测试方法及装置 |
WO2017012218A1 (zh) * | 2015-07-17 | 2017-01-26 | 中兴通讯股份有限公司 | 利用tck测试安卓系统j2me标准接口实现的方法 |
CN105224466A (zh) * | 2015-11-17 | 2016-01-06 | 广州亦云信息技术有限公司 | 一种基于Docker的集成测试方法及系统 |
CN105224466B (zh) * | 2015-11-17 | 2018-08-28 | 广州亦云信息技术有限公司 | 一种基于Docker的集成测试方法及系统 |
CN109284222A (zh) * | 2017-07-20 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 软件单元、数据处理系统中的项目测试方法、装置及设备 |
CN109284222B (zh) * | 2017-07-20 | 2022-03-08 | 阿里巴巴集团控股有限公司 | 软件单元、数据处理系统中的项目测试方法、装置及设备 |
CN109976994A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | Java项目的白盒测试方法、装置、计算机设备 |
CN111382084A (zh) * | 2020-05-08 | 2020-07-07 | 北京金山云网络技术有限公司 | 测试方法、装置和电子设备 |
CN112328501A (zh) * | 2020-11-30 | 2021-02-05 | 浙江诺诺网络科技有限公司 | 一种测试方法、装置及电子设备和存储介质 |
CN114757156A (zh) * | 2022-06-14 | 2022-07-15 | 成都飞机工业(集团)有限责任公司 | 一种飞机系统试验指导书的编制方法、装置、设备及介质 |
CN114757156B (zh) * | 2022-06-14 | 2022-10-25 | 成都飞机工业(集团)有限责任公司 | 一种飞机系统试验指导书的编制方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103885873A (zh) | 一种自动化集成测试的方法 | |
US11151018B2 (en) | Method and apparatus for testing a code file | |
US8370816B2 (en) | Device, method and computer program product for evaluating a debugger script | |
US8806437B2 (en) | Automated testing process | |
CN101930400A (zh) | Sdk自动化测试系统及方法 | |
CN101924656A (zh) | 一种基于动态配置的网络设备cli实现方法和装置 | |
RU2011144144A (ru) | Способ и устройство для проверки исполняемой программы с использованием модели | |
CN109471768B (zh) | 业务问题的监控方法、装置以及电子设备 | |
CN105335287A (zh) | 一种自动化测试方法及装置 | |
CN105094910A (zh) | 一种驱动函数用户态调试系统和方法 | |
CN105094921A (zh) | 一种跨浏览器调用外设的方法及装置 | |
CN114116509A (zh) | 程序分析方法、装置、电子设备和存储介质 | |
US10606569B2 (en) | Declarative configuration elements | |
US20130067058A1 (en) | Providing external access to service versions via a bundle framework | |
US9069897B2 (en) | Capturing telemetry data by dynamic language engine | |
CN112861138A (zh) | 软件安全性分析方法及分析装置、电子设备及存储介质 | |
EP2721494B1 (en) | System and method to in-line script dependencies | |
CN101582050A (zh) | 一种软件测试中的Bug提示方法和装置 | |
US20150026523A1 (en) | Debugging method and computer program product | |
CN115022312A (zh) | 多智能合约引擎的实现方法、装置、电子设备及存储介质 | |
AU2013206622B2 (en) | Download management method and device based on Android browser | |
CN113778451A (zh) | 文件加载方法、装置、计算机系统和计算机可读存储介质 | |
US8739187B2 (en) | Legacy application integration within a bundle framework | |
CN108459940B (zh) | 应用性能管理系统的配置信息修改方法、装置及电子设备 | |
CN105760288A (zh) | 测试改写后的应用程序的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140625 |