自动生成测试代码java,自动生成测试代码

http://www.itjxue.com  2023-01-17 02:01  来源:未知  点击次数: 

jmeter用java代码怎样编写接口测试源码

????????我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C?Vuser","Java?Vuser"等协议.同样,Jmeter也支持自定义编写的测试代码,不过与LoadRunner不同的是,Jmeter没有自带编译器,需要借助第三方编译器才能实现.下面举一个简单的Java自定义测试代码例子,使用Java编译器编写测试代码(Java编译器可以用Eclipse,JBulider等),实现功能为:在测试前输入任意一个字符串,然后判断该字符串的长度是否大于5,如果大于则测试结果成功,否则测试结果位失败,然后在放到Jmeter中模拟10个用户测试,同时运行这段代码,具体实现如下:

????????1.打开Java编译器,新建一个项目"TestLength",然后新建一个包"app".

????????2.从Jmeter的安装目录lib/ext中拷贝两个文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的项目中,然后引入这两个JAR文件.(具体的引入方法参考各个Java编译器的使用方法)

????????3.在"app"包中新建一个类,名字叫"TestLength",不过这个类要继承"AbstractJavaSamplerClient"类,如果项目引入步骤二中的两个文件,就可以找到"AbstractJavaSamplerClient"类了.

????4."TestLength"类在继承"AbstractJavaSamplerClient"类的同时也会继承四个方法,分别是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于设置传入的参数;"setupTest"方法为初始化方法,用于初始化性能测试时的每个线程."runTest"方法为性能测试时的线程运行体;"teardownTest"方法为测试结束方法,用于结束性能测试中的每个线程.

????5.具体实现代码如下:

package?app;

import?org.apache.jmeter.config.Arguments;

import?org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

import?org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import?org.apache.jmeter.samplers.SampleResult;

import?com.passpod.core.t8.*;

/**

?*?@author乐以忘忧

?*

?*?TODO?To?change?the?template?for?this?generated?type?comment?go?to

?*?Window?-?Preferences?-?Java?-?Code?Style?-?Code?Templates

?*/

public?class?TestLength?extends?AbstractJavaSamplerClient{

?????private?SampleResult?results;

?????private?String?testStr;

?//初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法

?????public?void?setupTest(JavaSamplerContext?arg0)?{

??????????results?=?new?SampleResult();

??????????testStr?=?arg0.getParameter("testString",?"");

??????????if?(testStr?!=?null??testStr.length()??0)?{

?????????????????results.setSamplerData(testStr);

??}

?}

?//设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中

?????public?Arguments?getDefaultParameters()?{

?????????????Arguments?params?=?new?Arguments();

?????????????params.addArgument("testStr",?"");???//定义一个参数,显示到Jmeter的参数列表中,第一个参数为参数默认的显示名称,第二个参数为默认值

????????????return?params;

?}

?//测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法

?????public?SampleResult?runTest(JavaSamplerContext?arg0)?{

??????????int?len?=?0;

??????????results.sampleStart();?????//定义一个事务,表示这是事务的起始点,类似于LoadRunner的lr.start_transaction

??????????len?=?testStr.length();

??????????results.sampleEnd();?????//定义一个事务,表示这是事务的结束点,类似于LoadRunner的lr.end_transaction

??????????if(len??5){

??????????????????System.out.println(testStr);

??????????????????results.setSuccessful(false);???//用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功

?????????}else???

?????????????????results.setSuccessful(true);

????????return?results;

?}

?//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法

?????public?void?teardownTest(JavaSamplerContext?arg0)?{

?????}

}

????????6.把上面的例子打包,然后把生成的"TestLength.jar"文件拷贝到Jmeter的安装目录lib/ext下.

????????7.运行Jmeter,添加一个线程组,然后在该线程组下面添加一个Java请求(在Sampler中),在Java请求的类名称中选择咱们刚创建的类"app.TestLength",在下面参数列表的"testStr"后面输入要测试的字符串,然后添加一个监听器(聚合报告),设置一下模拟的用户数就可以测试了.如果测试不成功,Jmeter会在它自己个输出框中抛出这个字符串.

????????通过上面的例子我们可以发现,使用Jmeter自定义Java测试代码,配合Jmeter自带的函数,就可以实现出LoadRunner中"Java?Vuser"协议的绝大多数功能,而且是没有用户数限制和完全免费的(嘿嘿).上面的例子非常简单,而且没有任何实际意义,只是一个简单的Jmeter测试代码示例,用于抛砖引玉,希望大家一起交流,共同?进步.

如何使用junit测试javaweb工程

一:创建一个测试类,建议将测试类单独放在一个包中(在 maven 项目里有测试类专门的存放位置),新建一个Junit Test Case类,下一步?

测试类的命名建议是你将要测试的类名+Test,然后点 Browse, 你可以选择要进行测试的类(一般选择 Service, 因为 Service 关心的是业务需求),用这种方式创建可以自动生成要测试类的测试类,你只需要进行测试代码的书写.

@Test

public void testqueryById(){

} ? ?@Test

public void testQueryAll(){

} ? ?@Test

public void testReduceNumber(){

}123456789101112

如果里面有自动生成的代码,删除或注释即可…

二:配置 spring 和 junit 整合, junit 启动时加载 springIOC 容器,这里你需要 Spring-test jar包

@RunWith(SpringJUnit4ClassRunner.class) ? ?//告诉junitspring配置文件

@ContextConfiguration(locations = {"classpath:spring/spring-dao.xml"})123

