jmeter接口测试、RF接口测试、pytest接口测试的区别

我最近换了工作,之前单位是学了咋咱们的课程我用requests+pytest做自动化。现在单位是用jmeter,和我同期入职的同事推荐用rf,我想问下这几种各自的优劣势,希望各位大神可以帮忙解惑

在第一轮battle中,我给出的支撑理由如下:
1、用pytest+request的话,可以减少接口的重复封装,所有接口只要封装一次就好了。
2、对于一些全局变量(跨py文件的变量,也很容易实现调用。我理解的jmeter跨线程组的接口的返回值是没法重复调用的,可能使用命令执行能调用,但是我没有试过,我对jmeter理解的还是比较浅的)
3、pytest+request的话,可以自定义一些公共方法,比如说用公共方法去处理某一类的接口返回值,只要调用即可
4、pytest+request可以自由义我们接口自动化的搭建架构,我们可以多封装一层把接口和页面的动作对应起来,之后在用例中直接调用对应的页面动作,类似与po的设计思想(这个我之前没有实际实践过,只是讨论过,因为当时做的项目接口封装的体量已经很大了)
5、用例中我们有一些前置条件,我们可以用装饰器来实现,比如说有几十条用例有类似的前置条件,我们只要写一个到conftest文件中,后续用例直接调用
6、参数话比较简单,可以直接用yaml文件,可以整理成类似于json这种结构化的形式去调用
这是发给领导的支撑理由,我很是害怕上边写的有错误的地方啊,瑟瑟发抖中

jmeter是个压测框架,他的整个体系是为压测设计的,对接口测试的支持只是最基础的,没有更多的灵活性支持。而且结合junit testng的测试用例比较吃力,也无法使用allure2这样的报告框架,无法拥有完整的测试管理能力。他可以用它做接口测试,但它不是一个完整的测试框架,在设计用例体系和流程的时候,会受限于他的执行模型,无法方便的编写用例。比如接口封装复用、灵活的断言支持、用例的套件编排等。因为你们已经在用了,团队里估计会有一些吐槽,你总结下即可。

rf是一个完整的测试框架,测试管理是优点,生态也比较齐全,但是他的生态自成一体,会导致使用体验问题。比如他有自己的IDE,使用体验不好但是又无法离开,不如使用原生的IDE强大灵活。他的那些库多数都是从其他库里二次封装再引入的,维护和质量都不会太好。使用它也会导致测试工程师的定制和二次封装出现困难,很多成熟的框架比如allure2就比较难以引入使用。他的关键字驱动方式维护用例也是非常体验不好的,所以BAT互联网巨头基本都没采用。

直接使用pytest的好处是简单,开放,可以复用已有的各种生态,比如各种强大的智能IDE,各种框架和扩展,用的是python语言所以招人维护也比较容易。二次封装也都比较简单。使用原生框架与原生语言可以获得最大的灵活性,方便未来的定制。

1 个赞

get到了,非常感谢思寒老师这么晚回复我 :hibiscus:

jmeter还是主要侧重点在于性能
pytest+request主要在于接口测试

还有一点,测试工程师需要做app、web、接口或者端到端的自动化测试。这些测试用例如果用同一套测试框架管理是最好的。目前jmeter这种模式肯定是做不了除了接口之外的其他的测试的。