自动化接口设计平台(接口自动化设计模式)

网友投稿 317 2023-04-19


本篇文章给大家谈谈自动化接口设计平台,以及接口自动化设计模式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享自动化接口设计平台的知识,其中也会对接口自动化设计模式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

(三)接口自动化测试平台之——测试集合接口测试交互页面设计

用例集合列表

我们在当前页面创建了用例集合之后,可以在创建接口的时候,选择归属集合,方便管理,查看以及测试

页面功能:

执行:执行当前服务结合下所有接口的用例

修改:编辑服务集合

新增:新增服务集合

删除:删除该服务集合(必须是当该集合下没有接口没有用例的前提下才能删除)

执行记录:查看该服务集合的历史执行记录
用例来自哪里呢?答案如下(在创建用例的时候就选择了测试集合)
新增|编辑服务
执行服务集合

点击执行服务集合测试用例(异步执行),前端页面会跳转到另一个页面,同时后台进入测试,页面会实时刷出测试结果。

查看历史执行记录

点击执行记录的事件,跳转至测试详细页面

接口自动化测试平台开发那些事2(架构)

Spring ioc容器作为管理bean的工具,springMVC框架处理前端发来的请求;

MySQL保存项目、接口、测试用例、定时任务、测试报告等数据;MongoDB用来存储一些测试文档,例如接口文档、测试报告等。

Docker 技术的引入主要是为了构建测试运行环境,和做测试数据隔离。
定时任务调度使用目前广泛使用的Quartz库,可以灵活的定义各种定时规则。

持久层选用Mybatis主要是熟悉这个框架,可以灵活的写SQL,并且有强大的SQL生成工具。(其实Hibernate也不错,不过对Mybatis更熟悉一点)

测试运行器这里之前有考虑过自己实现一套基于http协议的测试工具,后来发现业内有很多优秀的轮子,自己实现浪费精力而且不一定有别人的好,于是就采用了一套第三方的测试框架( HttpRunner ),感兴趣的可以去了解一下这个接口测试框架。

前端使用 JQuery+Bootstrap 的经典组合,优点就是用户多第三方资源多,网上大把的模板可以套用。

上面的项目结构图看起来是不是一目了然。

一个简单的接口自动化框架

Test_api.py:

1,MakeExcel:

2,OpJson.py:

3,ReadConf.py:

4,SendRequest.py

(6)conftest.py

(7)pytest.ini:

1,main.py:

2,执行结果:

3,产生自动化接口设计平台的日志:

已实现接口自动化,某些地方可能还需优化;

怎么做接口自动化的?

Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。

对于公司层面:现在市面上很多都要求app、web自动化,但是浅层面的都是基于UI自动化,对很多产品来说基于UI的自动化脚本运行过程中容易出现出现找不到定位元素而错误,且版本更新迭代快,脚本维护成本高,此时可以进行接口自动化测试,通过保证接口逻辑,数据传输正确,提高产品的质量。

从0到1,用Jmeter搭建HTTP接口自动化引擎 1.0 版本

如图自动化接口设计平台

附件内容包括

(1)测试用例执行摘要:

(2)测试用例详细信息:

如果http请求是post

获取post请求数据

断言内容解析:

int errcount = Integer.parseInt(vars.get("errcount").trim());

int allcount = Integer.parseInt(vars.get("respcount").trim());

int equalscount=0;

int equalsokcount=0;

if("${HttpStatus}"!=""){

// log.info("==========================${HttpStatus}");

if(SampleResult.getResponseCode().equals("${HttpStatus}".trim())) {

equalscount++;

equalsokcount++;

//  log.info("================equalscount: " + equalscount);

//  log.info("================equalsokcount: " + equalsokcount);

}else {

String code = SampleResult.getResponseCode();

vars.put("respcode",code);

vars.put("AssertionNoOk","断言失败内容为:HttpStatus自动化接口设计平台,实际请求返回的HttpStatus为: "+code+",断言内容的HttpStatus为: "+"${HttpStatus}");

equalscount++;

//  log.info("================ERRORequalscount: " + equalscount);

//  log.info("================ERRORequalsokcount: " + equalsokcount);

//  log.info("====================ErrorHttpStatus is: " + code);

}

}

