1. 前言

======

现如今接口测试在软件品质行业中的位置,曾经越来越重要,绝对于下层的UI自动化测试和上层的单元测试,接口测试的“低”投入、“高”回报,也成了绝大多数品质保障实际的首选。

在发展接口测试时,往往很多时候都只在关注接口的功能性品质,而对于非功能性的品质保障验证,比方性能、平安,在理论工程利用或者设计用例时关注度显著有余(甚至很多压根没有这方面的测试实际)。

明天就以Python系下requests库(罕用于接口测试)和Robot FrameWork框架为例,和大家聊聊在接口测试过程中,和性能需要等同重要的性能测试查看项。

  1. 接口测试须要思考的性能查看项

==================

在接口测试过程中,除了要思考产品需要的失常、异样、数据正确性等显性功能需要品质外,还有很多隐性需要品质须要关注,以性能测试为例,常见须要关注的查看项包含,但不限于:

  • 1、单用户登录的响应工夫是否小于 3 秒;
  • 2、单用户登录时,后盾申请数量是否过多;
  • 3、高并发场景下用户登录的响应工夫是否小于 5 秒;
  • 4、高并发场景下服务端的监控指标是否合乎预期;
  • 5、高集合点并发场景下,是否存在资源死锁和不合理的资源期待;
  • 6、长时间大量用户间断登录和登出,服务器端是否存在内存透露。

本文重点以接口响应工夫为例,介绍如何在requests库和Robot FrameWork框架纳入性能测试项,其它性能查看项思路根本都是相通的。

  1. requests库接口测试校验响应工夫

=======================

通常在联合requests库发展接口测试时,发送申请后,接口的响应工夫,也是咱们须要关注的一个重点,如果响应工夫太长,从产品业务或者用户角度也是不可承受的。那如何进行申请响应工夫校验,也成为了接口测试人员须要把握的一项小技能。

针对requests库校验申请响应工夫,给大家提供两种实现思路:

一、借助申请响应超时机制

具体实现:

#-*- coding:utf-8 -*-import requestsfrom requests import exceptionstry:    req = requests.post(url=url, data=data, headers=headers, verify=False, timeout=3)          print r.json()except exceptions.Timeout as e:       print("抛出异样") 

在上述实现中,通过减少timeout参数,设置申请响应超时机制,当timeout=3(可自在定义),当申请响应工夫超过3秒,则会抛出超时异样。

其中,额定补充的知识点:超时(默认单位:s),有两种设置超时办法:

  • timeout=5:设置5s的超时工夫
  • timeout=(5,10):设置区间工夫的期待

 当申请呈现超时时,则会抛出此异样:requests.exceptions.ConnectTimeout: HTTPConnectionPool    

2、获取响应工夫办法:req.elapsed.total_seconds()

二、借助requests接口响应返回值elapsed

具体实现:

#-*- coding:utf-8 -*-import requestsr = requests.post(url, data=data, headers=headers)print(r.status_code)print(r.elapsed)print(r.elapsed.total_seconds())print(r.elapsed.microseconds)print(r.elapsed.seconds)elapsed_time = r.elapsed.total_seconds() #获取理论的响应工夫 assert elapsed_time>3 

上述代码实现中,通过获取申请返回的响应值来获取接口响应工夫,常见的几个获取响应工夫参数为:

  • elapsed.total_seconds:获取响应工夫,单位s (举荐)
  • elapsed. microseconds:获取响应工夫,大于1s的时候,只截取了前面的小数局部
  • elapsed.seconds:单位s,响应工夫小于1s时,为0
  1. Robot Framework框架校验响应工夫

===========================

在上述咱们介绍了requests库在发展接口测试过程,校验申请响应工夫的实现思路。而通过Robot Framework框架发展接口测试,次要会依赖RequestsLibray库,而因而实现思路也是一样的。

具体实现,可参考下述示例:

上述校验申请响应工夫,外围就两句代码:

${elapsed_seconds}=    set variable    ${resp.elapsed.total_seconds()}should be true    ${elapsed_seconds}<3 

补充知识点:响应体${resp}是一个类对象,源码可在requests/models/Response查看,能够查看找出该类的所有属性,第6行打印后果:

  1. 小结

======

作为测试工程师,你的指标是要保证系统在各种利用场景下的性能是合乎设计要求的,所以你须要思考的测试用例就须要更多、更全面。本文,通过接口测试如何交融接口性能查看项,给大家提供一点思路,心愿对你有所帮忙或启发。