day01

--------------------------------------day01
1、网站组成:UI设计

       前端:

          web:html  css  js

          移动端:ios:swift、oc

              Android: 

       后端(服务端):

           java

          python

          php

       接口:前端跟后端的交互

2、接口:一种是程序内部的接口,一种是外部的接口

    程序内部的接口:模块跟模块之间的交互,两个开发之间,开发测试

    程序外部的接口:测试的范围,

            为啥页面测试,还需要接口测试:

                      因为1、前端跟后端分开开发的 

                         2、越底层,越早发现bug,修复成本越低  

                         3、模拟各种情况,金额输入负值

3、接口测试就是功能测试

http://doc.nnzhp.cn         xiaohei       xxxxxx

get请求,页面直接可以调用,不用借助其他工具

http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑

多个值,后面加&xxx=123

两个系统,一个java开发的

json前是xml 一种通用的数据类型,webservice也是这种类型    <name>闫志飞</name>

json  一种通用的数据类型,所有的语言都认识他,比xml更方便

一个python的

{

"key" : 0,

}

4、get请求:页面直接可以调用,不用借助其他工具

      向服务端获取数据的

      数据放在url里面

  post请求:

      向服务端发送数据的。

      数据放在body里面

http请求

    请求头

    请求体(post请求有)

url编码:便于传输

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&srcqid=1581818075384111656&tn=88093251_4_hao_pg&wd=%E5%93%88%E5%93%88%E5%93%88  #哈哈哈

5、http状态码

1)200 2开头便是这个请求发送成功

2)300 3开头的代表重定向,api.nnzhp.cn

3)400 400代表客户端发送的请求的语法错误

4)500 5开头代表服务异常

6、借助postman发送登录的post请求

post--http://api.nnzhp.cn/api/user/login--body--from-data--username:niuhanyang--passwd:aA123456

7、添加学生信息,json,

post--http://api.nnzhp.cn/api/user/gold_add--body--raw--{"key":"value","key1":"value"}

8、学生金币充值,post

post--http://api.nnzhp.cn/api/user/gold_add--headers--cookie niuhanyang=9983816adfs83c9--body--stu_id:112--gold:10

9、获取所有学生信息,get,refer判断网址是不从本网站翻过去的,不是跳转的网址

get--http://api.nnzhp.cn/api/user/all_stu--headers--Referer--http://api.nnzhp.cn/

10、文件上传,post

post--http://api.nnzhp.cn/api/file/file_upload--body--form-data--file file 选择文件

11、post、get区别?

1)get长度限制

2)post请求比get安全

post请求:数据放在body里头,get请求数据是放在url里面

12、上传文件:

  入参是json:  传cookie  header:

13、通用接口用例设计

通过性验证:接口是否好使,正常传入

参数组合:操作商品的接口,应该填name、grade、phone,只传一个,两个,三个

接口安全:

1)绕过验证,充值300,可以充值-300;

2)绕过身份授权,普通用户无法删除用户,不能获取管理员身份授权;

3)参数是否加密,别人截取是否加密

4)密码复杂程度

异常:必传非必传,参数类型,入参长度。

14、接口测试用例模板

项目-模块-用例id-用例描述-请求url-请求方式-请求数据-前置条件-预期结果-请求报文-返回报文-测试结果-测试人员

15、SoupUI

右键Projects--Project Name:hahha--initial WSDL:http://www.webservicex.net/globalweather.asmx?wsdl--Create Requests勾选--OK--

GlobalWeatherSoap--GetCitiesByCountry--Request 1--<>?<> 问号改成China--启用绿色按钮--

16、JMeter

测试计划--添加--Threads(Users)--线程组

线程数:200:多少个并发,设置几个

Ramp-Up Period(in seconds):0:多少秒内把线程数启动起来

循环次数、永远:1:线程的循环次数

调度器配置:

持续时间(秒):压测的时间:900秒(15分钟)

启动延迟(秒):60:60秒之后开始

启动时间:开始时间年月日  时分秒

结束时间:结束时间年月日  时分秒

线程组右键--添加--Sampler--HTTP请求

名称--获取学生信息接口--ip:api.nnzhp.cn--方法:GET--路径:/api/user/stu_info--添加--名称:stu_name--值:小黑

线程组右键--添加--监听器--查看结果树--启动

查询结果又乱码的方法:

