自动化测试平台技术方案

技术架构图

自动化测试平台技术方案调研_自动化测试

 

本测试平台是一套集成覆盖对接口、webUI/性能、app自动化及真机兼容性,并且支持分布式执行,采取测试关键字驱动的自动化测试和监控的平台。提供项目质量数据收集、分析统计等管理功能,进一步提高测试团队效率与测试服务化转型,节省公司人力以保障产品质量。针对整体业务逻辑梳理、技术框架选项等前期调研讨论,现拟定一期测试开发工作大纲。

一、技术选型 1 整体服务端框架参考:luckyframe、phoenixframe

2 客户执行端集成:

java方向:testng+httpclient+jmeter+Jenkins集成web化

python方向:httprunner+locust、HttprunnerManager

二、业务系统模块

1 系统管理:用户管理、部门管理

2 项目管理: 1 项目新增、删、改、查

3 环境管理

4 用例管理

1 快速测试:支持接口全链路权重配置进行串联压测 2 测试计划创建,删除,修改 3 测试用例分组展示 4 接口用例列表 5 批量导入API文档、下载接口文档doc 6 批量修改接口分组 7 启动,关闭mock8 生成测试报告

5测试报告 "1 测试报告输出 "2 邮件发送管理“

6 服务监控:InfluxDB+Grafana监控

 

自动化测试平台技术方案调研_自动化测试_02

纵观整个测试发展的长河,至今已不再像早些年一样,只要会点点点你就能胜任一份测试工作,而今CICD大肆盛行,敏捷DevOps逐步被人所重视,任何一个层面都要求测试人员必须具备基础开发和设计能力

0选择篇

相信大家如果接触过接口自动化,或多或少会用到一些工具以及框架,像基于TestNG的APIAutoTest、基于postman+jenkins+newman形式的接口自动化框架等。 

话不多说,我们以APIAutoTest为例,来看一下这个框架的设计,如图:

自动化测试平台技术方案调研_自动化测试_03

从图中我们可以看到,选择采用这套框架的一个优点是比较轻量级的

1. 采用了TestNG作为了基础测试框架

2. 用Excel作为测试用例数据载体,通过Apache的POI解析,驱动用例执行

3. 请求采用通用的HTTPClient

4. 解析数据层面用了阿里的fastjson和Jsoup

5. 断言部分做的还不错,采用封装jsonpath进行检查

6. 与Jenkins集成,方便自动构建、自动交付与测试

7. 报告采用了ExtentReports支持Email

 

非常轻量级的一套配置,确实能满足小型项目的常规接口测试需求了,没毛病

 

这个框架会遇到哪些困难

但是我们一起来看一下实际如果遇到一些复杂的项目,这套框架会遇到哪些困难。

1、没有平台化:首先既然是采用了框架集成的方式进行接口自动化,在维护上对人员的要求就相对高一点,如果能平台化进行维护,那自然更亲民一点也容易让不同层次的测试人员上手(当然这点会有所取舍,毕竟框架应对变化频繁的需求还是会更加灵活一点)。

2、请求方式比较单一:采用HTTP类型的请求方式虽然是常规请求手段,但是如果面对复杂项目请求的类型不一定就只有HTTP一种,如:分布式微服务中大量采用了RPC接口调用(如dubbo接口调用,以下均用dubbo接口为例)

3、数据管理存在维护和执行的瓶颈:

(1) excel形式在多人协作模式下很难做到信息实时统一,也无法做一定的校验,写错了某些东西只能在执行层面发现用例数据写错了,太滞后。

(2) 测试数据量大的一些场景,POI读写方面还需要进行独立优化,否则性能上会带来内存大量开销甚至内存溢出发生。

(3) 面对需要构造大批量测试用例时,人工构造成本太大。

 

 

以上三点问题是较为通用性的一些问题,还有一些涉及到复杂业务场景的,小k老师会在后续的一些文章当中会给大家深入提供分析和解决方案参考。

那么对于这类问题有没有好的解决方案呢?答案是必须的!

 

 

03

解决方案

 

前两个问题其实都不算太大的问题,可以在已选框架层面套个前端框架,比如Vue,然后对后端做一些改造补充,使其支持RPC调用方式就行了,那么问题又来了。

 

Dubbo接口调用的用例数据怎么维护?Excel去维护明显不现实,这时候你只能还是老老实实在后端框架中加用例层,并用前端去管理维护它。那么既然都不采用Excel的方式,那么就索性新老用例统一用数据库的方式存储测试用例就行。

如下图:

自动化测试平台技术方案调研_自动化测试_04

0大批数据如何构造

然后就剩下最后一个问题了,如果遇到大批量数据需要构造如何进行快速构造的问题

对于这部分,我相信特别是处于大数据行业的朋友就深有体会。那么小k老师今天介绍的一个方案是基于数据工厂来帮助提升造数效率。

数据工厂基本功能:

1、采用抽象工厂模式进行不同类型数据的生产模型创建

2、按照不同数据类型的原始模板动态生成所需数据

3、批量生成测试环节中所需的各种数据

4、补全Mock导致的业务数据不全问题

如图所支持的场景:

自动化测试平台技术方案调研_自动化测试_05

其实数据工厂用途还可以再细化扩充使其在测试平台搭建的过程中解决更多实际的数据问题,这里小k老师的一套自动化管理平台,目前上述所提到的点都已经在平台上实现了。详细可以咨询学习。

智能自动化测试平台横空出世 


GitHub地址: https://github.com/amazingTest

整个测试平台技术架构为: Python-Flask + Vue + MongoDB, 其中整个后端代码由笔者独立完成,前端则借鉴了某开源项目,在此感谢该开源项目提供的灵感