接口测试+自动化接口测试详解入门到精通

1:json模块的使用

  字典是一种存储类型,json是一种格式(完全不同)
  json.loads()函数是将json字符串转化为字典(dict)
  json.dumps()函数是将字典转化为json字符串
  json.dump()和json.load()主要用来读写json文件函数

2:接口自动化测试概叙

  什么是接口测试:
  前后端不分离:淘宝网站(响应的数据在页面,访问响应的数据是html的)返回的是一整个html(做接口难,需要解析数据,因为返回的是整个html代码)
  前后端分离,前端和后端通过api(接口交互),返回的只是数据本身(App可能并不需要后端返回一个HTML网页)
    (市面上主流项目前后端分离走json格式的)
     发请求以json数据格式返回的,通过api接口协议前后端进行交互的

3:swagger工具能导出接口文档的

4:前端页面:

    安卓或者ios app,网页统层为前端展示(数据展示和用户的交互),
   前端框架:html,js,css,vue(展示漂亮),nodejs

5:后端:

    后台数据处理,校验,下订单等等业务处理(c语言,c++,java(大型都走java),go,python)

6:前端和后端的数据交互(接口)通过接口

    有些问题前端可能屏蔽,但是后端没有做限制,校验都没有做的,绕过前端,抓包发请求的方式攻破后端,项目可能出现问题

7:接口的概念

  接口是应用程序之间的相互调用
  接口是实体或者软件提供给外界的一种服务
  软件接口:api,微信提现调用银联的接口实现数据交互

  一种是内部接口:
    1:方法与方法之间的交互   2:模块与模块之间的交互
  一种调用对外部包装的接口
    web接口:http,https,webserver(目前大多做web接口)
  应用程序接口:soket接口  走的tcp/ip协议的
  数据库接口:

8:常用的接口方式(协议)

  1:webservice :走soap协议通过http传输,请求报文和返回报文都是xml格式的,xml格式(soapui抓包)老项目(政府和银行)
            还要解析数据,麻烦,而且速度可能有降低,通信比较严格
  2:http协议:超文本传输协议(百分之70-80都走的http协议)  get post delete put四种主要的请求方式
  3:https协议:并非是应用层的一种新协议,只是http通信接口部分用ssl和tls协议代替而已

9:什么是接口测试:

  项目需需求  
  案例:一个登录接口
    场景:产品上规定用户名6-10个字符串下划线
      测试人员在前端做了校验,通过
      后端开发人员没有做校验
    风险:直接抓包取篡改你的接口,然后绕过验证,通过sql注入直接随意登录
    危害:公司损失
  接口测试是市场的主流需求

10:接口测试目标

  可以发现客户端没有发现的bug,(隐藏的bug)(提交订单,前端屏蔽了后端没有,可以随便乱填的)
  及早爆出风险(保证质量正常上线)
  接口稳定了,前端随便改
  最重要加内存系统安全性,稳定性

11:接口自动化测试概叙(怎么做)  (接口跑的是协议层。ui定位的是元素)

  1:项目业务(了解项目业务)
  2:接口文档(api文档)
  3:接口用例
  4:自动化脚本(根据接口文档和接口用例)
  5:pytest框架  重点
  6:调试执行     重点
  7:allure报告
  8:结果分析
  9:持续集成

