接口测试

JMeter中Websocket接口测试

自作多情 提交于 2019-12-02 02:32:14
一、Websocket协议简介 Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说; HTTP协议: HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。 在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不 能主动发起。 Websocket协议: WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样; WebSocket只需要经过一次HTTP请求,就可以做到源源不断的信息传送了(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你) 二、添加Websocket插件 在 jmeter 中测试websocket协议接口,需要先安装websocket插件和依赖包; 需添加的插件为: JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar 插件依赖的jar包为

经验分享:程序员如何快速定位问题(BUG)

烂漫一生 提交于 2019-12-02 01:46:56
让我掉下眼泪的 不止内存泄漏 让我夜夜不眠的 不止你的需求 明天还要改多久 你攥着我的手 让我感到为难的 是善变的需求 发布总是在半夜 回滚是永远的愁 错误(Bug)随时的暴漏 困扰着我心头 作为程序员,以上这些场景你一定都经历过。今天就来聊聊如何快速定位问题。 先划重点, 下文所写都是一家之言,本人工作经验不多,语言表达能力有限,如果写的不好,还望轻喷。另外,本文所讲都是站在Java后端开发者的角度 。 背景 下文所讲内容,都会围绕以下几个真实案例来做举例分析,先描述一下具体案例: 案例1:App首页白屏。 详细描述:App、H5、小程序首页都是由同一个后端接口负责提供数据。测试大佬反馈说,App首页白屏了。 案例2:小程序商品会员价显示不正确。 详细描述:测试大佬反馈,某商品会员价显示不正确,客户端展示会员价为0元。为什么会员价0元是不正确的呢?因为我们在系统中做了限制,会员价必须大于0元。 案例3:优惠券领取不了了,弹窗显示“领取失败,该优惠券仅限新人领取”! 详细描述:这是一个领取优惠券的功能。用户可以通过该活动领取优惠券。用户在领取优惠券时,页面弹窗提示:”领取失败,该优惠券仅限新人领取“。同时,测试大佬反馈说,这个账号就是一个新人账号,是刚刚注册的用户。 案例4:某用户购买的xx评测专栏的评测课无法打开。 详细描述:评测专栏是我司的一个特色专栏,在这个专栏中

java bean 属性验证框架 valid

不打扰是莪最后的温柔 提交于 2019-12-02 00:09:08
项目介绍 java 开发中,参数校验是非常常见的需求。 但是 hibernate-validator 在使用过程中,依然会存在一些问题。 特性 支持 fluent-validation 支持 jsr-303 注解 支持 i18n 支持用户自定义策略 支持用户自定义注解 开源地址 valid 创作目的 hibernate-validator 无法满足的场景 如今 java 最流行的 hibernate-validator 框架,但是有些场景是无法满足的。 比如: 验证新密码和确认密码是否相同。(同一对象下的不同属性之间关系) 当一个属性值满足某个条件时,才进行其他值的参数校验。 多个属性值,至少有一个不能为 null 其实,在对于多个字段的关联关系处理时,hibernate-validator 就会比较弱。 本项目结合原有的优点,进行这一点的功能强化。 validation-api 过于复杂 validation-api 提供了丰富的特性定义,也同时带来了一个问题。 实现起来,特别复杂。 然而我们实际使用中,常常不需要这么复杂的实现。 valid-api 提供了一套简化很多的 api,便于用户自行实现。 自定义缺乏灵活性 hibernate-validator 在使用中,自定义约束实现是基于注解的,针对单个属性校验不够灵活。 本项目中,将属性校验约束和注解约束区分开,便于复用和拓展。

接口测试“八重天”---RestAssured

