接口测试
接口测试的理论知识
测试金字塔模型
测试金字塔模型分为3层:
- UI -黑盒测试 -功能测试。
- server层 -服务层测试 -接口测试 -灰盒测试。
- Unit层 -单元测试 -白盒测试。
分层的自动化测试
- UI层
测试工具有:QTP、Selenium、手工。
应用的场景有:回归测试、大数据量测试。
测试效果:性价比不高,发现bug能力比较弱。 - Unit层
测试工具有:JUnit(Java)、JTest(Java)、Unittest(Python,自带的白盒测试工具)、C/C++ Test(C/C++)
应用的场景有:使用工具测试代码的正确性和语法正确性、规范性。 - Services层接口自动化测试
定义:
1. 测试模块之间的调用关系的正确性。
2. 程序开发的函数或方法,提供参数和返回值。
3. 也包括接口性能、安全性等方面的测试。
MVC架构模式
MVC结构的介绍:
- Model模型层 :业务逻辑。
- View视图层 :显示逻辑。
- Controller控制器层 :控制逻辑。
提早做web接口测试的好处
- 更早地接入测试。
- 更好地验证系统的安全性和性能。
- 发现底层的问题。
API的介绍
- 定义:大量可复用功能的统称。
- 共同点:(1)都有函数名(功能名)。 (2)参数表(加入计算的数据)。 (3)返回结果。
- Web接口特点:(1)有URL、参数。(2)响应结果一般JSON格式。
网络协议
TCP/IP 4层模型
- 应用层,使用HTTP、HTTPS、FTP、SMTP、POP3协议。
- 传输层,使用TCP、UDP协议。
- 网络层,使用IP、ICMP、 ARP、RARP协议。
- 网络接口层,使用PPP协议。
网络端口号
- HTTP 80,80端口可以省略
- HTTPS 443 ,443端口也可以省略
- FTP 21
- SSH 22
- Telnet 23
- SMTP 25
- DNS 53
- TFTP 69 ,基于UDP
- POP3 110
常用服务默认端口
- Oracle 1521
- Mysql 3306,my.ini配置文件可修改
- Sqlserver 1433
- Tomcat 8080 ,conf/server.xml 可修改
注意1: 如何定位哪个服务占用了端口号?
命令行:netstat -ano >>根据端口号找到pid>> 电脑任务管理器>> pid >>taskManager or services>>关掉进程。
注意2: 安装完一个服务,如果不能正常启动,可以是同类型的服务已经启动,端口号已经被占用。可以使用命令查看端口号占用情况。
网络协议和访问接口的关系
- URL地址格式:含义主机名 域名 Ip地址
- http://主机名:端口号/应用名/资源路径
- 应用层 网络层 应用层 传输层
接口测试的测试要点
- 功能测试,重点是业务流程、参数。
- 性能测试,响应时间、并发用户数等。
- 安全性测试,敏感信息是否加密、前后端是否验证、恶意请求屏蔽等。
接口测试的思路
- 获取需求,需求规格说明书,作为业务规则依据。
- 获取接口文档,开发在设计阶段编写的,作为接口测试核心依据。
- 编写接口测试用例。
- 使用工具执行测试用例,比如postman。
- 编写接口测试报告。
如何分析接口文档?
- 接口文档总名称
- 接口文档子名称
- 接口文档接口简介
- 请求方式: http HTTPS get post
- 请求URL:协议名://域名或IP地址:端口号/应用名/功能名
- 携带的参数:
在线编码解码,https://tool.chinaz.com/tools/urlencode.aspx,URL编码/解码。
语法,Query String 查询字符串。
规则,?参数名=参数值&参数名=参数值&…
目的,URL后携带请求的参数给服务器。
测试的重点:
几个参数、作用、名称、必填、选填、参数数据要求(有效范围、最大值、最小值、特殊符号、数据类型等)。
可以参考黑盒测试方法(等价类、边界值)