12:http协议概述

   一:http响应报文包含四部分:如上图
    1:请求行:主要包含信息:POST (请求方法)/search(请求url) HTTP/1.1 (http协议及版本)

  二:http请求报文包含四部分:如上图
    1:请求行:    POST (请求方法)/search(请求url) HTTP/1.1 (http协议及版本)
    2:请求头       请求头,项目可能有防爬操作,python等语言请求被屏蔽,所以可能需要加头伪装
    3:请求空行
    4:请求体(请求正文)

  

  三:通过谷歌浏览器F12分析http报文(如上图)  
     Host : 主机ip地址或域名
    User-Agent :用户客户端,比如说操作系统或者浏览器的版本信息,
              (客户端相关信息,如操作系统,浏览器信息)可能拿到User-Agent去做兼容的,
             服务器拿到User-Agent服务器生成兼容客户端的文本
             浏览器需要服务器发回兼容我浏览器的版本,服务器拿到信息作一个判断,
    Accept: 接收的意思,指定客户端接收信息的类型,(我想接收的是一个图片还是html还是json还是一个xml文档告诉服务器,服务器对应返回)
         如imag/jpg/,text/html,有时候我们一个接口给很多系统公司去用,这个系统可能想要的xml就告诉服务器你给我传递xml数据
         有些公司想要的是json数据(主流都是json格式)告诉服务器你给我json
         这里可以在请求头域设置Accept告诉服务器我需要的内容的格式
    Accept-Charset :客户端接收的字符集,客户端接收字符集告诉服务器:如gb2312,iso-8859-1,utf-8
    Accept-Encoding: 可接受内容的编码,如:gzip压缩格式, deflate
               (为了方便进行内容的传输,节省传输时间,提供传输效率,可能进行一些编码和压缩,节省传输流量)
    Accept-Language:接受的语言,如Accept-Language: zh-CN,zh;q=0.9 ,做国际化可以识别这里,中文环境给我中文数据
    Authorization:客户端提供给服务端,进行权限认证的信息(进行权限认证的,请求的话有个鉴权的这样的功能,
             不是说想什么服务器就发给什么,有可能需要进行一些基本的认证,认证信息可以放在这里)
    Cookie:携带的cookie信息 非常重要的字段(我登录成功之后就会在本地保存一些cookie,保存一些文本,
         下一个请求的时候直接把cookie发给服务器,告诉服务器我已经登录了,有一个证明在这里cookie携带回去)做校验的
    Referer:当前文档的URL,即从哪个链接过来的(我这个请求到底从那个连接过来的)
          比如:Referer: http://test.lemonban.com/ningmengban/app/login/login.html登录的这个连接
          是从login/login.html从我们这个网站的首页来的,防止盗链,把这个链接盗取了用到自己网站去,
          或者说可以统计我这样的一个请求到底来自于那个页面,
    Content - Type:请求体内容类型,请求构建以什么形式传递参数的,如:x-www-form-urlencoded表单形式
             (往服务器提交内容,告诉服务器我提交的内容是什么格式的,表单,json格式,xml格式)
    Content - Length:数据长度 ,(提交内容的数据长度有多少个字节告诉服务器,防止进行请求的篡改)
    Cache-Control:缓存机制,如Cache-Control:no-cache :别给我缓存 ,有些请求会缓存到本地的,
    Pragma:防止页面被缓存,和Cache-Control:no-cache作用一样(1.0中间的,为了兼容和1.0) 

  四:cookie 
    第一次访问网站,如果网站有cookie机制,访问第一个请求的时候返回set-cookie
    set-cookie设置cookie值,通过响应数据的头,响应头里面通过set-cookie把值给客户端,获取cookie里面对应的值    

 13:fiddler(抓包工具的使用)

  fidder的使用技巧(能抓包,查看抓包数据):
    能抓取https要设置证书:(免费的,开源的,能抓很多对应消息,app的也可以)
    fidder是一款免费,灵活,操作简单,功能强大的http代理工具,是目前最常用的http抓包工具之一
    可以抓取所有的http/https包,过滤会话,分析请求详细内容,伪造客户端请求,篡改服务器响应,重定向,网络限速,断点调试等功能
  fiddler的工作原理:
    正向代理(正向代理服务器,通过浏览器发送请求以前是直接发给服务器,fidder转发(代理服务器),
    浏览器请求发给fidder代理服务器,fidder代理服务器转发给服务器,
    服务器数据转发给fidder代理服务器,代理服务器发给浏览器

  正向代理:
    转发浏览器的请求和响应,抓包工具 对客户端透明 
  反向代理:
    nginx——负载均衡的——性能  一个服务器
    tomcat    db(现在用户级别很大,一个tomcat搞不定,需要帮手,三个tomcat分担流量(怎么协调加nginx--负载均衡))
    浏览器发请求过来,不知道请求发给谁,请求量很大,通过nginx把请求分发到各个tomcat里面去,避免的一个tomcat承受不住

14:接口工具对比:(掌握fidder)

  fidder       免费的http查看工具,系统代理,工作在应用层          独立运行(是)      支持移动设备(是)     是否收费(否)
  wireshark      网络抓包,监听网卡,工作在网络接口层               独立运行(是)      支持移动设备(否)     是否收费(否)
  httpwatch      集成到IE,chrome中的网页数据分析工具             独立运行(否)      支持移动设备(否)       是否收费(基础版/专业版)
  charles        http代理,http监控,http反代理,查看http通讯查看信息工具    独立运行(是)      支持移动设备(是)       是否收费(是)
  ByrpSuite      http代理,用于工具web应用程序的集成平台,          独立运行(是)      支持移动设备(是)      是否收费(是)
             包含了很多工具,抓包,漏扫,爆破,黑客必备工具之
  wireshark--底层,网络层--用这个

15:websocket: (和http一样是传输协议)

    websocket传输协议实时性强 
  使用场景: 聊天系统 股权交易 直播--部分业务

16:cookie详解

  服务器发给客户端:请求的响应数据  响应头:Set-cookies   本地存放cookies攻击  
  cookie缓存身份的概念:a请求发给服务器,a第一个请求没有带cookie,比如登录操作一开始请求不带cookie的,服务器响应把cookie放到响应头:set-cookie
              浏览器拿到set-cookie会自己进行处理,然后第二个请求发出去,就会带上cookie进行校验
              浏览器访问里面自己传递,但是接口请求是不会自己带cookie的,需要提取cookie
              a响应头里面把cookie拿出来,放到一个变量,下一个b请求把cookie放到请求头
  不同用户的cookie不一样的,不然会冲突的
  cookie里面包含很多内容:但是最常见的是sessionid(会话id)
  简单项目里面有cookie就差不多了,但是有的项目里面cookie里面带token-复杂点
  cookie是分站点的,站点和站点之间的cookie是相互独立的
  浏览器的cookie是保存在浏览器的某个位置
  服务器端可以通过:响应头中的set-cookie参数,对客户端的cookie进行管理
  浏览器的每次请求,都会把该站点的cookie发送给服务器进行匹配校验

  实现登录:cookie+session配合使用
    cookie不是只有登录,发送请求访问首页都有cookie。
    cookie放在浏览器本地的(缓存里面),sessionid放在服务器的上
    sessionid必须寄生在cookie里面,搭配cookie一起使用(sessionid值一般在cookie里面传过去的)

17:sessionid:翻译为会话id

  sessionid就是会话id 身份验证-存放到 服务器
  session是一个对象,是服务器产生的,保存在服务器中,
  session有自己的管理机制,包括session产生,销毁,超时等
  session id是session对象的一个属性,是全局唯一的,永远不会重复

18:cookie和sessionid合作流程(常见的方式)

  一:快速理解
    用户登录成功服务器创建session,返回给客户端,客户端浏览器把session保存到它的cookie里
  二:过程描述
    登录成功服务器立马创建session,并通过(响应头)中的set-cookie属性把session返回给客户端
    浏览器把响应头中的set-cookie内容保存起来,存在浏览器自己的cookie中
    以后浏览器每次发送请求时,都会把该站点的全部cookie封装到请求头中,传递给服务器 

19:tooken:令牌

  token:
    令牌(令牌代表身份信息,身份标识----身份校验(数据库db校验,每发个请求就需要校验很麻烦,避免频繁访问数据库,token就表示身份))
    cookie和token(cookie里面最关键的就是session id值)
  cookie里面有时候有sessionid和token值
    一般为了减少对数据库的访问,校验,数据库的账号密码,
    做个令牌:token需要身份校验,账号密码校验,获取token值(返回token字符串))
    token也是由服务器参数的,存在服务器的内存或者硬盘中
    有一套产生规则,会涉及到加密算法

  用token来实现登录
    开发提供一个获取token接口,根据用户名+密码,获取一个token值--返回一个token(字符串)

  token值服务器通过什么发给客户端  
    通过响应头传给客户端           次要
    通过响应消息体传给客户端        主要
    通过cookie传递给客户端          很少   

  token使用场景:
    服务器访问的同时,vip学员访问服务器,怎么保证vip学员的权限,普通用户也能访问,vip学员的访问的时候加一个验证,vip访问的同时加个验证,
    访问网站同时校验身份,必须去vip官网去认证,通过vip账号密码拿到token值,去访问服务器时候时候token带上。
    做二次校验,身份的校验,不是每个人都能访问这个网站,只有vip学员才可以,
    访问之前vip学员拿vip账号去网站认证一下,获取到token值然后每次访问都带上这个token就可以了,
    这个token可以在cookie里面,token放头headers里面和cookie里面都可以,这时候token值,cookie里面自行加token值,自行组装
    额外增加某些校验参数,cookie里面可以加一些值,如token值,自行封装cookie  
    认证的时候token身份二次校验,token放cookie里面和头里面都行(校验是不是vip学员)  

