软件测试面试05:接口自动化面试提问答案

10.1 接口自动化怎么测试

( Python+ requests+pytest版本)

原来我们接口自动化是用 python+ request+ pytest执行

接口自动化其实主要就是接口测试的基础上填加了断言,参数化,动态关联

做接口自动化之前,我们也会划分模块,报告,公共的模块,测试数据,测试报告,主要的目的是为了方便后期的维护

测试数据,一般原来我们就是用的接口测试用例,公共的模块,主要是里面的一些公共的作,比如说用例 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文件之后,发送邮件到指定邮箱。

接口自动化,我个人觉得,性价比是比较高的。

实现起来简单、维护成本低,容易提高覆盖率等特点

接口是稳定的,最多是增加一个字段或者新增接口之类的

低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就可以了

执行的快,反馈的速度快

(jmeter版本)

原来我们也做了很多接口自动化,接口自动化这块,其实原来我们也是用 jmeter请求去做的,这个时候,我们也用到一些工具,http代理,主要方便编写接口请求,通过录制就行了,我觉得接口自动化只是在接囗测试中多加了一些参数化、关联、断言参数,主要是函数参数化,自定义变量参数化,文件参数化,主要文件类型csv跟txt,不过原来csv文件用的比较多,还有一些数据库的参数化,断言,主要响应代码断言,响应文档断言。

比方说,原来我们一个登录接口主要是正常场,异常场票这块,正常场景,主要是用户跟密码正确,采用数据参数化,把用户名用随机函数进行参数化,随机长度大一些,用户名不存在的情况,原来是通过文件参数化,设置参数值,密码不正确也是通过文件参数化,接口请求中host地址,目录地址,我们都进行数据化,自定义变量去操作,结果检中,我们主要是用断言来检查,每个请求,

设置了2个断言,一个响应代码断言,一般是200,响应文本断言,登录成功,返回码为1

状态提示成功,检意是否成功,对应异常场景也是,都需要设置断言,去检查结果原来做的申请借款接口,需要登录接口http cookie,我需要建立2个接口,一个登录接口,一个申请借款接口,通过正则表达式去提取登录接口返回 cookie,在申请借款请求接口,设置http  cookie时,值为登录接口返回cookie,还有也要考虑原来我们项目,还有 token值,提取登录返回 token,提取,当成申请借款的请求参数,当测试场景的脚本编写完成,执行接口测试用例,我们在察看结果树中,检直,主要是看颜色这块,红色检查哪些地方失败,绿色表示通过

编写完成后,我们会把脚本添加到 jenkins里面持续集成运行

原来我们持续集成是半个月运行一次,当然我们也可以手动构建

1,我们一般把写完的 jmeter的脚本

2,通过svn把写好的脚本检入到svn服务器

3,在 jenkins任务下,选择定时构建,或者手动构建,检查svn上传最新的脚本,去运行

一般我们项目在修改新的功能模块,上线,转测之前,都会自动去运行脚本

4,运行完成,我们再 jenkins下,查看脚本运行结果

10.2 为什么做接口自动化?

接口自动化,我个人觉得,性价比是比较高的

实现起来简单,维护成本低,容易提高覆盖率等特点

接口是稳定的,最多是增加一个字段或者新增接口之类的

低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就

可以了执行的快,反馈的速度快

10.3 假如公司想要做自动化,让你去做,你会从那些方面考虑入手?

1.测试范围    2.时间进度    3.人员安排    4.框架确定

5.环境的搭建      6.准备好测试数据 数据驱动       7.工程的管理后期的维护

10.4 你写了多少接口自动化用例

自动化用例,也没有具体数过,当时我负责的所有模块的接口的自动用例都是我这边独立完成的,

有模块的用例会多一点,有些会少一点,这具体看接口的参数有多少,参数多限制条件多的,

一般用例会比较多一点,我负责的模块大概有100多条用例是有的!

10.5 比如说你接口的请求参数需要加密处理的,你们用的是什么加密方式,你加密怎么处理的?

这个是有做过的,就拿当我们那个项目的登录接口来讲吧,那个登录的密码是需要进行加密

加密之后再进行传输。这里需要问开发要加密算法,我们会把它封装成一个函数,调用这个加密函数对密码加密,之后再进行传递。我们公司的加密算法,大部分用的都是MD5的加密算法(base64)

10.6 你查询出来返回结果是密文,密文你怎么测试

这里首先要搞清楚用的是什么加密算法,问开发要解密算法,对返回的数据进行解密

解密完成之后在与预期结果对比,去进行断言

10.7  http如何进行代理录制接口

Web端

1,浏览器设置代理就可以录制,默认ip为 localhost,端口8888

手机端

1,手机设置代理就可以录制

默认ip为pc机器的ip地址,端口8888

10.8  jmeter如何进行参数化,参数化类型包含哪些

用户参数自定义变量文件参数化,csv文件或者txt文件

函数助手随机函数,csvread函数数据库参数化

10.9  jmeter中对于json数据如何提取信息

正则表达式提取或者 JSON Extractor提取

