1.你是如何把控、推进测试流程的?
首先,测试之前,我会做好测试计划、测试人力分配、工作量的估算、测试策略、测试风险评估等;其次,测试中,我会尽量严格按照测试计划来执行,如果实际测试中出现问题,也会随机应变的进行处理,不会耽误测试进度;最后,测试工作完成之后,我会组织本组人员进行项目复盘总结,针对测试过程中出现的问题进行分析,以便后续工作避免再次发生。
2.讲一讲你了解的测试基本理论?
1)测试需求分析:测试工作之前,我们会拿到一个产品需求文档,针对这个文档,我们会和产品经理、交互、视觉、相关开发和测试人员进行一次需求文档澄清,如果产品比较复杂,可能也会分布进行多次澄清,澄清过程其实是一个大家思维碰撞的一个过程,各个角色都会提出各自的观点和看法,当然也会有一下会议的遗留事项,这就需要上级领导确认后再通知到大家,总之,需求澄清是让大家了解接下来需要做什么样的产品,以便制定计划和方案。
2)测试流程建立:测试流程其实是在测试之前做好测试计划,并在测试中严格按照测试计划执行,需要确定的有:测试目标、测试范围、测试环境、测试工具、测试策略、测试风险等,还有人力资源分配、工作量的估算、测试时间、任务分配、培训计划等。
3)测试方案编写:测试方案是根据产品文档、交互图、视觉图进行编写的Xmind格式的文件,也有一些word形式的,一般是在开发写代码的过程中进行编写,开发提 测之前,与产品经理、交互、视觉、开发拉会进行测试方案的评审,评审通过后,开发进行提 测评审,与开发沟通好是否有遗留事项。
4)测试用例设计:测试用例设计一般是在测试方案编写完成之后,根据测试方案进行每个场景的用例设计,用例设计的方法有很多,常用的有:等价类、边界值、判定表、正交试验、流程分析、特殊场景的异常分析、错误猜测等。测试用例比较重要的几个字段:用例名称、前提条件、测试步骤、预期结果、备注、优先级等。
3.你接口测试是怎么做的?
首先,要找开发要接口文档,如果没有接口文档,就要了解被测试的业务,理解设计层面的业务,不仅仅局限于需求层面的业务,就是你要知道传什么参数,返回什么样的状态码,然后设计一部分接口文档,与开发沟通一致。
一个接口文档中应该包括以下内容:接口名称简要描述、请求的url、请求方式(get/post)、请求的参数(名称,类型,选填/必填,含义,取值范围,缺省值)、请求示例、返回示例、返回参数说明、其它返回错误代码说明等。
接口测试计划需要考虑人力分配和在哪个阶段进行接口测试,有什么风险以及如何应对。
接口测试方案需要考虑测试的重点、次重点的划分,以及如何测试,测试难点以及如何解决,接口测试环境部署,以及使用什么工具进行接口测试,我主要使用postman、Jmeter,python下的requests插件,
针对http协议进行接口测试,需要考虑:
1)从设计层面的业务考虑,传入不同的参数,会得到不同的结果
2)从协议出发考虑,比如:请求中给出错误的cookie中的sessionID,更换User-Agent,更换Content-Type,响应中header的状态码等
3)从接口所依赖的第三方考虑,也就是外部依赖,这个问题是接口测试中的难点,比如,接口中的某个值是从数据库中获取的,要考虑的是测试数据超出数据库的范围,或者还要考虑数据库服务器的故障情况(可恢复性测试)
4)还要考虑系统测试中做不到的测试用例,比如,表单提交时,系统测试只能给出一个空的参数,没办法做到不给参数,接口测试中可以做到
4.用postman怎么做的接口测试?
postman介绍:
postman可以模拟各种http请求,有Collection测试集合功能,是requests的集合,一个Collection可以包含多个request,如果把一个request看做一个testcase,那么Collection可以看作一个testsuite,Collection还可以import出来分享给团队成员。
人性化的response整理,一般在用其他工具测试时,response的内容通常都是纯文字的raw,但如果是JSON,就是一整行的JSON,这会造成阅读障碍,postman可以针对response内容的格式自动美化,JSON、XML或者HTML都会整理成可以阅读的格式。
内置测试脚本语言,postman支持编写测试脚本,可以快速检测request的结果,并返回测试结果。
设定变量与环境,postman可以自由设定变量与环境,一般我们在编辑request,校验response的时候,总需要重复输入某些字符,比如url,我们可以设定变量来保存这些值,把变量保存在不同的环境中。
在实现接口自动化测试时,经常会遇到接口参数依赖的问题,比如,调取某些接口的时候,需要先获取接口的sign值,而每次请求返回的sign值又是不一样的,这种情况下,就要用到postman中设置环境变量功能,可以在Pre-request Script中将接口返回的response设置为环境变量,供后续接口使用,类似参数化,使用方法为{{}}加上生成的变量获取环境变量。
示例:postman发送合法登录请求的步骤如下
1)新建Collection
2)新建request
3)参照接口文档,输入url
4)选择该接口的方法
5)post请求的正文参数
6)确定请求的Content-Type
7)按照接口文档输入参数,KEY和VALUE前后不能有空格
8)保存
9)Send发送请求
10)观察响应的正文
11)断言写在Tests中,使用postman代码片段进行断言,比如status code,response body,response time,也可以自己写断言,actual、excepted
5.讲一下OSI七层参考网络协议模型
七层:从下往上,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
互联网四层模型:从下往上,物理链路层、网络层(ip协议)、传输层(TCP,UDP协议)、应用层(HTTP协议)。
6.讲一下你了解的TCP协议
TCP协议是可靠的传输协议,它是传输层协议,是全双工通信方式。
TCP传输数据是按照顺序传输的,每一个数据包都有序列号,若是接收方发现某个数据没有收到,可以告知发送发重新发哪个包即可。
在传输数据之前,要建立TCP连接,两个方向上都要建立连接,也就是3次握手,第一次握手:客户端发送SYN报文,第二次握手服务端发送SYN和ACK报文,第三次握手客户端发送ACK报文
每次TCP传输完数据之后,要从两个方向上断开连接,也就是四次挥手,断开连接释放资源
7.HTTP协议的特征
1)灵活
2)明文传输,头部信息和数据正文都是明文传输
3)无连接,当服务器响应了一个客户端的http请求之后,服务器就会断开与客户端的连接
4)无状态,断开连接之后,服务器不会主动记录与客户端交流的数据。为解决无连接问题,客户端保留cookie文件,cookie中有sessionID,服务端也保存sessionID,且sessionID与ip地址绑定,提高安全性。
8.关系型数据库和非关系型数据库的区别?
关系型数据库的数据结构是表。
优点:
1)易于维护:都是表结构,格式一致
2)使用方便:SQL语言通用,可用于复杂查询
3)复杂操作:可用于一个表以及多个表之间非常复杂的查询
缺点:
1)读写性能差,尤其是大量数据个高效率读写
2)固定表结构,灵活度较差
3)高并发读写需求,硬盘I/O是一个较大的瓶颈
非关系型数据库是一种数据结构存储方法的集合,可以是文档或者键值对,图形。
优点:
1)格式灵活:存储格式可以是key-value形式、文档形式、图形形式等,使用灵活,应用场景广泛
2)速度快:可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘
3)数据结构相对复杂,复杂查询方面较差