打造测试框架
api object yaml格式的数据是可以通过自动化方式自动生成的。
测试用例设计到一些复杂的断言,以及业务流程模型是需要规范化管理,建议是走代码方式。
第一阶段:api object code+ testcase code 适合维护严谨的业务测试流程,是测试的核心。
第二阶段:api object yaml + testcase code 适合研发使用了标准的api管理体系,比如swagger
第三阶段:api object yaml + testcase yaml 适合日志重新生成用例,快速回归测试
#ApiObjectModel
name: wework
methods:
#ApiObjectMethodModel
get_token:
method: get
url: https://qyapi.weixin.qq.com/cgi-bin/gettoken
query:
corpid: ID
corpsecret: SECRET
save: access_token
#ApiTestCaseModel
name: add
description: ddd
steps:
- api: wework
action: get_token
- api: wework
action: get_token
params:
tagid: [1,2,3]
打包
mvn clean package -Dmaven.test.skip=true
java -Dapi=src/main/resources/test_framework_service/api -Dtest=src/main/resources/test_framework_service/testcase -jar target/Java3-1.0-SNAPSHOT-jar-with-dependencies.jar
#提供一个打包脚本
./apirun.sh src/main/resources/test_framework_service/api src/main/resources/test_framework_service/testcase
多环境支持
自动生成测试用例
来源
生成数据驱动的测试用例
扩展
演练代码
https://github.com/ceshiren/JavaSDET3
课后反馈
yaml里面,一个接口写一个吗,那我几百个接口,每个都按照method url query save这样的写一条吗?
另外像dubbo,grpc协议的呢,也是按照这种模型写?
可以在一个yaml文件里面写多个接口的数据吗?一个接口请求一个yaml文件,后面不是会越来越多的yaml文件要维护?
yaml文件解析,不同的写法,需要不同的解析方法吗?
不明白为什么使用yaml,这个层级的写法是固定的吗?为什么不在代码里面直接实现,之前在UI框架的时候也是不太明白
如果是管理接口测试,那么推荐使用api object方式。
什么时候用数据驱动:
- 从其他数据源反向生成测试用例:从线上log、从手工测试过程、从代理、从chrome中等地方生成
- 提供通用测试调用,比如从测试平台进行调度。面向产品经理、点点点测试等角色,这个时候测试数据是保存到数据中,需要从数据库中的一条记录变成一条测试用例。
如果是rpc或者thrift接口,可以使用rest-assured框架吗
还有mtop接口,rest-assured框架也能支持吗
为什么不用软断言 assertAll呢,会不会更通用一些?
那以后一个yaml文件需要写一个对应的反序列化的类吗?还是可以统一用一个就可以了
原则上不可以,协议不同,实现上很多不同。rpc需要使用自己的client库去处理。
不过可以自己座一层转换层,把http内容按照之前讲解加解密的思路,转成rpc去发送。这样就可以实现用restassured测试rpc了
daisy
12
请教老师:
1)我练习UI自动化框架代码的时候定位元素特别慢,基本定位一个元素得10S左右,是为什么,直接拉老师的代码,是因为写的等待元素变为可点击的这个方法吗?
2)如果我把UI框架搭建起来,想让别人在前端页面实现写case,而不是在idea J里面写代码实现的话,是不是他们也得写具体的定位元素,我这个框架提供通用的点击、输入文本这些方法就可以了,具体怎么实现呢,没有思路,求指导
老师 pom里配的打包依赖是哪个?之前看你还在其中替换了一个文件路径,太快了,没记住怎么配……
老师,在做的Python接口测试框架也是开源项目吗?
恩,目前在内部开发,很快就会开源并开放给学员去参与。java的还没启动,需要再等等
老师的讲的自动生成用例是根据其他文件转为框架需要的数据,我们写测试用例的时候使用边界值等构建测试用例,这部分用例可以根据文件AI自动生成吗,现在有开源的框架吗?
看下appium的log,里面的带有<–标记的行,是可以显示appium的每个请求的时间的。可以看下时间耗费在什么地方了。
点击什么控件是业务测试人员说了算,所以肯定得他们维护,是点击还是输入也是他们维护。你提供的数据驱动的引擎,而po内和case内的关键数据都是业务测试通过平台去维护的。
更好的办法是你智能去生成app里的每个页面的po定位。然后让他们去改进。从头写费劲点。