自动化API测试工具与方案
在微服务架构系统中,REST API是服务之间调用的标准方法。
因此对API进行测试对开发测试微服务非常重要。
本文介绍了几种常见的API测试工具以及它们的使用场景。
curl
Linux的curl
命令行工具可以用来发起HTTP请求来测试API。
在Server端调试时,curl
像一把锋利的匕首,简单实用。
不足:对于比较复杂的API测试,比如复杂的HTTP header和body,curl
显得力不从心。
Swagger
Swagger可以用来对API做手工测试和自动生成API文档。
比如在前后端分离的系统开发中,后端开发完成后,只要给前端Swagger的地址,前端就可以知道怎么来调用后端的API。
在面向API开发时,Swagger 像一把宝剑,刺砍劈挑,非常顺手。
不足:Swagger不能用来做API的自动化测试;另外对于比较复杂的API测试,比如复杂的HTTP header和body,Swagger 还是难以应付。
Postman
Postman可以用来对API做手工测试和自动测试。
无论是多么简单的HTTP请求,还是多么复杂的HTTP请求,无论是单个HTTP请求,还是HTTP请求集合,Postman都能应付自如。
无论是手工测试,还是自动测试(需要Newman支持),Postman都能顺心应手。
在API测试中,Postman就是一把AK47自动突击步枪,你可以单发射击,也可以来一个三连射,也可以调成自动模式扣上扳机把弹夹里所有的子弹全部倾泻一空。
不足:Postman不适合用来做API的文档。
Spring MockMVC
如果你的微服务是用Spring来开发的,你需要用到Spring MockMVC来向Controller层发起HTTP请求。
好处是,你可以在一个测试方法中调用多个API测试到你的业务逻辑,比如在一个方法中先调用增加记录的API增加一条记录,再接着调用查询记录的API查询刚才的记录有没有新增成功。
另外,还可以对Controller层所依赖的Service层进行Mock,这是其他独立的API测试工具不具备的功能。
我喜欢把Spring MockMVC比喻成流星锤一类的奇门武器,使用得当,威力强大,不过使用场合很受限制。
不足:仅限于用Spring开发的程序和小范围测试。
JMeter
前面介绍的API 测试的工具都是针对功能测试,对基于API的性能测试,你需要用到JMeter。
JMeter就像是加特林机枪,可以很容易把狂暴的子弹流倾泻在要测试的API上。如果一把机枪不够,你可以很容易用JMeter变出更多的机枪,直到把要测试的API轰的七八烂。
不足:拜托,不要指望一把机枪的射击精度。
小结
上面介绍了各种API测试工具以及它们的使用场景。
下面再进行小结:
- 在面向API开发的沟通时使用Swagger作为API文档
- 在Spring的单元测试和集成测试中用Spring MockMVC
- 在API手工测试时使用Swagger或Postman
- 在基于API的自动化功能测试时使用Jenkins + Newman + Postman
- 在对API做手工性能测试时用JMeter
- 自动化性能测试用Jenkins + Maven + JMeter