if("${ResponseMessage}"!=""){

if(SampleResult.getResponseMessage().equalsIgnoreCase("${ResponseMessage}".trim())) {

equalscount++;

equalsokcount++;

}else {

equalscount++;

String msg = SampleResult.getResponseMessage();

vars.put("respmsg",msg);

vars.put("AssertionNoOk","断言失败内容为:ResponseMessage自动化接口设计平台,实际请求返回的ResponseMessage为: "+msg+",断言内容的ResponseMessage为: "+"${ResponseMessage}");

}

}

if("${ResponseData1}"!=""){

if(SampleResult.getResponseDataAsString().contains("${ResponseData1}".trim())) {

equalscount++;

equalsokcount++;

}else {

equalscount++;

String data = SampleResult.getResponseDataAsString();

vars.put("respdata",data);

vars.put("AssertionNoOk","断言失败内容为:ResponseData1自动化接口设计平台,实际请求返回的ResponseData1为: "+data+",断言内容的ResponseData1为: "+"${ResponseData1}");

}

}

//log.info("===================================ResponseData2=" + "${ResponseData2}".trim());

if("${ResponseData2}"!=""){

if(SampleResult.getResponseDataAsString().contains("${ResponseData2}".trim())) {

equalscount++;

equalsokcount++;

}else {

equalscount++;

String data = SampleResult.getResponseDataAsString();

vars.put("respdata",data);

vars.put("AssertionNoOk","断言失败内容为:ResponseData2,实际请求返回的ResponseData2为: "+data+",断言内容的ResponseData2为: "+"${ResponseData2}");

}

}

if("${ResponseData3}"!=""){

if(SampleResult.getResponseDataAsString().contains("${ResponseData3}".trim())) {

equalscount++;

equalsokcount++;

}else {

equalscount++;

String data = SampleResult.getResponseDataAsString();

vars.put("respdata",data);

vars.put("AssertionNoOk","断言失败内容为:ResponseData3,实际请求返回的ResponseData3为: "+data+",\n断言内容的ResponseData3为: "+"${ResponseData3}");

}

}

if(equalscount==equalsokcount) {

SampleResult.setSuccessful(true);

vars.put("sendemail","no");

allcount++;

vars.put("respcount",allcount.toString());

}else {

errcount++;

allcount++;

SampleResult.setSuccessful(false);

vars.put("errcount",errcount.toString());

vars.put("respcount",allcount.toString());

vars.put("sendemail","yes");

}

利用SMTP Sampler发送邮件

邮件内容如下:

至此,Jmeter HTTP接口自动化引擎搭建完毕

还可以利用jenkins定时执行Jmeter引擎,从而实现对线上接口的监控

资料参考:

(1)Jmeter build.xml文件: http://pan.baidu.com/s/1i46tMlR

(2)Jmeter生成报告格式(参考heman贺满博客 http://www.cnblogs.com/puresoul/http://pan.baidu.com/s/1kVssMzl ):

(3)jmeter.properties(修改jmeter生成.jtl文件内容配置): http://pan.baidu.com/s/1cyaNlc

(4)测试用例模版:http://pan.baidu.com/s/1kVegq6j

(5)Jmeter接口自动化引擎内容:http://pan.baidu.com/s/1kVop9n5

接口自动化测试工具有哪些?

接口自动化工具有以下:

1、QTP。是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。

2、WinRunner。是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。

3、AdventNetQEngine。是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、web性能测试、Java应用功能测试、Java API测试、SOAP测试、回归测试和Java应用性能测试。

自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。

自动化技术广泛用于工业、农业、军事、科学研究、交通运输、商业、医疗、服务和家庭等方面。采用自动化技术不仅可以把人从繁重的体力劳动、部分脑力劳动以及恶劣、危险的工作环境中解放出来,而且能扩展人的器官功能,极大地提高劳动生产率,增强人类认识世界和改造世界的能力。

关于自动化接口设计平台和接口自动化设计模式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 自动化接口设计平台的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口自动化设计模式、自动化接口设计平台的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:值得收藏的2017年Java开发岗位面试题
下一篇:实现类实现某个接口(在类中实现接口)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~