python自动化接口面试题

json和python中字典的区别?

Json是轻量级的数据交互格式,以key-value的键值对形式来保存数据,结构清晰,可以说是目前互联网项目开发中最常用的一种数据交互格式。

字典,同样是以key-value的键值对来保存数据,是python中的一种数据类型。

 

你做接口自动化测试时,测试数据放哪里?

1) 对于一些基础配置比如数据库配置可以放到properties文件(yaml文件)

2) 接口测试需要用到的数据可以放数据库表,也可以放到excel中。

 

什么是数据驱动?

数据驱动就是通过excel,或者xml,数据库等数据结构来维护测试数据,通过相应的技术去处理,拿到测试数据用于测试,从而实现测试数据与代码的解耦,数据驱动测试的本质是高级的参数化

 

excel中如何设计你的用例?

1) 所有的接口信息维护在一个表单

2) 关于接口的用例数据维护在一个表单

3) 接口传参一列来传,通过构造json格式的字符串即可解决传多个参数的问题,同时提升了用例的可维护性

 

excel中的数据怎么拿出来?

通过第三方库openpyxl来完成,项目只需要引入openpyxl库,通过它提供的api即可完成对于excel的操作,甚至于我们自己也可以做一些二次封装,使得操作更方便。一行数据就是一个用例。

 

 

如果有些接口做了鉴权(需要鉴定权限),怎么实现这些接口的自动化测试?

首先需要明确接口是通过什么机制来实现的鉴权

1) 如果是通过会话id(JSESSIONID)来实现鉴权的,那么先调用完登录接口--》拿到它返回的这个数据--》存储起来--》后面再调用其他接口的时候直接带上这个数据过去就可以了。

2) 如果是通过token来实现鉴权的,那么同样只需要在调用完登录接口--》拿到它返回的这个数据--》存储起来,后面操作同上。

先回答上面的一个基本实现步骤,然后再补充以下一些实现细节:

a. 怎么取到这个JSESSIONID或者token

这个信息怎么取首先得明白它是怎么返回来的,可能为以下两种方式:

1) 登录接口的响应头

2) 登录接口的响应报文

需要找开发确认,不同方式不同取法。

b. 怎么存储这个JSESSIONID或者token

1) 文件中(excel、properties文件都可以)

2) 数据库

3) 代码里面自己定义的公共静态变量,作为一个共享的数据

c. 请求其他需要鉴权的接口时,怎么带过去这个数据

先找开发人员确认,再调用需要鉴权的这些接口怎么携带这个鉴权的信息(票)。一般不外乎这么几种:

1) 拼接在url上传过去用于服务器验证

2) 设置到请求体中

3) 通过请求头带过去

弄明白怎么传过去以后,就设法从保存了这个鉴权信息的地方取出来--》传过去

 

什么是会话?

所谓会话就是session,而session是一种服务器的缓存技术,由服务器端创建,用户登录了系统,一般就会把登录用户的信息保存到这个session对象中,然后把此会话对应的id(JSESSIONID)返回,因此大部分系统都会用到session机制来实现鉴权。Session保存数据方式也是以key-value的形式。

 

什么是token?

所谓token其实就是服务器端返回的一个字符串(有点类似于:xys73494954sdhcdr83435这么一串),这个数据是基于什么算法生成的需要找开发确认,一般这个数据是唯一的,服务器每次返回的token都会不一样。Token之所以可以用来做鉴权,原理如下:用户a调用了登录接口--》登录了系统b--》服务器端生成了一个唯一的token信息(假设为c),然后会拿用户的编号id(假设为d)做了一个映射:c-d,然后将这样的映射关系存到数据库或redis等缓存中,然后再返回这个token给客户端--》客户端再调用其他需要鉴权的接口时,只需要将缓存起来的这个token带过去验证--》服务器根据此token检查是否有登录用户信息来判断此请求是否是一个已登录授权的用户。(这里客户端怎么取到这个token,怎么存,再次请求时怎么带过去,上面接口鉴权部分已解释)。

 

某个接口请求,参数依赖上个接口的返回数据,怎么处理(接口关联)?

场景:b接口在调用的时候参数依赖于a接口的返回数据。

处理方案:

a接口调用完--》从响应中取出b依赖的这个参数--》保存起来--》b调用的时候,取出这个信息--》当做参数传过去即可。

保存方案:

参考问题5中的数据保存方式

 

