1、接口自动化怎么测试?
回答:
Python+ requests+pytest版本:
原来我们接口自动化是用 python+ request+ pytest执行接口自动化其实主要就是接口测试的基础上填加了断言,参数化,动态关联。
做接口自动化之前,我们也会划分模块,报告,公共的模块,测试数据,测试报告,主要的目的是为了方便后期的维护
软件测试面试题大全:https://www.bilibili.com/video/BV1Lq4y137aR/
测试数据,一般原来我们就是用的接口测试用例,公共的模块,主要是里面的一些公共的作,比如说用例 excel数据的读取
数据库的连接,还有我们封装的每个接口请求
断言的主要是获取访问接口的值判断,用的是 assert,参数化主要用的比较多是excel表格,就是测试用例数据
还有需要调用登录后的 cookies跟 token的时候,我们就会用到关联
比如说原来我们写的一个申请借款的接口吧
首先我们会编写测试用例,把每个用例数据保存到excel中
再建立一个申请借款的模块
这个时候我们去调用申请借款的功能模块,里面的参数我们是保存在 excel表格中
我们建立发送请求,通过参数化,去读写excel表格中的数据,获取到返回的数据,通过assert去对应返回的数据跟用例中异常的数据。
这个时候也会做数据库断言,去连接数据库去查询数据库中时候存在查询,如果是返回结果,是json数据格式,我们还会转化下格式后,再去断言
这个申请借款模块,也会用到登录的 cookie值 token,我们先建立一个登录的请求,提取返回的 cookie值 token
excel表格多个用例,我们就用到循环去运行,读取excel中用例总的条数,去循环运行,这里要注意的是:
就是excel表格数据时是str我们要eval转化成字典格式
把每个接口封装好以后
我们就会调用 pytest框架去运行所有test文件的测试用例
如果只是执行部分用例,也可以通过 pytest框架来指定
然后用 yagmail,在 pytest框架运行完test文件之后,发送邮件到指定邮箱。
接口自动化,我个人觉得,性价比是比较高的。
实现起来简单、维护成本低,容易提高覆盖率等特点
接口是稳定的,最多是增加一个字段或者新增接口之类的
低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就可以了
执行的快,反馈的速度快。
2、为什么做接口自动化?
接口自动化,我个人觉得,性价比是比较高的
实现起来简单,维护成本低,容易提高覆盖率等特点
接口是稳定的,最多是增加一个字段或者新增接口之类的
低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就可以了执行的快,反馈的速度快
3、假如公司想要做自动化,让你去做,你会从那些方面考虑入手?
1.测试范围
2.时间进度
3.人员安排
4.框架确定
5.环境的搭建
6.准备好测试数据 数据驱动
7.工程的管理后期的维护
4、你写了多少接口自动化用例?
自动化用例,也没有具体数过,当时我负责的所有模块的接口的自动用例都是我这边独立完成的。
有模块的用例会多一点,有些会少一点,这具体看接口的参数有多少,参数多限制条件多的,一般用例会比较多一点,我负责的模块大概有100多条用例是有的。
5、比如说你接口的请求参数需要加密处理的,你们用的是什么加密方式,你加密怎么处理的?
这个是有做过的,就拿当我们那个项目的登录接口来讲吧,那个登录的密码是需要进行加密
加密之后再进行传输。这里需要问开发要加密算法,我们会把它封装成一个函数,调用这个加密函数对密码加密,之后再进行传递。我们公司的加密算法,大部分用的都是MD5的加密算法(base64)
6、你查询出来返回结果是密文,密文你怎么测试?
这里首先要搞清楚用的是什么加密算法,问开发要解密算法,对返回的数据进行解密
解密完成之后在与预期结果对比,去进行断言
7、pytest如何做断言?
用 assert断言
1,断言返回的结果
2,进行逻辑检查,检查数据库产生的数据
8、你们做接口自动化,用例数据是怎么组织,管理的?
用例数据这块,当时公司要求使用 excel表格来进行管理,其实这里主要也是为了实现数据与脚本的分离,提高整个工程后期的维护与优化,这里把数据封装到excel表格之后。
我们在脚本中通过调用封装好的读取 excel表格的数据函数,对excel表格中的用例数据。
我们是这么组织的,会有以下几个字段像用例标题,请求地址,请求方式,请求头,请求参数,响应结果,这个几个部分,对于请求头跟请求参数,因为脚本中发请求都是通过组装成字典的形式来发送的所以这里我们也是通过类似于字典的形式文本格式来进行组织,主要就是方便后期脚本的提取与引用其实我觉得,这样去处理的好处就是,后期如果用例数据有变动,或者需要增加或删除部分
用例直接针对 excel表格数据进行操作就可以了,不需要改动脚本这也就方便整个项目工程的管理与维护了。
9、requests中如何进行动态关联?
1.如果返回的是 cookies值,可以直接返回接口的 r.cookies
2.返回的是str类型数据,可以导入re模块进行正则表达式提取返回数据格式是json格式,导入json,把json数据格式转化 python对象
10、你们 python接口自动化怎么去处理 cookie, session的?
对于 cookie,session的处理一般有三种方式:
第一种就是先获取登录请求的 cookie值,然后发送其他请求的时候,在 requests提供的两个方法get或post方法中有一个 cookies参数,我们可以通过这个参数来传递 cookies值
第二种就是通过订制请求头,然后把获取到的coookies放在请求头中,通过请求头来进行传递
第三种就是通过创建一个 session会话对象,后期所有的请求发送都通过调用这个 session会话对象来进行发请求,如果是登录请求,它会自动保存 cookies值,然后其他需要用到cookies值的请求,也通过 session对象来发送,它会自动把 cookies发送出去,对于 cookies, session的处理,我们差不多都是通过以上三种方式来实现的。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
困难不许困恼,贵在解决烦恼,挫折不要受挫,贵在用于拼搏,磨砺一番更有结果,付出一番更有气魄,辛苦一番更有快乐,努力一番更有成果,健康面对生活,积极向上拼搏,生活自然不再困惑。
日出东海落西山,愁也一天,喜也一天;遇事不钻牛角尖,人也舒坦,心也舒坦;早晚操劳勤锻炼,忙也乐观,闲也乐观。
机会,需要我们去寻找。让我们鼓起勇气,运用智慧,把握我们生命的每一分钟,创造出一个更加精彩的人生。