学习之浅谈python如何做接口自动化
目录
前言
一、接口
二、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) 安全指标是否满足要求
结语
这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。如果想以测试为长期发展职业目标,是需要时刻保持学习的,要使自己具备竞争力,无论你现在工作几年,只要行动起来,你就已经占优势了。祝大家2022年能升职加薪,没入职的就早日拿到心仪公司的offer,事事顺遂。
欢迎留言,或是关注我的专栏和我交流。
学习之浅谈python如何做接口自动化相关推荐
- 浅谈python+requests实现接口自动化
前言 今年2月调去支持项目接口测试,测试过程中使用过postman.jmeter工具,基本能满足使用,但是部分情况下使用较为麻烦. 比如:部分字段存在唯一性校验或字段间有业务性校验,每次请求均需手工修 ...
- Python中做接口自动化如何读取配置ini文件
使用Python做接口自动化过程中,往往会使用配置文件,方便后期维护.带着大家熟悉一下configparser常用的方法使用 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括 ...
- 浅谈Python+requests+pytest接口自动化测试框架的搭建
框架的设计思路 首先要明确进行接口自动化需要的步骤,如下图所示: 然后逐步拆解需要完成的工作: 1)了解分析需求:了解接口要实现的功能 2)数据准备:根据开发文档确定接口的基本情况,知晓接口的url. ...
- 浅谈python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法
浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...
- 浅谈python 里面的单下划线与双下划线的区别
更新时间:2017年12月01日 10:30:13 作者:空气中的臭氧 这篇文章主要介绍了浅谈python 里面的单下划线与双下划线的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起 ...
- python中 是什么类型_浅谈python中的变量默认是什么类型
浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...
- 浅谈 Python 程序和 C 程序的整合
浅谈 Python 程序和 C 程序的整合 Python 是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问, ...
- python文件路径拼接多出斜杠_浅谈python中拼接路径os.path.join斜杠的问题
浅谈python中拼接路径os.path.join斜杠的问题 调试程序的过程中,发现通过os.path.join拼接的路径出现了反斜杠 directory1='/opt/apps/upgradePac ...
最新文章
- java调用系统时间函数_JAVA自学笔记:不使用系统函数来计算日期处于当年的第多少天...
- [原]动态创建Web控件制做计算器
- element ui走马灯怎么添加_Lovestu - Element UI 走马灯高度自适应
- C#中的ForEach
- java报错找不到对象,使用Spring源码报错java:找不到类 InstrumentationSavingAgent的问题...
- 腾讯云云机安装dockers
- Python学习笔记(八)随机数的处理
- 手机丢了,支付宝和微信里面的钱该怎么办?
- 泛微协同办公平台E-cology9.0版本最全帮助文档
- hadoop 虚拟化基础
- tcpClient的使用
- U盘安装完kali后内存变小的言diao(无图)博客
- text改为longtext
- Yolov5训练模型没有框
- python爬取百部电影数据,我分析出了一个残酷的真相
- 2014图灵奖--迈克尔·斯通布雷克简介
- 什么是内存屏障?,为什么需要内存屏障?
- Win下制作U盘安装盘一
- USB gadget(1)----controller driver
- 给计算机老师致歉信,学生给老师的道歉信(15篇)
热门文章
- [C/C++]随机生成信息,并保存到文件中
- 如何轻松成为年薪20万的程序员 ——致埋头撸码的程序员
- LeetCode 49 反转字符串
- access工资明细表_如何用asp.net和access开发简单工资查询系统
- 基于Matlab的双目视觉三维重建技术
- poj1734 Sightseeing trip (输出最小环路径)
- 毕业论文章节标题或摘要与页眉距离不同——解决方案
- CCS error: symbol trace buf is defined multiple times
- python 摄像头拍照是反的,Python/OpenCV网络摄像头向后移动
- Swift学习笔记|swift基本语法