两盒软妹~` 提交于 2019-12-01 23:47:04
要记住每一个对你好的人,因为他们本可以不那么做。               ---久节奏,慢读书 一、什么是RestAssured 偶然在逛帖子的时候发现一个接口测试框架,觉得不错,学习学习。 官方地址: http://rest-assured.io/ 那么瞧瞧官方是怎么说的: Testing and validating REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into the Java domain. 与动态语言(如Ruby或Groovy)相比,用java测试和验证REST服务要困难的多。RestAssured将使用这些语言的简单性带入java域。 可能前面也有记录过HttpClient相关的帖子,但是个人觉得RestAssured更为简单、便捷、易读! 二、RestAssured常规用法 官方文档: https://github.com/rest-assured/rest-assured/wiki/Usage Maven依赖: <dependency> <groupId>io.rest-assured</groupId>

接口测试第五步 --》 拼接url

给你一囗甜甜゛ 提交于 2019-12-01 23:27:16
#!/user/bin/python3#coding=utf-8#2019/10/22 --16:15#author :huiURL = "http://localhost/&" #后期读取配置文件dicts = {"method":"get",'body': '123456', 'headers': '456789', 'agent': 'firefox'} #后期读取配置文件type_list={"type":"api"}def parse_url(data={}): item=data.items() urls="" for i in item: (key,value)=i temp_str = key+"="+value urls = urls + temp_str+"&" urls = urls[:len(urls)-1] return urlsprint (URL + parse_url(dicts))print (URL + parse_url(type_list)) 来源: https://www.cnblogs.com/yanhuidj/p/11721080.html

接口测试第四步 --》 封装excel

蓝咒 提交于 2019-12-01 23:03:45
import xlrd,jsondef open(): file = r'C:\Users\hui\Desktop\data.xlsx' # 创建data对象 data = xlrd.open_workbook(file) ck = data.sheet_by_index(0) rows = ck.nrows ''' range()函数生成一个迭代对象,索引从第一行开始以0表示,传入行值,再转换成json格式 ''' for i in range(0, rows): value = ck.row_values(i) value = json.dumps(value) print("乘客的下单信息为:\n%s"%(value)) open() 来源: https://www.cnblogs.com/yanhuidj/p/11720178.html

接口测试第一步 --》读取excel

江枫思渺然 提交于 2019-12-01 18:31:25
#!/user/bin/python3#coding=utf-8#2019/10/21 --10:04#author :huiimport xlrdfile = r'C:\Users\hui\Desktop\data.xlsx'data = xlrd.open_workbook(file) # 得到一个excel文件的book对象,并赋至一个变量sheet_names = data.sheet_names() # 获取excel所有sheet标签的名字'''print(sheet_names) #以列表形式返回print(sheet_names[0]) # 通过索引方式获取第一个sheet标签的名字''''''sheet1 = data.sheet_by_index(0) # 返回的是16进制的对象地址sheet2 = data.sheet_by_name('passenger') # 返回的是16进制的对象地址''''''# 通过索引获取sheet对象后,获取sheet中的内容sheet1=data.sheet_by_index(0)rows = sheet1.nrows # 获取总行数print(rows)''''''#通过索引获取sheet对象后sheet1=data.sheet_by_index(0)cols = sheet1.ncols # 获取总列数print(cols

测试开发工程师常见面试题(随时更新)

若如初见. 提交于 2019-12-01 18:11:54
一.功能测试用例的设计 举例: (一).我想要回家,让你给我买一张票,然后设计测试用例 答案: 1.确定需求(回家回哪,需要什么票,买什么时候的票) 2.开始测试 2.1功能测试(我去买票(买火车票,飞机票),买到票(什么时候),回来给你) 2.2可靠性测试(我去买票过程中被撞死了,票买不到怎么办,延期了,买那个点的票没了怎么办让我帮他买票的人的身份,比如是否有特殊优待,如军人,1米2以下儿童等,身份证丢了,或者票丢了,责任划分) 2.3可维护性测试(票是否可保存完好) 2.4兼容性(还不同人的去买,我中间招人去买,我坐车走路) 2.5算法测试(我通过不同的渠道买票花费的时间) 2.6竞品测试(别的人怎么买的票) 2.7安全性测试(身份信息保密) 2.8性能测试(一个身份证买多张票,同时多张身份证买多张票) 二.工作测试流程: (一).功能测试流程 1.需求评审(重点,你发挥的作用是什么,需求可执行性,关联影响的功能模块,异常情况处理) 2.评估测试时间(测试计划) 3.测试用例设计(正交,边界值,等价类。。) 4.用例review(领导,开发,产品) 5.提测(确认开发进行过自测,功能主流程畅通,然后开始介入测试)(产品开发测试一块走流程) 6.codediff(代码改动点,从根源发现开发的问题,代码中明显测试代码(return,写死值), 公共静态变量在发生高并发时容易出问题

Python接口测试框架实战与自动化进阶 学习 教程

假如想象 提交于 2019-12-01 15:13:07
Python接口测试框架实战与自动化进阶 学习 教程 一、fiddler在工作中的运用 1、如何抓接口  抓紧手机端接口   ①、在电脑终端输入:ipconfig ,找到电脑ip   ②、打开手机,连接WiFi,进入WiFi详情,改用手动代理,将ip设置为电脑端的ip,端口默认(8888)     ③、打开fiddler,找到并打开Fiddler Options ,选择Connections栏,做如下改动:    这样就可以尝试抓取接口了。 注:Python requests中文文档参考: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 二、unittest使用 python自带的包 1、unittest简单使用 使用unittest的test类:TestCase ,重载相关方法: import unittest class TestMethod(unittest.TestCase): @classmethod def setUpClass(cls): print('重载setUpClass类方法,类实例化(初始化)时调用') @classmethod def tearDownClass(cls): print('重载tearDownClass方法,所有方法执行完后调用') def setUp

接口测试一

☆樱花仙子☆ 提交于 2019-12-01 11:58:52
什么是接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 为什么要做接口测试? 由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。 自我理解: 更容易实现持续集成 自动化测试性价比更高,比UI更加稳定 大型系统更多更复杂,系统模块越来越多 BUG更容易定位 降低研发成本 节约时间 提高工作效率 提高系统的健壮性 我们既然要做接口测试就要明白什么是接口? 理论:接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。 自我理解 :接口就是接水出的水龙头。任何人都可以使用它接水,但是必须要符合接水的条件,它可以把需要的水(数据)按所需传递到不同的使用环境中,而且还不会产生过多的联系和遗漏 接口无非有两种,一种是内部接口,一种调用对外包装的接口 内部接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,例如下订单,首先你需要登录,然后调用下订单接口