zoukankan      html  css  js  c++  java
  • 接口测试-HTTP重点知识及 测试工具

    1.HTTP请求

    从资源的角度,包括Header和Body两部分:

    1.1 HTTP Header

    分为:General header 通用报头
    Request headr 请求报头
    Response Header 响应报头
    Entity header 实体报头
    Header包含的内容有:
    Accept:指定客户端能接收的内容类型,发送端既客户端希望接受的数据类型
    Accept-charset:浏览器可接受的字符编码集
    Authorization:HTTP授权的授权
    Content-type:请求的与实体对应的MIME信息,既客户端实际接收的实体类型。
    Referer:先前网页地址,当前网页紧随其后,既来路。

    1.2 Content-type

    特别说明:Content-type,主要在POST接口中使用,目的:告知服务器端如何处理请求的Data,以决定浏览器将以什么形式,什么编码读取这个文件。
    enctype属性:规定在发送到服务器之前应如何对表单数据进行编码,在POST接口中,其值就是Content-type值。
    主要有以下类型:
    .application/x-www-form-urlencoded:请求默认方式,任何浏览器都支持,数据是以key-value键值对,对数据做序列化处理。
    .application/json:好处:前端不需要知道数据格式复杂性,只要标准JSON格式即可,数据可以使复杂的嵌套关系,有多层Data。
    .multipart/form-data:向服务器发大量数据,可以使用表单方式,既可以发送文本数据,也支持二进制数据上载。处理:生成一个boundary用于分割不同字段,最后将数据转化为一条信息。
    设置建议:
    .Restful接口(json格式):一般将Content-type设置为application/JSON;charset=UTF-8
    .文件上传:设置为multipart/form-data
    .普通表单上传:设置为application/x-www-form-urlencoded

    1.3 HTTP协议请求响应模型

    采用了三层结构,与《软测之魂》中提到的三层设计法提到的三层结构相同,即分为:用户接口层,内部接口,系统接口。
    响应模型
    其中,针对客户端:可以开展功能测试,性能测试,自动化测试
    API接口:开展接口测试,功能测试,性能测试,自动化测试
    DB层:对开发的sql语句进行性能测试
    体会及感悟:客户端发起的请求,其中一部分业务逻辑校验在API层进行实现,比如:名称长度,有哪些字符组成。而数据一致性的校验放在后台进行,比如用户名是否存在.

    1.4HTTP与HTTPS区别:

    HTTP协议以ASCII码传输,建立在TCP/IP之上,但HTTPS基于SSL/TLS
    协议层次

    1.5 cookies

    Cookie通常也叫做网站cookie,浏览器cookie或者httpcookie,是保存在用户浏览器端的,并在发出http请求时会默认携带的一段文本片段。它可以用来做用户认证,服务器校验等通过文本数据可以处理的问题。
    cookie的用途:
    a.会话管理
    1.记录用户的登录状态是cookie最常用的用途。通常web服务器会在用户登录成功后下发一个签名来标记session的有效性,这样免去了用户多次认证和登录网站。
    2.记录用户的访问状态,例如导航啊,用户的注册流程啊。
    b.个性化信息
    1.Cookie也经常用来记忆用户相关的信息,以方便用户在使用和自己相关的站点服务。例如:ptlogin会记忆上一次登录的用户的QQ号码,这样在下次登录的时候会默认填写好这个QQ号码。
    2.Cookie也被用来记忆用户自定义的一些功能。用户在设置自定义特征的时候,仅仅是保存在用户的浏览器中,在下一次访问的时候服务器会根据用户本地的cookie来表现用户的设置。例如google将搜索设置(使用语言、每页的条数,以及打开搜索结果的方式等等)保存在一个COOKIE里。
    c.记录用户的行为
    最典型的是公司的TCSS系统。它使用Cookie来记录用户的点击流和某个产品或商业行为的操作率和流失率。当然功能可以通过IP或http header中的referrer实现,但是Cookie更精准一些。

    2.PostMan

    Chrome浏览器插件,注意:安装POSTMAN前先安装net4.5

    2.1PostMan安装包

    下载地址:(https://www.postman.com/downloads/?)

    2.2PostMan常用测试功能

    .Collections:集合,可以管理测试用例
    .Enviorment:创建不同测试环境,并依据不同测试环境执行不同测试。
    .Tests:对测试请求设计结果检查项,用于验证测试请求(注意是Java Script语言格式)
    .Body:构建POST请求,其中有四类数据格式:form-data:key-value格式;
    x-www-form-urlencoded
    raw:使用JSON格式,使用最多。
    binary:导入文件格式。
    注意:在PostMan设置URL时,要指定Content-type,默认是x-www-form-urlencoded

    3.Jmeter

    Jmeter是开源的接口测试工具及性能测试工具,是Apache的工具。
    其优点:
    1.可以测试数据库的性能,比如:MySQL(关系型),MongoDB(非关系型)
    2.测试HTTP协议功能和性能;
    3.测试FTP协议功能与性能;
    4.支持二次开发,可自定义JAVA组件开发,方便性能代码的统一管理。

    3.1Jmeter基本知识

    Jmeter3.0需要安装JAVA 7,安装包分源码包src.zip,和绿色编译包*.zip
    安装包路径:(https://jmeter.apache.org)
    安装完后,配置环境变量:
    Jmeter环境变量
    启动Jmeter:windows下,进入bin目录,执行Jmeter.bin;
    Linux下,执行Jmeter.sh
    如果启动中闪退,则将系统环境变量中的变量名为JMETER_HOME的系统变量删除,再启动。

    3.2 Jmeter中乱码问题解决

    1.方法一,修改配置文件Jmeter_properties
    Jmeter字符编解码配置:在配置文件Jmeter_properties中,搜索encoding,将其值从ISO-8859-1修改为UTF-8
    2.方法二,在Jmeter中,将content_type修改为UTF-8
    3.方法三,“线程组-后置处理器-BeanShellPostProcessor”,prev.setDataEncoding("UTF-8")
    补充说明:如果浏览器中显示中文出现乱码,则可通过“浏览器”-“设置”-“编码”-“选UTF-8”(IE浏览器设置)

    3.3 Jmeter常用功能

    3.3.1Jmeter基本功能

    1.创建测试计划:使用Jmeter进行测试的开始,也是Jmeter测试元件的容器。
    2.创建线程组:其中包含线程数-即并发数,线程启动间隔,循环执行次数,可用于性能测试。
    3.取样器(Sampler),即HTTP请求构建,输入web服务器IP,Port,输入HTTP请求的方法,路径及参数数据,完成HTTP请求报文的构造。
    注意:数据构造,可以使用参数化方式,具体见下面的参数化描述。
    4.监听器:用于测试结果的显示,具体有结果树和聚合报告两种形式。其中,结果树因为消耗资源,仅建议在平时的脚本调试时使用,测试结果主要依赖聚合报告。
    以上4步,完成了HTTP请求从创建到完成测试,得到测试报告的整个流程。

    3.3.2Jmeter参数化设置

    主要目的:避免每一次请求中都使用相同的参数值。通常有两种方式可以实现:
    方式1:使用函数助手
    在Jmeter中有“选项”-“函数助手对话框”-“_CSV Read”,把要导入的批量数据文件及路径写入,生成字符串,再将该字符串粘贴到URL中即可;或者使用_Random随机函数设置请求中的参数值,后面操作同前。
    方式2:"使用线程组右键“添加-配置元件-CSV Data Set Config”,输入要引用的文件,默认路径是Jmeter下的Extras路径,指定变量名(多个变量用,隔开),指定参数文件中变量分割符。

    3.3.3如何遍历参数文件中不同数据

    通过“线程组”中“线程数”的值来遍历所有数据。
    线程数即为并发数,取值与参数文件中的数值个数一致,则可以一次遍历完所有的数据。

    3.3.4其他说明

    1.使用Jmeter对Post请求测试,要在Body Data中写入Json格式的数据,另在“HTTP信息头管理器”中指定content-type=application/json,否则,当数据包含中文时,会提示415错误,即客户端发送的是错误的媒体类型,直接原因是编码格式不认识。
    2.可以使用badboy提前录制脚本,然后导入到Jmeter中,此种方式是快捷得到脚本的一种手段!实际工作中有其使用价值。
    3.Jmeter的场景设计,主要通过线程组设置来实现,有些复杂场景与逻辑控制器配置。
    场景分为单一业务场景和混合业务场景,缺少任何一种都不能准确评估系统性能,定位系统瓶颈。单业务场景,与实际生产环境差距很大,没有实际指导意义;混合业务场景,结合单业务场景,可以快速定位系统性能快速降低原因,定位性能瓶颈、系统调优。

  • 相关阅读:
    jquery+ajax+ashx。ashx的使用方法
    如何在ashx页面获取Session值
    模式DIV。
    .net 中文传参
    5分钟无操作,退出,操作方法,关闭页面
    SQL Server DATEDIFF() 函数(SQL计算时间差)
    Sql server 事务的两种用法
    正则表达式相关
    jQuery AJAX实现调用页面后台方法。调用ashx方法
    时间差(类.精确到秒).net中实现Datediff类C#
  • 原文地址:https://www.cnblogs.com/dLarger/p/12874916.html
Copyright © 2011-2022 走看看