接口调用依赖第三方的接口b,而b接口还未提供给你,如何处理?

通过mock框架搭建自己的mock系统/平台(其实就是自己开发接口),模拟这个第三方接口mock一个出来即可,这样就解决了这个依赖。

 

接口测试的垃圾数据如何清理?

可以自己准备单独的环境(独立的数据库),这样接口调用产生的数据可以在整个套件执行完后通过执行sql脚本来完成数据删除

 

做接口自动化时怎么做的数据验证?

 

数据验证主要包括两个方面:

1) 接口响应报文的验证

利用jsonpath取出响应数据(大多数情况是json)中的关键字段的值,通过Assert断言这些关键字段的值是否符合预期。预期值和jsonpath取值表达式可以配置在excel中。

2) 数据库表数据的验证

做表数据验证要先明白两点:

a. 表数据验证首先得明白这个接口的基本业务,会影响到哪些表,哪些字段的数据,然后才能准备查询sql去有针对性的查数据。

b. 并不是所有用例的执行都会操作数据库,影响到表数据,因此只有影响到了表数据的用例,才准备查询脚本。

具体做法:

Excel用例准备aa,bb,cc三列,aa传脚本,bb,cc两列分别用来回写用例执行前的sql查询结果和用例执行后的sql查询结果,两个数据对比即可知道数据变化是否满足预期。

 

如何提升测试套件的执行效率?

1.减少excel读写,减少不必要的io操作

2.excel数据读取测试数据,全部存储到静态变量中)。

3.excel数据回写,尽量通过批量方式去写。

 

你用过单元测试框架吗,是什么框架,有哪些常用操作?

 

用过,unittest 或者 pytest,这些测试框架都支持我们去定义测试套件,达到管理我们测试用例代码的作用,同时这些测试框架提供的一些丰富注解不仅能很方便的控制测试用例的执行顺序来控制整个测试流程,还能为各种测试场景的实现提供支撑。

常用操作:

seutp,teardown,适合单个测试用例的初始化、环境清理。

seutpClass,teardownClass:适合测试类的全局初始化、环境清理。

assertXXXX: 各种断言方式

testLoader的discover: 用来发现测试用例

testSuite的addTests: 用来装载测试用例

@ddt  数据驱动

htmlTestRunner:用来生成html测试报告

 

说说你对接口的理解?

接口是服务,是功能点实现,是数据传递的通道,也是服务器端的一个实现了某种协议(比如http协议..)和映射机制(当访问一个url时就会通过服务器端的映射处理机制解析后,落到对应的处理函数)的函数,接口参数就是函数的参数,接口的响应数据就是函数的返回值

 

请简单说一说get、post这两种请求方法的区别?

Get:

a. 一般对于从服务器取数据的请求可以设置为get方式

b. Get方式在传递参数的时候,一般都会把参数直接拼接在url上(例如:http://xxx?id=1&type=2)

c. Get请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在url上,而浏览器对于url的长度是有限制的)

d. Get请求因为是直接将数据拼接在url上,所以安全性不如post强(相对),但是get的执行效率要快于post

Post:

a. 一般往服务器提交数据的请求会设置为post方式

b. Post方式传递参数一般都会把参数放在请求体,而不会拼接在url

c. Post请求方法可以提交的数据量不受限制

d. Post请求传参相对于get要安全(相对不是绝对),但是post的执行效率不如get。

 

在浏览器中输入URL,回车之后发生了什么?

1.解析地址

2. 浏览器查询,是否存在浏览器缓存中,如果没有
3.Tcp连接,想服务器发送请求
4.服务器返回接口,并且在浏览器中添加缓存
5.前端渲染页面
 
======================================

(1)URL 解析

2DNS 查询

3TCP 连接

4处理请求

5接受响应

6渲染页面

 

 

1. 什么是接口自动化测试?

答:接口自动化测试是指使用自动化工具对接口进行测试,验证接口的正确性、稳定性和性能等方面的指标。

2. 为什么要进行接口自动化测试?

答:接口自动化测试可以提高测试效率,减少人工测试的工作量,同时可以更快地发现和解决问题,提高软件质量。

3. 接口自动化测试的优点是什么?

答:接口自动化测试可以提高测试效率、减少测试成本、提高测试覆盖率、增强测试的可重复性和可靠性。

4. 接口自动化测试的缺点是什么?

答:接口自动化测试需要编写测试脚本,需要一定的技术水平和时间投入,同时也无法完全替代手工测试。

