目录
前言
一、接口
二、API自动化测试(接口测试):
三、requests框架
四、自动化测试框架-------》自动化测试核心技能
1. 1 接口测试类型
1.2 如何开展接口测试
1.3 Python做接口自动化测试
结语
前言
Pycharm功能:www.jetbrains.com/pycharm
Project视图、代码结构视图、图形界面的调试功能
代码导航、语法高亮、自动补齐、错误提示、自动修复、代码重构
主流开发框架的支持(Django)、集成版本控制(git,svn)、单元测试
python操作Mysql
mysqlclient库
第三方开发的,Django推荐
文档:Welcome to MySQLdb’s documentation! — MySQLdb 1.2.4b4 documentation
安装:Pip install mysqlclient==1.3.12
获取数据记录:Fetchone, fetchmany, fetchall
如何实现python接口自动化测试
一、接口
抓包工具 fiddler charles
接口工具 postman jmeter
接口加密解密、接口鉴权
接口签名、Dubbo Ws等
二、API自动化测试(接口测试):
1、什么是接口:
接口:系统提供服务的一种形式、两个事物交互点,基于某个协议,实现数据交互
1.一定是基于网络协议来传输的
2.下发请求,基于网络协议的传输,获取到响应结果,形成最终的接口的交互
3.url相当于指定了需求访问的接口
比如:
微信支付 内部接口(两个不同的账户实现数据交互)
银联支付 第三方接口(微信系统与银行系统实现数据交互)
接口测试意义:
1、尽早介入测试
2、前端进行验证,后端还需要两次测试---->增加测试覆盖率
3、前端无法正常测试的接口测试才能更好的进行覆盖测试
2、网络协议:
1.HTTP网络协议是目前业内最为主流的网络协议
http网络协议目前主流是1.1版本,是无状态协议,意味着每一次的请求都是独立的。通过鉴权机制来实现到数据的交互。鉴权包含:cookie/Session/Token
https就是http+SSL协议(独立的安全证书)
2.tcp网络协议:通信软件。比如微信、QQ、在线客服等。
3.微服务RPC(remote procedure call),本质上外部的网关还是基于HTTP网络协议为主。内部的通讯结合各类实际业务,而设定不同的网络协议 进行交互
4.restful:不是网络协议。本身只是一种格式规范。
大部分都还是基于HTTP网络协议进行通信,而生成对应的restful的规范化格式
3、基于Python+Requests库实现接口测试:
1.requests库是适用于HTTP网络协议下的接口的测试通信。
2.所有的接口测试,都是基于接口文档来实现的
3.业务是接口测试的核心。在所有接口开发测试之前,一定要懂业务。
4.所有的参数,应该如何传递都是基于设计来定义的。
很多时候在系统中,接口彼此之间是有互相交互和联系的。
三、requests框架
Requests是自动化测试框架之一,是python实现的最简单易用的HTTP请求和发送,属 于python的第三方库
python内库 unittest logging os.... 不需要安装
python第三方库 jsonpath 需要安装
本地安装:pip install requests
四、自动化测试框架-------》自动化测试核心技能
1、熟悉掌握一门编程语言python java
2、常用自动化测试框架应用:三大平台 Web + 接口 + app、原理+应用、设计理念
3、搭建落地自动化测试框架 web + 接口 + app 效率最大化
常用框架第二次开发、公共数据全局配置、日志收集、数据依赖、用例管理
4、落地自动化框架:(类似于工具postman jmeter):
易用性:不懂代码的人可以进行维护 填用例数据 配置数据 维护成本低
高效性:分布式集成 框架核心封装设计
通用性:通用所有的项目
一、结合接口文档实现请求代码构建
1、项目接口文档解读
2、规划接口自动化测试流程
项目业务--接口文档--接口用例--python脚本--pytest框架--调试&执行--Allure报告--结果分析
excel用例
Yaml用例
json用例
接口的架构
业务层
用例层
数据层
执行层
设备层 ---app自动化测试
配置层
日志层
报告
3、构建接口请求python代码
===============================================================================
一、接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等
通俗一点就是输入数据,返回数据,不同种类的接口应用层协议可能不一样,传输的数据格式也可能不一样。检查业务逻辑是否满足业务需求,校验字段是否正常你实际结果是否满足预期。
接口就是前段和后端的一个桥梁,那前端的界面要如何展示出来呢,它需要通过接口从服务端去获取。目前很多的项目都是前端和后端分离开发的,前端,后端开发完成,只需要做一个联调就好了,前端没有数据也能够进行开发,我们只需要通过Mock就可以完成了。
1. 1 接口测试类型
主要包含三种测试:
Web接口测试
应用程序接口(API, application programming interface)测试
数据库测试
测试API在不同条件下返回正确的响应或输出。此输出通常是以下三种之一:
通过或失败状态
数据或信息
调用另一个API
1.2 如何开展接口测试
一般来说,我们开展接口测试的流程如下:
1.需求确定后,开发出API文档
2.拿到API文档,编写接口测试用例
3.开发交付
4.实施接口测试
接口测试用例跟常规的功能测试用例基本一样,可以从接口功能测试、接口业务测试、接口性能测试、接口安全测试等角度考虑
接口功能的关注点是:
1.接口每个参数输入正确与错误
2.接口参数却是
3.接口参数边界值
4.接口参数类型
项目后端接口测试内容:
【接口测试】:业务功能测试、边界分析测试、参数组合测试、异常情况测试、性能测试、安全测试
业务功能测试:正常场景、异常场景
边界分析测试:业务规则边界分析、输入输出参数边界分析:【覆盖所有的必选参数、组合可选参数、参数有|无|null、参数的顺序|个数|类型、参数类型数值大小|输入的数值的范围、参数字串长短|Null-max-max+1、参数包含特殊字符】
异常情况测试:幂等(重复提交)、并发测试、事务测试、分布式测试、环境异常、大数量测试:【同时处理大批量数据的测试、DB数据量很大时,测试DB操作】
性能测试:响应时间、吞吐量、并发数、服务器资源使用率:【CPU、内存、IO、Network】
安全测试:批量抽奖、SQL注入、敏感信息是否加密:【前后端数据传输是否加密、日志信息是否加密】
【APP测试】:基本功能测试、边界分析测试、存储测试(存储空间的读写)、性能测试、稳定性测试、兼容性测试、中断测试、交互测试、UI测试
存储测试:屏幕旋转、连贯加载页面、开多个窗口、应用互相调用、多线程下载
性能测试:响应时间:【安装、启动、跳转】、内存、cpu、gpu、fps、电量、流量、温度
兼容性测试:网络:(2G、3G、4G、wifi、断网、弱网)分辨率、机型、平台
1.3 Python做接口自动化测试
使用python做接口自动化测试是非常简单的,python入门非常简单,通过短时间的学习后,就可以开展自动化测试了,但需要掌握如下知识:
理解HTTP
学会使用Fiddler
熟悉python基础,python数据类型、函数、模块、类
Mock服务
熟悉常用的python模块,如requests、json、configobj、pyyaml等
熟悉python单元测试框架,如unittest、pytest、nose等
熟悉python操作数据库的方法
二、持续集成
每天打开项目跑测试,那将会非常的麻烦,解决的办法就是持续集成Jenkins,点一下构建,自动完成测试,每天都能看到自己项目的质量情况、质量报告
对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:
a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。
b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等
c) 问题定位:报错信息、日志更精准,方便问题复现与定位。
d) 结果校验:加强自动化校验能力,如数据库信息校验。
e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。
f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。
三、接口测试质量评估标准
a) 业务功能覆盖是否完整
b) 业务规则覆盖是否完整
c) 参数验证是否达到要求(边界、业务规则)
d) 接口异常场景覆盖是否完整
e) 接口覆盖率是否达到要求
f) 代码覆盖率是否达到要求
g) 性能指标是否满足要求
h) 安全指标是否满足要求
这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。如果想以测试为长期发展职业目标,是需要时刻保持学习的,要使自己具备竞争力,无论你现在工作几年,只要行动起来,你就已经占优势了。祝大家2023年能升职加薪,没入职的就早日拿到心仪公司的offer,事事顺遂。