一、项目介绍
本项目是一款针对分布式服务,微服务API做功能和性能一体化的自动化测试平台,一站式提供项目管理,微服务,API接口,用例,环境管理,测试管理,前置条件,测试集合,变量管理,测试计划,Mock,测试报告等。
在项目开发,迭代交付过程中开发人员,测试人员需要针对系统微服务API做调试,回归测试,性能测试。自动化测试,一个好的平台本质上需要解决API测试的5大基本问题:
1.支持不同的项目,角色,技术人员多人协作
2.支持定义多个不同的测试环境
3.支持定义各种被测系统,API,功能,性能用例
4.支持功能,性能,回归,自动化测试,对比
5.功能/性能明细报告,统计报告,通知
二、技术架构
2.1 技术架构
首先系统的架构设计是基于业务的需求出发,脱离需求谈架构都是耍流氓,那针对API的测试业务需求是什么呢?
看下现有的API,服务的测试现状:
1.使用测试工具Postman,Jmeter,完成API的功能接口测试,或者使用Testng,Junit,等其他类库,再配合读取数据,展示结果等组件搭建框架
2.针对API,服务的性能测试,使用Jmeter,Loadrunner等工具完成多次性能测试验证
上述这些传统的方式都可以完成各自的需要,但是问题是API,用例数据分散管理,功能和性能的执行使用不同的工具,站在全局的角度我们可以统一到一个平台上来完成这些工作
1.技术人员可以有统一的地方管理测试服务器,环境,API
2.然后针对API设计测试用例以及对用例数据统一维护管理
3.不同的人员可以选择不同的用例集合在不同的环境执行
4.API的测试用例在同一平台既支持功能,又支持性能的测试需求
5.用例的执行效率可以通过机器资源并行执行提升和横向扩展
6.计划,用例的执行前后支持接口,数据库,脚本等条件的运行
7.API的性能测试我们需要看到历史多次优化后的数据结果对比
基于以上这些需求,架构设计如下:
1.后台App,管理系统前端页面的展示--Vue,打包后部署在nginx中提供访问
2.测试中心服务-TestCenterService,管理后台页面数据的接口支持,也支持从CI(Jenkins完成打包部署后)触发测试计划的执行
3.调度服务-DispathService,测试中心服务提交测试计划,调度服务将测试计划中的用例,根据规则分配给多个不同的Slaver,比如平均分配到多个测试执行机,或者指定测试执行机分配,然后定时将分配好的用例推送给不同的slaver测试执行机执行,在推送前会调用ConditionService检查是否有条件需要执行
4.条件服务-ConditionService,专门用来处理计划或者用例执行测试前后各种不同类型的条件处理,例如执行测试前需要做数据库准备,调用某些接口获取中间变量,缓存处理,返回某些数据,执行测试后处理某些操作也是同理
5.测试执行机--SlaverService,作为运行用例的实体,支持自定义功能,性能类型,支持横向扩展,启动后会注册到系统中,SlaverService会根据获取的用例去调用Jmeter执行功能或者性能测试,在Jmeter内部会调用api-jmeter-autotest的java工程,处理功能和性能的执行,以及结果的收集
2.2 开发语言与组件
前端开发: Vue+ElementUI
后端开发: SpringBoot,Redis,Mysql
测试引擎 :JMeter
三、 运行测试的环境如何定义?
一般个人,公司在使用分布式,微服务架构,从开发到发布上线可能会经过多套环境测试验证,比如开发环境,测试环境,准生产环境,生产环境,其中测试环境又可能分为多套功能测试环境和性能测试环境,多套环境分开管理,可以有序而不相互干扰进行测试工作 每套环境由开发的分布式服务,微服务,即提供api服务能力的实体,中间件(数据库,nosql,web服务器等等)这些元素组成 对于测试来说以上的元素我们需要部署到指定的服务器或者容器中整体来作为一套环境做测试工作。
四、 针对什么来做测试?
针对采用分布式服务,微服务架构开发的服务实体,我们可以定义此服务的访问协议,端口。这些服务包含了若干个API接口,对外提供了不同的功能,每个API会有对应的参数,我们可以定义这些API接口,参数来进行自动化测试。
五、 设计测试用例
设计API接口用例基础要素:用例数据,用例的断言,快捷调试等基础,支持复制,批量复制,后续支持自动生成基础用例 从个人或者公司的角度看,用例的数量和类型来决定需要做怎么样的执行,如果用例数量庞大,并且需要快速得到结果,本质上我们需要拆分用例由多机并行执行满足需求,也就是多点执行,如果需要性能的测试,执行性能的机器我们可以是低性能的多台机器发起或者是高性能的少量机器发起,所以说怎么运行是根据需要来定制执行用例的类型和机器数量。
六、 运行用例
根据测试业务需要,定义成多个测试集合来满足不同的测试需要,功能测试,性能测试,回归测试,CI对接自动化测试 支持立即执行,定时执行,某天执行等多种方式
七、 获得什么样的反馈报告?
对于用例执行完,我们希望看到什么反馈,对于开发,测试,或者其他技术人员,我们希望看到运行的统计信息 以及用例详细信息:结果状态,运行时间,请求数据,API的具体响应,我的期望,断言的详细信息,以及用例运行时的信息 对应性能来说,我们还希望能得到统计的信息,比如整体性能的时间,tps,响应时间,99%pct等,以及被测系统优化前后性能结果的多次对比
七、 产品页面
八、 演示地址
在线体验 http://101.43.118.152/
账号密码: test test123
源代码下载地址:
https://gitee.com/season-fan/autometer-api.git
看到最后,如果这个方法对你有用,一定要给我点个「 在看和赞 」。