接口自动化测试基本流程及测试思路?接口自动化主要测哪些接口?

知梧 268 2022-09-08


本文关于接口自动化测试基本流程及测试思路?接口自动化主要测哪些接口?

接口自动化大致步骤:

1、发送请求

2、解析结果

3、验证结果

定义三个和业务相关的类

1、一个用来封装HTTPclient,用来发送请求

2、解析结果xml的类

3、一个用于比较测试结果和期望值的类,用于验证

4、自动生成报告的类:自动发送报告之类的

(locust的python工具)

服务级:Web server(服务) Database(持久化工具-数据库)、Cache(短时间持久化工具-缓存)

接口测试:

1、构造数据

(1)通过接口构造

比如获取一个blog的文章信息,怎么构造数据呢?(文章哪里来??)—返回blog信息

通过添加文章的接口,临时构造数据(blog文章),然后断言的时候看看是不是自己造的数据——会造成接口耦合(两个程序模块有关联就叫做耦合。)—和造文章的接口耦合(如果创建文章的接口挂了,那返回blog信息的接口也就挂了)

公交卡充值依赖支付宝的支付接口服务,调用支付接口会有代价,所以模拟一个支付接口,所有通过mockserver(测试桩)去模拟支付接口的服务----不管输入是什么,返回一直成功或是固定的

如何进行mock??

mockserver介绍:https://www.cnblogs.com/fnng/p/7511539.html

使用:https://blog.csdn.net/qq_35049819/article/details/77839495 (未验证)

(2)通过持久化层构造(更好)

意思就是在数据库直接插入数据

2、调用接口

postman/jmeter–win

CURL-linux

Paw–mac

3、对接口返回进行断言

通过不同的输入-判断不同的预期----数据驱动(输入数据)

断言参考方法:对比数据库值,code验证

4、接口测试的用例设计

功能测试用例

业务逻辑设计

业务逻辑方面的测试用例主要是针对服务端接口的处理逻辑进行的用例设计,这种用例设计不是针对某个功能点是否实现,而是对接口的处理逻辑以及一些相互依赖的业务进行验证,通常依照接口的逻辑流程图来进行。举一个例子,购物系统中的两个动作:登录和下单操作,这两个业务是相互依赖的,下单操作必须在登录完成后(登录状态下),否则无法完成下单,这个时候我们就可以设计这样一条case:没有登录的状态下进行下单操作,看服务端如何处理。

可以看到这一块有两个判断,我们需要对不同的判断分支都设计用例,以保证流程图中涉及到的分支我们都有测试用例覆盖。图中涉及到的不同的分支有:

1.abdf;

2.acg;

3.abdeg;

相应的,我们的用例就应该是:

1.userInfo != null && value(userGroup) != 0;

2.userInfo == null;

3.userInfo != null && value(userGroup) == 0;

业务逻辑的用例设计主要是以服务端接口内部的逻辑流程图为基础,针对流程图中的判断和分支进行用例设计,保证服务端接口的每一种逻辑下都有测试用例覆盖。

异常处理情况

服务端接口和客户端之间通常是通过HTTP请求来传递数据,在发送请求的时候,客户端会携带各种不同的参数,此时服务端会根据不同的参数进行不同的处理,所以异常处理主要是针对请求中的参数情况:比如参数增加和缺省、参数的数据类型错误,参数携带错误的值、参数为空等等,这需要我们根据接口文档中各种不同的参数去构造不同的参数异常,检查服务端的响应情况。

性能和安全性方面

服务器的性能往往是个非常重要的关注点,在实际的测试中我们主要关注的是接口的QPS数值,以及CPU和内存占用等性能指标,通常借助于其他工具比如LoadRunner进行性能测试。安全性方面,主要考虑一些常见的安全策略比如请求加密、sql注入等等。

二、接口测试实例

1、postman测试

2、python测试

 # coding:utf-8

  import requests,unittest

  class V2ETestCase(unittest.TestCase):

     def test_ger_node_api(self):

          python_node_id = 90

          url = "https://www.v2ex.com/api/nodes/show.json"

          node_name = 'python'

         querystring = {"name":node_name}

         res = requests.request("GET", url, params=querystring).json()

        print res

        self.assertEqual(res['id'],python_node_id)

         self.assertEqual(res['name'], node_name)


if __name__=='__main__':

     unittest.main()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

在命令行运行(以后做自动化测试用):

报告可以生成HTML形式的-加进去

python为例:

unittest库

Requests库

Json

Dict字典

assert断言

用postman做接口测试,选择get还是post,加入数据发送请求,查看返回的结果—然后给接口做断言(点右上角的code,选择js语言,写断言)

当接口返回的数据时动态的,比如一个网站文章的最新评论----还是测试环境问题,搭建一个专属的测试环境,不产生新的数据,一样的可以测试接口—相当于动态数据静态化

“怎么做接口测试”这个问题可以分解为两个问题:

怎么设计接口测试用例?

怎么执行接口测试?

怎么执行接口测试?

Fiddler、SOAPUI、PostMan等可以做半自动的接口自动化测试;

使用Robot Framework做全自动化的接口自动化测试;

自己用代码做全自动的接口自动化测试,如Java+testNG;

自动化接口测试+生成报告思路:

在接口的开始测试阶段,我用POSTMAN来手工测试接口,单一接口测试通过后,把测试用例Copy到Jmeter中,作为后续的定期执行的基础,在接口手工全部测完后,用Jmeter+Ant+Jenkins来定期检查每天的接口,并生成测试报告,再写一个爬虫每天监控测试报告,如果出现了异常,发邮件报警。

1、每天的历史报告肯定也是需要留存的

2、有案例失败时的邮件通知

Jenkins有邮件报警和report展示的插件~ 楼主不用自己写。。。

最后应该就是测试报告了,集成于自动化的接口测试,每天的接口测试报告也是挺重要的,Jmeter的测试报告虽然也很清楚,但是并不是我想要的东西,我理想的测试报告应该有一下那么两点

测试通过率

每条测试的过程展示

测试通过率是方便查看报告的人直观的了解本次测试的结果。

测试过程的展示需要展示如下内容:测试结果、请求地址、输入参数、输出结果、断言结果。并且成功和失败的标识需要非常明显。

常见接口测试点

一、单接口测试:

覆盖独有必选参数

组合可选参数

参数默认值

参数有、无或null

参数顺序

参数值类型、数值大小、数值范围

参数数值包含特殊字符

数据格式错误

二、业务功能:

1、正常场景:

业务功能正常

版本向前兼容

2.异常场景:

幂等操作(post重复提交)

网络超时/服务器超时

事务一致性

三、性能:

并发数

QPS/TPS

平均响应时间/最大响应时间

服务器资源:CPU、内存、磁盘I/O,网络

中间件资源:线程数、数据库链接数

大数据测试:接口大批量测试、DB数据存储量大

四.安全:

请求协议:http/https

请求方法:get/post

业务鉴权:访问权限,数据权限、身份有效性

敏感信息加密:密码、身份证号、手机号;

数据防止篡改:如何阻止修改支付金额、重放冲击等;

上传漏洞:文件格式校验、文件头校验、压缩包校验;

sql注入;

xss攻击;

上述就是小编为大家整理的接口自动化测试基本流程及测试思路?接口自动化主要测哪些接口?

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)eolink软件分析、比较及推荐。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Inno Setup 打包及签名指南(inno9)
下一篇:接口自动化框架有哪些?如何搭建接口自动化测试框架?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~