19:接口测试数据格式

  一:接口自动化测试数据源(测试用例来源哪里)测试用例一般存放在哪里
    1:excel测试用例
    2:yaml格式用例
    3:csv
  二:自动化脚本中的数据类型:
    1:表单格式:
        [urlencoded格式]:又叫form格式,或者是x-www-form-urlencoded格式(type类型为表单形式,传数据表单形式)
        表单格式是键值对组成的,键和值之间用=,多个值之间用&  如:name=zhengsan&age=16
    2:json格式(str字符串:键值对类型的字符串) 
        json有对象,数组两种结构,有字符串,数字,逻辑值,空值四种数据类型
        用大括号{}表示对象,对象由属性组成的,属性由键值对组成的,键和值用冒号隔开,属性之间用逗号隔开,键必须用双引号引起来
        用中括号[]表示数组,数组由单独的值组成
        json灵活,json可以嵌套

20:json格式详解

  对象:大括号表示,对象由属性组成,属性由键值对组成,键和值对之间用冒号隔开,属性之间用逗号隔开,另外键必须双引号
     {"姓名":"姚明","年龄":38}
  数组:用中括号表示
     ["小明","小李","小百"]
     [{"姓名":"姚明","年龄":38}]
  嵌套:对象中可以再嵌套对象和数组
    {"姓名":"姚明","年龄":38,"家禽":["小明","小李","小百"]}