同样的,在测试类中我们会调用 Service 的逻辑,由于我们使用的是 Spring+SpringMVC+ 持久化框架,所以要注入一个 IService 接口(这里我直接对 DAO 进行测试了)

@Autowired

private SeckillDao seckillDao;12

接下来是测试逻辑,在编写测试代码之前建议覆盖实体中的 toString 方法,不然打印会很麻烦.

@Test ? ?public void testqueryById(){ ? ? ? ?long id = 1000;

Seckill seckill = seckillDao.queryById(id);

System.out.println(seckill.getSeckillName());

System.out.println(seckill);

} ? ?//JAVA没有保存形参的记录,如果你在 dao 中传了多个参数,那么需要声明它的形参对应的实参,否则 JVM 会显示找不到参数.声明方式稍后奉上

@Test ? ?public void testQueryAll(){

ListSeckill seckills = seckillDao.queryAll(0, 100); ? ? ? ?for(Seckill seckill:seckills){

System.out.println(seckill);

}

}

@Test ? ?public void testReduceNumber(){

Date killTime = new Date(); ? ? ? ?//对增加进行测试的时候,只要数据库增加了一条数据,我们就默认这个方法执行成功了

int updateCount = seckillDao.reduceNumber(1000L, killTime);

System.out.println("updateCount = "+updateCount);

}123456789101112131415161718192021222324

解决JAVA不保存形参的记录

int reduceNumber(@Param("seckillId")long seckillId,@Param("killTime")Date killTime);

Seckill queryById(long seckillId); ? ?/**

* mysql的分页查询

* @param offset 告诉它实际的形参

* @param limit

* @return

*/

ListSeckill queryAll(@Param("offset")int offset,@Param("limit")int limit);1234567891011

接下来我们根据他返回的结果和我们想要的结果对应就可以了. 测试类不用部署项目, 测试周期非常短, 而且可以进行专项测试. 测试类代码逻辑十分简单, 几乎不会出错. 如果结果不是预期的, 那么根据你的需求修改!?

当然, 它的局限性也很打. 从单元测试不能看出页面传值的错误, 许多项目在服务器中的表现也不能模拟.?

那么我们什么时候用junit呢??

当你的数据库操作非常复杂, 你不确定能输出你想要的值的时候, 相比用 debug 调试, 使用 Junit 是更方便的手段.或者新手出错概率非常大, 也不用在服务器中专门测试项目的表现, Junit 是个必备的工具!而且测试类的测试代码重用性很高.?

如果你的数据和预期相悖, 那么修改业务逻辑; 否则, 查看页面是否有错! Junit在一定程度上减轻了我们业务代码调试的压力, 让我们关注于一点解决错误.

java课程分享JavaScript代码测试必备的12款工具

1、Jasmine

Jasmine是一个行为驱动的测试开发框架,用于对JavaScript代码进行测试。它不依赖其它任何JavaScript框架,也不需要DOM。它的语法简洁、明确,写测试非常容易。

2、Mocha

Mocha是一个功能丰富的JavaScript测试框架,既运行于Node.js环境中,也可以运行于浏览器环境中。Mocha以串行方式运行测试,能做出灵活而准确的报告,也能将测试中未捕捉的异常映射到正确的测试用例。

3、Chai

Chai是个支持BDD/TDD的库,可用于node和浏览器,可配合任何JavaScript测试框架使用。

4、QUnit

QUnit是个功能强大又易于使用的JavaScript单元测试框架。jQuery、jQueryUI和jQueyMobile项目都使用这个框架,它能测试普通的JavaScript代码。

5、Sinon

Sinon.JS为JavaScript提供了独立的spies、stubs和mocks[译者注:Spy、Stub和Mock都是测试专用名词,Stub常被翻译为桩,spies是Spy的复数形式,是一种可以监视方法、调用和参数的技术]。它不依赖任何东西,可以配合任何单元测试框架工作。

6、Karma

Karma是针对连通浏览器的一个框架无关测试运行器。每一个测试结果对应每个浏览器,它的测试和显示都是通过命令行暴露给开发者的,这样他们就可以看到浏览器测试的通过或失败。

7、Selenium

Selenium有一个简单的目标:就是自动化浏览器。它主要用于自动化测试web应用程序,但是只是很简单地考虑到了基于网络的管理任务。

8、WebdriverIO

WebdriverIO允许用户仅添加几行代码就可以控制浏览器或移动应用程序,使测试代码更简单、简洁、易读。集成的TestRunner同样允许你以同步的方式调用异步命令,这样你不需要关心如何处理Promise以避免竞态条件。此外,它取消了所有的繁琐的设置工作,并且会为您管理的Selenium会话。

9、Nightwatch

Nightwatch.js是一个易于使用的Node.js,它是为基于浏览器的app和网站设计的终端到终端(E2E)的测试方法。它使用强大的W3CWebDriverAPI,用于在DOM元素上执行命令和断言。

10、PhantomCSS

PhantomCSS获得CasperJS捕获的屏幕截图,并使用Resemble.js将其与基准图进行对比,以测试RGB像素差异。java课程发现PhantomCSS然后生成图像差异对比,用于帮助您找到原因。

11、PhantomFlow

PhantomFlow使用决策树提供UI测试方案。针对PhantomJS,CasperJS和PhantomCSS的NodeJS包装器——PhantomFlow能够流畅地在代码中描述用户流程,同时生成用于可视化的结构化树数据。

(责任编辑:IT教学网)

更多

推荐网页背景文章