百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

分布式服务一体化自动化测试平台附源码

off999 2025-01-07 14:56 17 浏览 0 评论

AutoMeter是一款针对分布式服务,微服务API做功能和性能一体化的自动化测试平台,一站式提供发布单元,API,环境,用例,前置条件,场景,计划,报告等管理

在项目开发,迭代交付过程中开发人员,测试人员需要针对系统提供的API做调试,回归测试,性能测试。自动化测试,一个好的平台本质上需要解决API测试的5大基本问题:

1.支持不同的角色,技术人员多人协作
2.支持定义多个不同的测试环境
3.支持定义各种被测系统,API
4.支持功能,性能,回归,自动化测试
5.功能/性能明细报告,统计报告

1.运行测试的环境如何定义?

一般个人,公司在使用分布式,微服务架构,从开发到发布上线可能会经过多套环境测试验证,比如开发环境,测试环境,准生产环境,生产环境,其中测试环境又可能分为多套功能测试环境和性能测试环境,多套环境分开管理,可以有序而不相互干扰进行测试工作 每套环境由开发的发布单元(服务,站点,应用各个公司叫法不一样),即提供api服务能力的实体,中间件(数据库,nosql,web服务器等等)这些元素组成 对于测试来说以上的元素我们需要部署到指定的服务器或者容器中整体来作为一套环境做测试工作

2.针对什么来做测试?

针对具体开发的服务(发布单元,应用,站点),既提供API的实体,这边我们命名为发布单元,可以定义访问此服务的协议,端口。 此发布单元包含了若干个API,每个API会有对应的参数需要维护,这其实也是个人或者公司提供对内对外api能力的定义

3.设计测试用例

从个人或者公司的角度看,用例的数量和类型来决定需要做怎么样的执行,如果用例数量庞大,并且需要快速得到结果,本质上我们需要拆分用例由多机并行执行满足需求,也就是多点执行,如果需要性能的测试,执行性能的机器我们可以是低性能的多台机器发起或者是高性能的少量机器发起,所以说怎么运行是根据需要来定制执行用例的类型和机器数量

4.运行用例

根据测试业务需要,定义成多个测试集合来满足不同的测试需要,功能测试,性能测试,回归测试,CI对接自动化测试

5.获得什么样的反馈报告?

对于用例执行完,我们希望看到什么反馈,对于开发,测试,或者其他技术人员,我们希望看到运行的用例详细信息:结果状态,运行时间,请求数据,API的具体响应,我的期望,断言的详细信息,以及用例运行时的信息,对应性能来说,我们还希望能得到统计的信息,比如整体性能的时间,tps,响应时间,99%pct等,以及性能结果的多次对比

架构

服务器部署

1.前端:testcenterapp
2.后端:testcenterService,dispatchservice,conditionservice,slaverservice

整体目录结构在Release/Beta下面,如图

部署所需要的基础环境系统的版本如下:
操作系统:Linux或者Windows
1.jdk 1.8
2.redis 5.0.8
3.mysql 5.7
4.nginx 1.9.9

具体每一项的部署方式如下:

一.数据库初始化
1.Mysql新建数据库testcenter,执行testcenter.sql(Release/Beta/sql/init-sql/testcenter.sql目录下) 创建账号,密码(test,test),并且给账号设置testcenter库的读写权限
后续版本的更新,提供增量的sql文件来执行,在目录Release/Beta/sql/update-sql中,可以按照日期文件依次执行

二.Redis
redis配置文件redis.conf中将protected-mode =no,表示免密码登陆,程序连接redis都没使用密码

三.前端:目录testcenterapp/dist,建议部署在Nginx中

1.配置文件:testcenterapp/dist/static/config.js中配置项SERVER_URL为指向后端TestCenterService的地址,可以根据自己实际的地址修改,如下图


2.配置nginx.conf中的http.server.location.root配置dist的存放服务器目录,例如:/app/AutoMeter/dist/ dist为admin打包出来的静态文件目录
3.nginx重启,nginx -s relaod
4.访问nginx的对外端口,既可以访问到后台页面:

四.后端服务
后端service目录结构,每个xxxxxservice目录下有jar,config目录,startup.sh 为启动文件,启动文件startup.sh需要修改下脚本指定下自己部署的目录

1.TestCenterService 测试中心服务
配置文件:config/application.yml中的配置项(6项配置):

  1. spring.dispatchserver.serverurl 指向调度服务DispatchService的地址和端口
  2. spring.conditionserver.serverurl 指向条件服务ConditionService的地址和端口
  3. spring.datasource.url/username/password 配置Myslq数据库的连接字,账号,密码(账号和密码配置项是加密后的字符串),默认是test/test, 需要修改的话可以运行test目录下的JasyptStringEncryptor 如下图 配置你需要的明文账号和密码,运行结果中加密串就是配置文件中的账号和密码,当然新账号密码在mysql中也要建好对应的账号和密码,以及赋此账号对于testcenter库的读写访问权限
  4. spring.redis.host/port 配置redis的ip和端口
  5. spring.logging.file/path 配置日志文件名以及日志文件目录
  6. 启动:执行startup.sh

