面试常见:
1.软件V模型
从左向右描述了基本开发过程和测试⾏为
2.软件缺陷
- 软件未达到客户需求的功能和性能
- 软件超出了客户需求的范围
- 软件出现客户需求不能容忍的错误
- 软件的使用未能符合客户的习惯和⼯作环境
3.软件测试分类
3.1、从软件开发阶段角度:
单元测试、集成测试、系统测试、验收测试
单元测试:单元测试是对程序中单个子程序或具有独立功能的代码段进行测试的过程
集成测试: 集成测试在单元测试的基础上,先通过单元模块组装成系统或子系统,再进行测试。中带你是检查模块之间的接口是否正确。
系统测试: 系统测试针对整个产品进行测试,验证系统是否满⾜需求规格说明的定义,以及软件系统的正确性和性能等是否能满足。
验收测试:验收测试是部署软件前(运维⼯程师进行代码部署操作)的最后⼀个测试,目的是确保软件准备就绪,向需求方展示软件能够满足需求。
验收测试细分为α测试和β测试。
α测试:指的是由用户,测试人员,开发人员等共同参与的内部调试
β测试:指的是内测后的公测,即完全交给最终用户测试
3.2、软件结构与算法角度
白盒测试,黑盒测试,灰盒测试
白盒测试 :白盒测试又被称为结构测试,透明盒测试、逻辑驱动测试或基于代码测试,是对软件代码实现的细节 做细致检查。对于白盒测试,测试员必须要全面了解程序的内部逻辑结构,对所有逻辑路径进行测试。
黑盒测试也称为功能测试,是通过测试来检测每个功能是否都能正常使用,在黑盒测试中,把程序当作⼀个不可开的黑盒子,在完全不考虑程序内部特性的情况下,对程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当的接受输入程序而产生正确的输出信息。
灰盒测试:是介于白盒测试和黑盒测试之间的,灰盒测试关注输出对于输入的正确性,但同时也关注内部实现, 不过这种关注不像白盒测试那么详细、完整,知识通过⼀些表征性的现象,事件,标志来判断内部的运行状态,有时候输出是正确的,但内部存在错误点。这种情况非常多,如果每次都通过白盒测试来操作,效率低, 因此采用灰盒测试的方法。
3.3、软件的测试面角度
功能测试、性能测试
功能测试:也称为行为测试。主要检查实际功能是否符合用户的需求,大部分测试工作围绕软件的功能进行。
主要包含:1)逻辑功能测试 2)界面测试 3)易用性测试 4)安装测试 5)兼容性测试(软件本身的兼容性和不同平台下的兼容性)
性能测试:性能测试通过自动化的测试工具模拟多种正常、峰值以及异常负载条件,来对系统进行各项性能指标进行测试。
通常情况下分为时间性能和空间性能
时间性能:主要指软件的一个具体响应时间。
空间性能:主要指软件运行时所消耗的系统资源。
3.4、软件测试的自动化程度
手工测试、自动化测试
手工测试:由测试人员一个一个的执行测试用例,通过输入一些参数,查看返回结果是否符合预期效果。
自动化测试:由测试人员根据测试用例中描述的规则流程一步步执行测试,把得到的结果与预期结果进行比较。一般来说所以能代替人工测试的方式都属于自动化测试。
一般可以分为功能自动化测试和性能自动化测试
功能自动化测试:通过测试工具编写测试脚本,对软件的功能进行测试,并验证结果是否正确。
性能自动化测试:通过性能工具模拟成千上万的虚拟用户向系统发送请求,从而验证系统的处理能力。
3.5、软件测试周期中使用的方法
冒烟测试、回归测试、随机测试、探索性测试、安全测试
冒烟测试:在对一个新版本进行大规模的系统测试之前,先验证软件的基本功能是否实现,是否具备可测性。
回归测试:修改了旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误。
随机测试:是指测试中的所有输⼊数据都是随机生成的,其目的是模拟用户的真实操作,并发现⼀些边缘性错误。
安全测试:特别在产品开发过程基本完成到发布阶段,对产品进行检验,以验证产品符合安全需求定义和产品质量标准的过程。
4.post和get请求方法的区别
1.Get请求:请求参数和对应的值附加在URL后面,利用一个问号(?)代表URL的结尾与请求参数的开始,GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。
Post请求:POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,不会出现在url中。
2.Get请求在Params中输入key_value值,Post请求在Body中输入key_value值。
3.Get 请求无消息体,只能携带少量数据,GET 方式提交的数据最多只能有 1024 字节; POST 则没有此限制
5.HTTP报文格式构成
一个HTTP请求报文由请求行、请求头、空行、和请求数据四部分构成
请求行:由请求方法字段请求行,URL字段和HTTP协议版本字段3个字段构成
例如:GET /index.html HTTP/1.1
HTTP主要有三种请求方法:GET、POST、HEAD方法。
GET方法:请求参数和对应的值附加在URL后面,利用一个问号(?)代表URL的结尾与请求参数的开始,传递参数长度受限制。
POST方法:将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,POST方式对传送的数据大小没有限制,也不会显示在URL中。
HEAD方法:就像GET,只不过服务端接收到HEAD请求后只返回响应头,而不会发送响应内容,当我们只需要查看某个页面的状态时,在传输的过程中省略了页面内容,用HEAD是非常高效的。
请求头:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号:分隔。
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。
6.面试题: 介绍一下你如何使用postman进行接口测试?
拿到需求文档— 根据需求文档制定测试计划— 测试用例—执行—书写测试报告
打开postman,输入开发人员给的接口地址,选择http请求,点击send按钮,得到返回结果。
http请求一般有两种,分别为post请求和get请求,两种请求的区别见上方(4)。
引申:post数据类型有哪些?
1.none:无参
2.form-data:键值对,在key处可以选择类型,text或file
3.x-www-form-urlencoded:键值对,键只能是text
4.raw:Text、JavaScript、XML、JSON、HTML
5.binary:以二进制存储的File文件,如音乐、视频等
7.面试题:分析bug是前端还是后端的?
查看请求报文,对比接口文档,看请求报文是否存在没问题,有问题就是前端发的数据不对;
若请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题。
8.面试题:没有接口文档,如果做接口测试?(这是个送命题)
1.没有接口文档,先跟开发沟通,然后整理接口文档
2.没有接口文档,可以Filddler抓包看接口请求参数,然后不懂的跟开发沟通
浏览器 ->设置->高级 -> 系统 -> 打开您计算机的代理设置(以谷歌浏览器为例)
Fiddler -> filters -> 关心ip run (IP获得:cmd-> ipconfig)
请求 相应
9.面试:会不会用postman做批量执行?
测试用例保存文件,接口变量填到Tests Run
数据 -> 本地 -> 环境 -> 全局 优先级由低到高
postman不能做接口自动化,可以批量进行接口测试,提高工作效率
10.postman使用的变量类型有哪些?
Postman提供了4种变量类型
环境变量(Environment Variable)
本地变量(Local Variable)
全局变量(Global Variable)
数据变量(Data Variable)