声明: 一切内容都是针对自己,如果发现文中有不对的地方,欢迎留言指教或讨论,勿喷。
写在前面
项目是一个API项目,刚上的时候,发现组里只有契约测试,没有自动化测试来覆盖基本功能测试,怎么做regression呢,又集合项目之前用JMeter做过性能测试,所以就直接使用JMeter来做功能自动化了,使用了一段时间后,痛点慢慢显现。
痛点
- JMeter有GUI,可以用它的客户端来组织自己的用例,保存后,会自动生成.jmx文件以供命令行运行,但.jmx太晦涩,不好修改,在提PR的时候,也不容易看出来哪里有改动,这个时候就会觉得有点笨重。
- 虽然可以使用csv等文件统一组织用例,但需要同时用JMeter打开jmx文件再用个文本编辑器打开csv。
- 使用JSR223在校验Assertion的时候比较局限,debug很不方便,只能打log。
- 生成的report是从性能方面显示结果的,但是支持自定义report格式。
5.怎么筛选一个用例是否可以在某一个环境上运行,比如,在test上或release上的回归用例比较多,而在Staging或PROD上,由于测试数据的局限,用例比较少。
结论:
老老实实用JMeter做性能测试吧
问题:
需要寻找一个合适的API接口功能自动化的工具?
Actions:
尝试以下工具,
-
REST-assured
基于Java的DSL,详细阅读了它的Usage Guid, 看到这张图的时候,已经知道这就是我想要的功能了:
-
karate
开源工具,类似上边的REST-assured,也是基于java的,也支持BDD的方式,Karate vs REST-assured,这里有两者的对比,可以自由比对response的内容。
Report: 基于feature文件的report,看起来很方便
[图片上传失败...(image-f337c5-1569319909953)]
Hook: 可以用tag的annotation来区分case,在不同环境运行测试,如dev,test或者是staging之类。
Pipeline运行:
mvn test -Dtest=SampleTest#testTags
-
Airborne
基于Ruby语言,对于返回的response可以灵活校验。
pipeline运行: rspec spec
可以通过加x来Ignore暂时不需要的case。
pyresttest
基于Python,编辑yaml文件,不习惯。apiscience
高级的API监控工具。unirest
是一个轻量的小工具,很开心找到了一个支持.NET的,github查了下比较尴尬,放弃。
总结
对比了几个工具,不想继续找下去了,综合看来#2目前最棒,决定试用,稍后有试用贴给大家分享。