2.DispatchService 调度服务
配置文件:config/application.yml中的配置项(4项配置)

  1. spring.conditionserver.serverurl 配置指向条件服务ConditionService的地址和端口
  2. mysql,redis,logging三项配置和TestCenterService相同
  3. 启动:执行startup.sh

3.ConditionService 条件服务
配置文件:config/application.yml中的配置项(4项配置)

  1. mysql,redis,logging三项配置和TestCenterService一致
  2. 启动:执行startup.sh

4.SlaverService 条件服务
配置文件:application.yml中的配置项(3项配置)

  1. mysql,redis,日志三项配置和TestCenterService一致
  2. 启动:执行startup.sh

五:启动顺序

1.数据库,redis
2.SlaverService
3.ConditionService
4.DispatchService
5.TestCenterService
6.启动nginx,nginx -s reload
访问nginx的地址,默认管理员账号密码为,admin admin123 登陆


想要源码部署,请记得关注+转发+私信

私信回复【自动化测试】

相关推荐

全网第一个讲清楚CPK如何计算的Step by stepExcel和Python同时实现

在网上搜索CPK的计算方法,几乎全是照搬教材的公式,在实际工作做作用不大,甚至误导人。比如这个又比如这个:CPK=min((X-LSL/3s),(USL-X/3s))还有这个,很规范的公式,也很清晰很...

[R语言] R语言快速入门教程(r语言基础操作)

本文主要是为了从零开始学习和理解R语言,简要介绍了该语言的最重要部分,以快速入门。主要参考文章:R-TutorialR语言程序的编写需要安装R或RStudio,通常是在RStudio中键入代码。但是R...

Python第123题:计算直角三角形底边斜边【PythonTip题库300题】

1、编程试题:编写一个程序,找出已知面积和高的直角三角形的另外两边(底边及斜边)。定义函数find_missing_sides(),有两个参数:area(面积)和height(高)。在函数内,计算另外...

Tensor:Pytorch神经网络界的Numpy

TensorTensor,它可以是0维、一维以及多维的数组,你可以将它看作为神经网络界的Numpy,它与Numpy相似,二者可以共享内存,且之间的转换非常方便。但它们也不相同,最大的区别就是Numpy...

python多进程编程(python多进程进程池)

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

原来Python的协程有2种实现方式(python协程模型)

什么是协程在Python中,协程(Coroutine)是一种轻量级的并发编程方式,可以通过协作式多任务来实现高效的并发执行。协程是一种特殊的生成器函数,通过使用yield关键字来挂起函数的执行...

ob混淆加密解密,新版大众点评加密解密

1目标:新版大众点评接口参数_token加密解密数据获取:所有教育培训机构联系方式获取难点:objs混淆2打开大众点评网站,点击教育全部,打开页面,切换到mobile模式,才能找到接口。打开开发者工具...

python并发编程-同步锁(python并发和并行)

需要注意的点:1.线程抢的是GIL锁,GIL锁相当于执行权限,拿到执行权限后才能拿到互斥锁Lock,其他线程也可以抢到GIL,但如果发现Lock仍然没有被释放则阻塞,即便是拿到执行权限GIL也要立刻...

10分钟学会Python基础知识(python基础讲解)

看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了。最好还是把代码敲一下。一、函数基础简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。...

Python最常见的170道面试题全解析答案(二)

60.请写一个Python逻辑,计算一个文件中的大写字母数量答:withopen(‘A.txt’)asfs:count=0foriinfs.read():ifi.isupper...

Python 如何通过 threading 模块实现多线程。

先熟悉下相关概念多线程是并发编程的一种方式,多线程在CPU密集型任务中无法充分利用多核性能,但在I/O操作(如文件读写、网络请求)等待期间,线程会释放GIL,此时其他线程可以运行。GIL是P...

Python的设计模式单例模式(python 单例)

单例模式,简单的说就是确保只有一个实例,我们知道,通常情况下类其实可以有很多实例,我们这么来保证唯一呢,全局访问。如配置管理、数据库连接池、日志处理器等。classSingleton: ...

更安全的加密工具:bcrypt(bcrypt加密在线)

作为程序员在开发工作中经常会使用加密算法,比如,密码、敏感数据等。初学者经常使用md5等方式对数据进行加密,但是作为严谨开发的程序员,需要掌握一些相对安全的加密方式,今天给大家介绍下我我在工作中使用到...

一篇文章搞懂Python协程(python协程用法)

前引之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线...

Python开发必会的5个线程安全技巧

点赞、收藏、加关注,下次找我不迷路一、啥是线程安全?假设你开了一家包子铺,店里有个公共的蒸笼,里面放着刚蒸好的包子。现在有三个顾客同时来拿包子,要是每个人都随便伸手去拿,会不会出现混乱?比如第一个顾...

取消回复欢迎 发表评论: