分层的手工测试:黑盒测试、白盒测试、灰盒测试
1、测试金字塔模型
整个测试分为三层:
UI层(user interface 用户界面层):在用户界面上进行操作完成测试--黑盒测试(功能测试)
server层:服务层测试
主要在集成测试阶段,测试模块之间的调用关系(一个模块给另一个模块提供调用,就说提供服务)--主要测试代码之间的调用关系,也是接口测试的核心。
unit层:单元层,主要在单元测试阶段,使用白盒和黑盒的方法,测试某个模块的功能是否正确
金字塔测试模型认为:UI层的测试效率低、发现bug的能力弱,投入与产出比低,应该逐步减少采用,而更多采用server层和unit层的测试(更多的代码级测试)
代码级测试特点:
精准度高、发现bug能力强,发现bug后解决的成本低
要求会代码,测试的人力成本、时间成本比较高--目前很难推广--所以目前采用折中的办法--采用接口测试
2、分层的自动化测试
基本观点:每一层都应该开展自动化测试
(1)UI层:QTP、selenium功能自动化测试工具
主要应用在回归测试、大数据量测试,代替测试员的重复手工测试
投入产出比低,发现bug能力弱
(2)unit层:
java测试:junit,jtest
python测试:pytest、unittest
C/C++测试:C/C++Test
使用工具测试代码的正确性和语法正确性、规范性
难度太大,找不到合适人员、另外成本高
(3)Server层:
测试模块间的集成是否正确:
接口测试就是模块之间的调用关系的正确性。目前主要是指web接口测试,主要测试网页页面和后台服务器之间的数据传递的正确性
接口测试产生背景:
web页面做的越来越复杂,交互数据越来越多,在前端页面和后台服务器之间有大量的数据传递(函数调用),为了降低前端工程师和后台程序员的难度,前端和后端采用“接口”来传递数据
3、接口测试
(1)API:application programming interface,应用程序编程接口,简称接口
(2)接口本质就是程序中的函数(或方法)
4、补充:函数(或方法)
(1)程序由大量的函数和函数调用组成(有些编程语言把函数称作方法)
(2)函数就是实现某个功能的代码,写在一个整体之中,然后让别人调用
把函数理解成一个加工机器,接收一定的参数(被加工数据),进行处理,处理完以后,把结果返回给调用者。
(3)函数小结:
函数核心要点:函数名称、需要的参数、函数实现的功能、返回结果
函数必须先定义后调用。
一个函数定义一次可以被多次调用(重复利用)
5、web2.0接口测试
现在企业说的接口测试,一般指web2.0接口测试,或者http接口测试,主要是基于B/S结构的接口进行测试(B/S结构主要基于http超文本传输协议,所以也叫http接口测试)
(1)B/S结构使用的协议:http(超文本传输协议)和https(安全版的http协议)
(2)在客户端(browser 浏览器)和服务器端(server)之间传输的数据主要包括:HTML(静态网页)、视频、音频、图片、css(样式单)、JavaScript等
6、为什么采用web接口?
(1)程序开发一般是分层的——一般至少分为三层:
界面层:提供程序的界面,要求美观,吸引客户,由前端开发工程师完成
业务逻辑层和数据访问层:完成程序的实际业务处理功能和数据读取、写入等数据操作功能,一般由程序员完成
在各个层之间有大量的数据传递
(2)随着web前端技术的兴起,用户交互界面越来越复杂,美观,同时显示的数据越来越多,这样,数据在前端和后端传递难度比较大--解决方案:前端和后端采用web接口传递数据
7、采用接口的好处
各负其责、各司其职、应用广泛
8、接口测试案例(熟练掌握协议+json)
9、接口异常测试case
接口测试中的异常情况测试是确保软件接口在面对不正常或意外输入时能够正确处理的重要环节。以下是设计接口测试异常用例的一些建议:
1. 参数异常测试
- 必填参数缺失:不提供必需的参数,验证接口是否能够正确处理这种情况,是否返回了适当的错误信息。
- 参数为空:将所有参数设置为空值,检查接口的响应。
- 参数类型错误:故意提供错误的参数类型,如将整型参数传为字符串,检查接口是否能够识别并处理。
- 参数值越界:提供超出规定范围的参数值,包括最小值、最大值以及边界值附近的值。
- 参数包含非法字符:在参数中包含特殊字符、敏感词汇等,检查接口是否能够正确过滤或处理。
- 参数组合异常:提供多种参数组合,包括多参数、少参数、参数顺序错误等,验证接口的容错性。
2. 数据异常测试
- 数据为空:发送空的请求体或空的数据字段,检查接口的响应。
- 数据长度不一致:提供长度过长或过短的数据,检查接口是否能够正确处理。
- 错误数据格式:发送不符合接口规定的数据格式,如JSON格式错误,XML结构错误等。
- 关键字数据错误:对于某些关键字段,提供错误的数据,检查接口是否能够识别并给出正确的反馈。
3. 逻辑业务异常测试
- 依赖关系异常:测试接口在依赖的服务或接口失败时的表现。
- 权限异常:模拟无权限或权限不足的情况调用接口,检查权限控制是否有效。
4. 安全异常测试
- 注入攻击:尝试SQL注入、XSS攻击等,检查接口是否有相应的防护措施。
- 敏感信息泄露:验证接口返回的数据中是否包含敏感信息。
- 认证授权异常:模拟认证失败、授权失败的情况,检查接口的响应。
5. 性能异常测试
- 超负荷请求:连续发送大量请求,检查接口在压力下的表现。
- 长时间请求:模拟长时间运行的请求,检查接口是否能够正常处理。
6. 网络异常测试
- 网络延迟:模拟网络延迟,检查接口的超时处理机制。
- 网络中断:在请求过程中断开网络,检查接口的恢复和重试机制。
设计异常测试用例时,需要根据接口的实际应用场景和业务需求进行详细分析,确保测试用例能够全面覆盖各种可能的异常情况。同时,应当遵循接口文档中的规定,确保测试的准确性和有效性。