jmeter的bin目录下--jmeter.properties--
JSyntaxTextArea #前面去#号                                                    #解决jmeterbody里面中文显示不出来
sampleresult.default.encoding 改成UTF-8以后要把#号去掉      #修改jmeter中文乱码
jemter软件中,http请求-conttent encoding:utf-8                     #jmeter页面
jxz?allowMultiQueries=true&characterEncoding=UTF-8            #连接JDBC

http请求-名称:登录--IP:api.nnzhp.cn--POST--路径:/api/user/login--名称:username--值:niuhanyang--名称:passwd:--值:aA123456

http请求--添加学生(json)--IP:api.nnzhp.cn--路径:/api/user/add_stu--Body Data,{“name”:"xiaohei","grade":"hahaha","phone":"134455555555","sex":"zhifei","age":"sfsfds","addr":"sfsdfsfsa"}

http请求--添加金币--IP:api.nnzhp.cn--POST--路径:/api/user/gold_add--stu_id:112--gold:500--添加金币右键添加--配置元件--HTTP Cookie管理器--名称:niuhanyang--值:sdfd23423sdfasfaasf--域:api.nnzhp.cn--启动

http请求--复制获取学生信息接口--获取所有学生信息--添加--配置元件--HTTP信息头管理器--名称:Referer--值:http://api.hhzhp.cn/

http请求--上传文件--IP:api.nnzhp.cn--POST--Content encoding:utf-8---路径:/api/file/file_upload--Files UPload--文件名称:文件的绝对路径--参数名称:file--运行

上传文件的相对路径,是jmeter的bin目录下

17、jmeter参数化

线程组右键--添加--配置元件--CSV Data SetConfig---建一个文件--Filename:文件绝对路径--Varible Names:phone_num(变量)--Delimiter:,(逗号分隔)--添加学生请求中的Body Data下的phone字段,"phone":"${phone_num}"

配置中多个变量,加逗号隔开

Recycle on EOF?:False,是否从头开始

Stop thread on EOF?:True的话,8条数据,线程组中次数改成100次,

Sharing mode:All threads

另外一种参数化

选项-函数助手对话框--功能:__Random--1到9999--生成--复制--在body参数中粘贴

选项-函数助手对话框--功能:__time--yyyyMMddHHmmss--生成--复制--在body参数中粘贴

线程组--添加--配置元件--用户定义的变量--添加--名称:test_host--值:api.nnzhp.cn--名称::dev_host--值:dev.nnzhp.cn--description:测试、开发环境

把添加学生信息的IP:${test_host}

18、断言,检查返回的结果

添加学生信息右键--添加--断言--响应断言--添加--1000

包括、匹配、Equals、Substring

19、关联

登录右键--添加--后置处理器--jp@gc - JSON Path Extractor--Destination Variable Name:sign--JSONPath Expression:$.login_info.sign--在添加金币下HTTP Cookie管理器的值改为:${sign}

接口签名:

  cookie:存在用户本地的一个键值对

      key-value

      用户名、密码

  session:存在服务端的一个键值对

另外一种关联:

登录右键--添加--后置处理器--正则表达式提起器--引用名称:sign2--正则表达式:"sign":"(.*)",--模板:$1$--匹配数字,取第几个:1--缺省值:NONONO--添加金币的HTTP Cookie管理器中的值:${sign2}

():封装了带返回的匹配字符串.

    ,:匹配任何单个字符串

    +:一次或多次。

    ?:不要太贪,在找到第一个匹配项后停止。

    .*:代表任意次

20、jmeter连接数据库

211.149.218.16

3306
jxz
xxxxxx

测试计划--浏览--添加jar包:mysql-connector-java-5.1.7-bin.jar--

线程组右键--添加--配置元件--JDBC Connection Configuration--Variable Name:yzf--Database URL:jdbc:mysql://211.149.218.16:3306/jxz?allowMultiQueries=true&characterEncoding=UTF-8-----JDBC Driver class:com.mysql.jdbc.Driver--Username:jxz----Password:xxxxxx

线程组右键--添加--Sampler--JDBC Request--Variable Name:yzf--Query Type:Select Statement---写sql语句:select *from bt_stu;

如果是修改、删除,Query Type:Callable Statement

 

posted @ 2017-12-16 01:00  zfzhp  阅读(300)  评论(0编辑  收藏  举报