10.10  jmeter中如何跨线程组传输参数

正则表达式或者边界值提取器或者JSON Extractor提取的值

后置处理器- beanshell处理器

定义成全局变量

${_setProperty(newtoken,${access_token},)}

其他线程组,引入变量值

${_P(newtoken,)}或者${_property(newtoken,)}

10.11  jmeter如何进行断言

1,响应断言

添加响应断言:添加-》断言-》响应断言

apply to:是应用范围,设定匹配的范围

Main sample and sub-samples:匹配范围为当前父取样器,及子取样器

Main sample only:仅当前父取样器

Sub samples only:仅子取样器

Meter Variable:变量值进行匹配

要测试的响应文字:针对响应数据不同部分进行匹配

(1)响应文本:响应服务器返回的文本内容,http协议排除 header部分

(2)响应代码:匹配响应代码,比如http请求中200代表成功

(3)响应信息:匹配响应信息,处理成功返回成功”或者“ok”字样

(4) Response Header匹配响应头中的信息

匹配规则:

包括:响应内容包括需要匹配的内容就算成功

匹配:响应内容要完全匹配内容,不区分大小写

equals:完全相等,区分大小写

substring:响应内容包括匹配内容即为成功

可以通过添加断言结果来查看断言的执行情况

执行结果:

如果接口响应数据可以与断言匹配上,则测试用例通过,否则不通过

可以通过断言结果,查看断言执行情况。

2,大小断言

3,持续时间断言

13.1  自动化测试使用的那些库

1、selenium库 --web自动化测试工具   2. priest框架,运行用例   3. random随机,概率

4. xlrd --获取exell表数据  5. pymysql调用数据库   6. pytest-html --生成html文件

7. yagmanil --发送邮件   8. time-时间   9.  Select包--下拉框    10. Keys 模拟键盘操作

11. Webdriverwait智能等待    12. Action Chains模拟鼠标操作

13.2   pytest框架如何使用

1. 安装 pytest框架

pip install pytest、在 pycham里安装 pytest、源码安装

2. 导入 pytest: import pytest

3. 编写主函数,后续代码,后面运行: if_name_=='_main_’;

4. 执行文件:

pytest.main(["要运行的文件的相对路径"])  ----例如(["../test_case/test_01.py"])

13.3  pytest框架如何去生成测试报告

1. 要安装 pytest-html

pip install pytest-html、在 pycharm里安装 pytest-html、或者源码安装

2. 在运行用例模块中执行用例时添加html路径: pytest.main(["要运行的文件的路径","--html=. /report/report.html"])

13.4  bytes如何去运行多个文件或者整个目录

1. 执行多个文件

pytest.main(["../test_case/test_01","../test_case/test_login"])

2. 执行整个目录

pytest.main(["../test_case/"])   --列表里是目录路径

13.5  pytest框架如何去运行上次失败的测试用例

1. pytest --lf运行用例的路径  --- 只运行上次失败的用例

2. pytest --ff运行用例的路径 --- 运行上次所有的用例,优先运行上次失败的用例

(如果没有写路径,则执行当前目录下所有的用例)

13.6  运行完成后,如何去自动发送邮件

#用例执行,无人值守的状态,如何才能知道已经运行完成,发送测试报告到邮箱里面查看运行完成

安装 yagman

pip installyagmail、在 pycharm中安装 yagmail

导入 yagmail: import yagmail

定义发送者邮箱服务,里面包括邮箱地址,授权码,smtp.126.com

yag = yagmail.SMTP("126邮箱地址","授权码","smtp.126.com")

自动发送邮件

yag.send(["接收邮件的邮箱地址","多个邮箱用列表包起来"],"邮件主题","邮件正文内容","附件的地址../report/report.html")

13.7  fixture装饰器的作用与默认值

1. 装饰器:@pytest.fixture()

def open_l():       #不再用test开头,

ea = element_action()    #实例化对象

ea.open_url()     #打开浏览器 driver,被其他用例所调用

Yield ea   1,装饰器使用的返回值,类似于 return方法     2,前置与后置处理分开

ea.close_browser()   #每次运行,关闭浏览器,闭环

设置了装饰器之后,可以被其他用例调用,有使每个用例都有打开网页和默认关闭网页的作用

13.8  yield的作用是什么

1. 装饰器使用的返回值,类似于 return方法

2. 使前置与后置处理分开

13.9   pytest运行用例,用例命名规则有哪些?

1. 文件名以test_*.py文件和 *_test.py命名    * 代表任意任何内容

2. def函数要以test_开头

3. class类要以test_开头.

4. 以test_开头的方法

13.10  allure报告生成

1,先安装一个allure包用 pip install allure-pytest

2,运行脚本-s,-d生成报告的目录,一般是一些json文件

3,下载allure生成工具,配置环境变量

4,运行命令: allure generate ./allurereport/-o ./reporthtml/--clean,

生成html的 allure报告

 感谢每一个认真阅读我文章的人

下方这份软件测试视频学习教程虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

 


这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享~

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华测教育-软件测试张三丰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值