21:了解教管系统:(在线管理系统)(前后端分离的) 什么框架,什么配置

  项目描述:
    教师管理系统是一款在线管理学生课程的一款软件
  主要功能包括:
    课程:包含了所有课程名和课程详情
    老师:可以查看老师姓名,授课内容及授课班级
    学生:包括班级号,班级包含课程,所属学生和班级学生进度
  框架结构:
    后端架构:cherrypy与django结合
    diango:包含了所有的课程名和课程详情
    cherrypy:使用cherrypy作为diango的development server
  数据库:
    sqlite
  前端:
    html,js,css

22:python自动化过程中配置文件格式

    配置文件格式:text(很少用),cnf,ini,yaml,excel(很少用),.py也可以

23:简单的接口测试源代码

config.py            #配置文件
    #time:2020/10/5
    HOST="http://127.0.0.1:80"           #等同localhost,但是建议写localhost,写url全称,项目换了环境只要改这个配置url就行
    http://127.0.0.1:80/mgr/login/login.html
    http://127.0.0.1:80/mgr/login/login.html
    http: // localhost / mgr / login / login.html
    账号和密码:auto / sdfsdfsdf

login.py

    # 登录接口
    import requests                      #请求库使用request
    import json
    from api接口自动化.teachTest.config import HOST
    #user_headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"}

    # 2:url路径--考虑可维护性(各个环境ip不同,不同环境测试,增加配置文件)
    url =f"{HOST}/api/mgr/loginReq"

    #3:头部,请求头---头都是字典类型的
    header={"Content-Typ":"application/x-www-form-urlencoded"}         #type类型

    #4--请求体body,最常用都是字典写的(传表单形式可以字典来做)
    payload={"username":"auto","password":"sdfsdfsdf"}
    print(type(payload)
  • 8
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
JMeter是一款功能强大的开源性能测试工具,广泛应用于接口测试。2021年最新的JMeter接口测试入门精通实战主要包括以下几个方面: 1. JMeter基础知识:首先要了解JMeter的基本概念和工作原理,包括测试计划、线程组、取样器、监听器等。掌握JMeter的基础知识对于后续的实战非常重要。 2. 接口测试准备:接口测试前需要做一些准备工作,比如准备测试环境、了解接口文档、分析接口性能要求等。这个阶段还可以学习如何使用JMeter的代理功能来捕获接口请求。 3. 创建测试计划:在JMeter中,测试计划是测试的基础,可以在测试计划中添加多个线程组,设置线程数、循环次数等参数。通过设置各种配置元件,如HTTP请求、参数化、断言等,来模拟实际接口请求。 4. 编写测试脚本:使用JMeter的录制功能,可以将浏览器的请求转化为JMeter的测试脚本。也可以手动编写测试脚本,根据接口文档构建请求并添加断言、参数化等。同时可以学习如何使用JMeter的函数和变量,实现参数化和数据驱动测试。 5. 断言和验证:在接口测试中,需要对返回结果进行断言和验证。可以使用JMeter提供的多种断言器对返回结果进行校验,如响应码、响应时间、返回值等。同时,可以学习如何使用JMeter内置的验证器,如正则表达式、xpath等。 6. 性能监控和分析:通过监听器可以查看测试结果,包括响应时间、吞吐量、错误率等。还可以学习如何使用JMeter的插件和扩展,实现更详细的性能监控和分析,如生成图表、分析报告等。 7. 脚本优化和调试:在实际测试过程中需要不断优化和调试测试脚本,提高测试效率和可靠性。可以学习如何使用JMeter的调试功能,查看请求和响应的详细信息,解决测试中的问题。 通过以上实战,可以逐步提升自己的JMeter接口测试能力,从入门精通。但需要注意的是,JMeter是一个非常强大但也复杂的工具,需要付出一定的学习和实践,才能更好地掌握和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值