5. 接口自动化测试的工具有哪些?

答:常见的接口自动化测试工具有:Postman、SoapUI、JMeter、Requests、Selenium等。

6. 接口自动化测试的流程是什么?

答:接口自动化测试的流程包括:需求分析、测试计划、测试用例设计、测试脚本编写、测试执行、测试报告生成和问题跟踪等。

7. 接口自动化测试中的测试用例应该包括哪些内容?

答:测试用例应该包括接口的输入数据、预期输出结果、测试步骤、测试环境、测试数据等信息。

8. 接口自动化测试中的测试脚本应该包括哪些内容?

答:测试脚本应该包括接口的请求方法、请求参数、请求头、请求体、响应状态码、响应头、响应体等信息。

9. 接口自动化测试中的断言应该包括哪些内容?

答:断言应该包括响应状态码、响应头、响应体等信息,用于验证接口的正确性和稳定性。

10. 接口自动化测试中的数据驱动测试是什么?

答:数据驱动测试是指使用不同的测试数据来执行相同的测试用例,以验证接口的正确性和稳定性。

11. 接口自动化测试中的性能测试是什么?

答:性能测试是指对接口的响应时间、并发访问量、吞吐量等方面进行测试,以验证接口的性能和可靠性。

12. 接口自动化测试中的安全测试是什么?

答:安全测试是指对接口的安全性进行测试,包括对接口的认证、授权、加密、防护等方面进行测试。

13. 接口自动化测试中的Mock测试是什么?

答:Mock测试是指使用虚拟的接口数据来模拟真实的接口数据,以验证接口的正确性和稳定性。

14. 接口自动化测试中的集成测试是什么?

答:集成测试是指对多个接口进行测试,以验证接口之间的交互和协作是否正确。

15. 接口自动化测试中的回归测试是什么?

答:回归测试是指在软件修改后重新执行之前的测试用例,以验证修改是否影响了原有的功能和性能。

16. 接口自动化测试中的异常处理是什么?

答:异常处理是指对接口返回的异常信息进行处理,以保证测试的正确性和稳定性。

17. 接口自动化测试中的并发测试是什么?

答:并发测试是指对接口的并发访问量进行测试,以验证接口的性能和可靠性。

18. 接口自动化测试中的压力测试是什么?

答:压力测试是指对接口的负载能力进行测试,以验证接口的性能和可靠性。

19. 接口自动化测试中的持续集成是什么?

答:持续集成是指将接口自动化测试集成到软件开发的过程中,以保证软件的质量和稳定性。

20. 接口自动化测试中的代码覆盖率是什么?

答:代码覆盖率是指测试用例覆盖的代码行数占总代码行数的比例,用于评估测试用例的覆盖率和质量。

21. 接口自动化测试中的代码审查是什么?

答:代码审查是指对测试脚本的代码进行审查,以发现和解决潜在的问题和错误。

22. 接口自动化测试中的日志记录是什么?

答:日志记录是指对测试过程中的信息进行记录,以便于问题的追踪和解决。

23. 接口自动化测试中的报告生成是什么?

答:报告生成是指对测试结果进行汇总和分析,生成测试报告,以便于管理和决策。

24. 接口自动化测试中的测试环境是什么?

答:测试环境是指用于执行测试的软件和硬件环境,包括操作系统、数据库、Web服务器等。

25. 接口自动化测试中的测试数据是什么?

答:测试数据是指用于执行测试的数据,包括输入数据、预期输出结果等。

26. 接口自动化测试中的测试计划是什么?

答:测试计划是指对接口自动化测试的计划和安排,包括测试目标、测试范围、测试资源、测试进度等。

27. 接口自动化测试中的测试执行是什么?

答:测试执行是指对测试用例进行执行和验证,以验证接口的正确性和稳定性。

28. 接口自动化测试中的测试报告是什么?

答:测试报告是指对测试结果进行汇总和分析,生成测试报告,以便于管理和决策。

29. 接口自动化测试中的问题跟踪是什么?

答:问题跟踪是指对测试过程中发现的问题进行跟踪和解决,以保证软件的质量和稳定性。

30. 接口自动化测试中的持续集成工具有哪些?

答:常见的持续集成工具有:Jenkins、Travis CI、CircleCI、GitLab CI等。

 

posted @ 2021-02-25 16:40  北京测试菜鸟  阅读(712)  评论(0)    收藏  举报