最近我在一个论坛上看到了一个关于性能测试和接口测试的经典问题,问题以下:后端
问题:后端性能测试,一个功能其实都是由后台多个接口组成的。服务器
例如一个单据的保存,可能后台须要调用几个接口。用LR录制这个功能作性能测试。和把它这个功能调用的几个接口链接起来一块儿作接口性能测试有什么区别呢?多线程
相信不少开始测试自动化的测试同窗的入门都是从一些培训班或者网上课程开始的。不少培训在讲授接口测试或者性能测试的时候每每是拿LoadRunner或者jmeter去演示测试过程的。一般的课程安排通常先拿LoadRunner(或者jmeter)讲接口测试,而后继续使用LoadRunner(或者jmeter)去讲性能测试。架构
不管是接口测试仍是性能测试,貌似老湿们讲的步骤好像都差很少,先录制接口,而后配置场景,而后执行测试场景,给人感受好像没啥差异。感受好晕。。那到底二者差异在哪里呢?咱们从入门者的角度来谈谈差异吧!并发
这里我准备从三个部分去阐述二者的关联和区别:app
1. 相当重要的观念:测试与工具的关系。tcp
2. 接口测试和性能测试的侧重点。分布式
3. 在实际场景中两者的配置区别。工具
首先咱们要正试一个理念,LoadRunner和Jmeter只是一个工具,而培训班大力推崇的都是工具培训,容易让咱们落入一种XXX就是性能测试的赶脚,其实否则(差异蛮多,后面会单独去写文章分享),性能测试包含了工具(LoadRunner和Jmeter),工具仅仅是扮演了性能测试中的一个执行环节而已。性能
咱们能够拿LoadRunner(Jmeter)作接口测试,固然也能够拿到作性能测试。因此工具是什么不重要,关键在于咱们怎么去使用它,例以下面一个生活中的例子:铁锹。咱们能够拿铁锹来铲土,也能够用铁锹来炒大锅饭,是否是就像LoadRunner既能作接口测试,又能作性能测试同样?
挖土的铁锹
炒饭的铁锹
梳理清楚了第一个概念:工具和测试没有彻底对等的关系后,咱们来讲第二个,性能测试和接口测试的区别。
测试分不少种,若是细细罗列,从单测,接口,功能,性能,UI,至少有五层,那其实区分这些测试类型的关键点就在于测试的侧重点不同,接口测试是针对后端开发的接口(不必定是http的,也有多是tcp的),而性能测试是偏重于产品的各方面各阶段性能(接口的性能,页面的性能,app的性能),能够说性能测试的覆盖度比接口更大一些。那咱们就拿http类型的接口测试和性能测试举例,有啥侧重点区别呢?
简单来讲,它俩区别就在于性能测试有多用户(并发)的概念,而接口测试只是单用户场景。咱们作接口测试是是用于验证接口的请求和返回是否匹配(其实能够理解成接口测试也是一种功能测试);而性能测试则是不少人同时在作这种接口测试,更侧重于真实的用户场景。由于咱们研发完的产品投入市场后,不会就专门给某一我的使用功能,确定是会有不少人同时在用咱们的产品功能。那在这里,不少人同时在用其实就是性能的一个关键点。
因此总结第二点:性能测试近乎等同于不少用户同时在作接口测试。
第三部分,也是回答本文最初抛出的问题,在实际的应用过程当中,两者是否存在什么联系与区别?
咱们就简单地拿LR作接口测试和性能测试的过程为例吧,拿LR执行测试对于大多数人来讲就三步:录制接口(或者接口抓包),配置场景,执行测试场景。
录制接口这一步是没有区别的,由于咱们刚才讲到过,性能测试其实也是一种特殊的接口测试。那配置场景这一步有区别吗?可能不少人也说没有区别,但实际上是有的,咱们举例几个区别。若是是性能测试,首先要配置多用户(或者说多线程),而接口测试不用;其次若是是性能测试,建议关掉断言(不然可能压不上去,由于断言会耗费LR或者Jmeter自身的性能);最后若是是性能测试,若是压测不上去,还可能须要作分布式(简单来讲,就是多台机器同时执行性能测试)。
那第三步:执行测试场景的时候有什么区别吗?刚才说到,接口测试通常是用断言来验证接口的正确性,那性能测试怎么去验证呢?在执行性能测试场景的时候,咱们抛弃断言,要加入另外的校验方式:
1. 最基本的三个:多用户下接口的响应时间,qps/tps(每秒请求量),出错率。
2.服务器上的资源监控(cpu,内存,io)。
3.被测服务的资源监控(多个服务的cpu,内存,io)以及错误日志。
以上三点都是衡量性能测试的标准,也是当执行性能测试场景出问题时候,用于定位问题的重要证据,因此咱们能够知道,当接口测试出了问题,咱们能够经过断言迅速知道出了问题;而性能测试出了问题,须要从多个方面多个维度去调试定位,性能测试对于系统架构的理解能力要求更高!
以上就是我从入门角度,对接口测试和性能测试的区别的一些知识分享,但愿对一些即将入门或者刚入门的你有帮助!有任何疑问请直接在文末留言,你的留言是对我原创最大的鼓励,谢谢!
博主:测试生财
座右铭:用测试完成原始积累,用投资奔向财务自由
csdn:https://blog.csdn.net/ccgshigao