麻油跟香油什么区别| 去海边穿什么衣服拍照好看| 64年出生属什么| 时至今日是什么意思| 大姨妈吃什么| hip是什么意思| 做爱吃什么药| 怀孕第一个月吃什么对胎儿好| 咳嗽打什么点滴效果好| 什么叫自闭症| 时机是什么意思| 每天吃维生素c有什么好处| 贝壳吃什么食物| 澄面是什么面粉| 5.19是什么星座| 减肥适合吃什么水果| 露营需要准备什么东西| 咽后壁淋巴滤泡增生吃什么药| 红鸾星动是什么意思| 庭长是什么级别| 脸上出油多是什么原因| 薤白是什么东西| 造影是什么| 阳气最强的树是什么树| 谷草转氨酶偏高是什么原因| 扁桃体发炎能吃什么水果| 反流性食管炎吃什么中成药最好| 什么叫玄学| 7月25号是什么星座| 为什么狱警离婚率高| 梦到砍树是什么意思| 夏令时什么时候开始和结束| 潇字五行属什么| 未曾谋面什么意思| 来月经量少吃什么可以增加月经量| 正财代表什么| 发烧挂什么科| 4.6什么星座| 四次元是什么意思啊| 为什么一躺下就鼻塞| 红军为什么要长征| 康桑密达是什么意思| 头发不干就睡觉有什么危害| 出淤泥而不染是什么花| 冠状动脉ct检查什么| 233是什么意思| 辣椒红是什么| 脑膜炎吃什么药| 熬粥用什么锅好| 旖旎是什么意思| 逆时针是什么方向| 介怀是什么意思| 宫颈肥大伴纳氏囊肿是什么意思| 核医学科是检查什么的| 什么零食好吃| 金目念什么| 孩子为什么不听话| 支气管疾患是什么意思| 猪肉和什么菜搭配最好| 煜字五行属什么| 中队长是什么级别| 唯爱是什么意思| 子宫肌瘤什么不能吃| 芈月是秦始皇的什么人| 娇韵诗属于什么档次| 心肌缺血用什么药| 奥倍健是什么药| 什么情况需要根管治疗| 破月是什么意思| 反式脂肪酸是什么意思| 肝风内动吃什么中成药| 骨赘形成是什么意思| 小白和兽神什么关系| 嫩模是什么意思| paris是什么品牌| 子宫平位是什么意思| 外阴长水泡是什么原因| 胎菊和金银花一起泡水有什么效果| 什么的劝告| 母女丼什么意思| 11月9日什么星座| 为什么会心肌缺血| 牙龈肿痛吃什么药| 减肥中午吃什么比较好| 房性心动过速是什么意思| 夜间睡觉口干是什么原因| mcv偏低是什么意思| cv是什么| 风邪是什么意思| 肝不好的人有什么症状| 肚子为什么会胀气| 八髎区疼是什么原因| 世界八大奇迹分别是什么| 5月份什么星座| 一语道破什么意思| 脑ct能查出什么| 生花生吃了有什么好处| 咽喉痛吃什么药好得快| 杏花什么时候开| 痔疮应该挂什么科室| hpl是什么意思| 嗜酸性肉芽肿是什么病| 什么是狐臭| 月经提前10天正常吗是什么原因| 胚胎停育是什么原因造成的| 几朵花代表什么意思| 男人喝红糖水有什么好处| xswl什么意思| 阴道炎用什么药最好| 下午一点到三点是什么时辰| 狼吞虎咽是什么生肖| 胆囊肿是什么病严重吗| 4月4日是什么日子| 婴幼儿吃什么奶粉好| 白头发补什么维生素| 什么人不能爬泰山| 梦见穿山甲预示着什么| 什么酒最贵| 尿茶色尿是什么原因| 屁多又臭是什么原因| 嗓子发炎吃什么水果| 用什么梳子梳头发最好| 九牛一毛是什么生肖| 梦见爆炸是什么意思| 水仙是什么| 舌头尖有小红点这是什么症状| 泥鳅什么人不能吃| 胆固醇是什么| 尿频挂什么科| 血管炎吃什么药最有效| 花木兰代表什么生肖| 农村做什么致富| 什么头蛇尾| 梦到狗是什么意思| 粉色裤子配什么上衣好看| 腋下皮肤发黑是什么原因引起的| 闭锁是什么意思| 一个月一个太念什么| 血常规是检查什么的| jk什么意思| 尿痛流脓吃什么药| 性生活出血是什么原因| 身心交瘁什么意思| 月经期间不能吃什么| 为什么一到晚上就痒| 慢性胰腺炎吃什么药| 求购是什么意思| 最快的减肥运动是什么| p是什么意思| 纯磨玻璃结节是什么意思| 一只脚心疼是什么原因| 里长是什么官| 咸肉烧什么好吃| 双皮奶是什么| 阴蒂是什么| 早泄吃什么药见效| 1981年什么命| 为什么会紫外线过敏| 手气是什么原因引起的| 胎菊泡水喝有什么功效| 右侧卵巢多囊样改变是什么意思| 包皮红肿用什么药| 心口下面疼是什么原因| 梅长苏结局是什么| 冲正是什么意思| 武则天原名叫什么| 什么食物对肺有好处| 舌头有问题应该挂什么科| 午餐吃什么好又能减肥| 扁桃体发炎引起的发烧吃什么药| 囟门是什么| 宝石蓝是什么颜色| 肩膀上的肌肉叫什么| 什么叫智齿| 砧板是什么工作| dior是什么牌子| 皮蛋吃多了有什么危害| 注解是什么意思| 围绝经期吃什么药调理| 吃什么食物可以降低胆固醇| 梦见好多死鱼是什么意思| 低密度脂蛋白偏低是什么意思| 女汉子什么意思| 什么时候补钙最佳时间| 舌尖痛什么原因| tvt是什么意思| 冠状沟是什么| 今年30岁属什么生肖| 再生聚酯纤维是什么面料| 什么族不吃猪肉| 张韶涵什么星座| 蛇鼠一窝指什么生肖| 麦粒肿是什么原因引起的| 低血糖和贫血有什么区别| 灰溜溜是什么意思| 属羊的是什么星座| 单是什么意思| 复合维生素b片主治什么病| 输卵管不通有什么症状| 品相是什么意思| 手脚发烫是什么原因造成的| 吃小米粥有什么好处和坏处| 风湿关节炎用什么药| 伤口消毒用什么好| 呼吸胸口疼是什么原因| 梦见被猪咬是什么意思| 什么是八字生辰八字| 什么地赞叹| 热火朝天是什么意思| 山药不能和什么一起吃| 肝脓肿是什么原因引起的| 脸油是什么原因导致的| 长时间憋尿会有什么影响| 灌肠为什么能通输卵管| 贫血喝什么口服液最好| 感冒吃什么| 油漆用什么能洗掉| 糖尿病的诊断标准是什么| 92年五行属什么| 猫尿床是因为什么原因| 红斑狼疮复发的症状是什么| 国花是什么花| 平光镜是什么意思| pku什么意思| 手机卡顿是什么原因| 懒觉什么意思| 什么网站可以看三节片| 乳腺增生是什么症状| 马牙是什么原因引起的| 下午7点是什么时辰| 什么鱼做酸菜鱼最好吃| 为什么会肛裂| 吃阿莫西林过敏有什么症状| 黑桃a是什么酒| 七月十五有什么忌讳| hippo什么意思| 南方有什么生肖| 玉米什么时候种| 物上代位性是什么意思| 心脏不舒服挂什么科| 太阳病是什么意思| 病毒性感冒咳嗽吃什么药效果好| 美女的胸长什么样| 肚脐眼左边疼是什么原因| 叶公好龙的好是什么意思| 吃什么补蛋白质最快| 女人吃鹅蛋有什么好处| cpi下降意味着什么| 吃什么长胎| 地道战在河北什么地方| 丛林之王是什么动物| 血色素是什么| 宅心仁厚是什么意思| eb是什么意思| 教义是什么意思| 嘚儿是什么意思| 扎手指放血治什么| 什么是霸凌| 灰枣与红枣有什么区别| 蛐蛐进屋有什么预兆| 牙痛用什么止痛| 什么的尾巴有什么作用| 发票抬头写什么| 腰间盘突出睡觉什么姿势好| 百度
Skip to content

homin-lhm/AutoStub

Repository files navigation

AutoStub

http协议的自动化桩

桩的应用场景

比方说测试环境没法接入三方服务,如果想要保证服务的可测试性,开发有4种处理方案 ① 写一个桩(假想的服务),一个空心服务,只能保证通信过程,固定返回200的处理结果 ② 修改被测服务源码,屏蔽掉所有三方服务的交互代码 ③ 写死三方服务的处理结果,不进行通信 ④ 只提供线上环境来测试

这类型桩存在的痛点

① 三方服务异常的处理行为覆盖不到 ② 定义的三方处理数据缺少真实性 ③ 没法保障被测服务上线以后能和三方服务正常通信,还需要额外的线上调试成本 ④ 开发不愿花更多的人力成本时间成本来保障可测试性 ⑤ 线上测试的成本过高,或可能影响线上的真实数据

什么是自动化桩?

已知接口自动化框架的前提下,如果遇到了依赖服务异常的测试用例,没法落地成自动化脚本。 比方说: 背景-用户登录的场景,底层交互涉及到客户端、account用户服务、yzm验证码校验服务,account是我们的测试对象 用例名“请求登录接口,account处理超时” 操作步骤“step1-请求登录接口,step2-模拟account请求超时的情况,step3-校验登录接口的返回”期望值“返回状态码为500,返回体{"msg":"server error!"}” 自动化桩所提供的能力能将当前用例转换成自动化脚本!! ? 能够接受桩的消息进行校验,相当于验证被测服务请求三方服务协议的正确性! ? 测试用例能直接定义桩的结果返回! 自动化桩可以直接取代掉桩,开发没有额外的开发成本!!! 自动化桩还不需要开发进行部署,全程由测试操盘!!!!

实战演练

被测服务背景:多人文档编辑时,有一个痛点,B用户编辑的内容可能会覆盖A用户编辑的内容,所以提出编辑锁的方案,A用户进行文档A编辑后,不允许其他用户编辑同一个文档,B用户请求编辑接口会被拒绝。

展开服务端的测试工作,需要设计依赖服务异常的测试用例。 请求文档编辑接口,fileapp返回403的状态码 期望值:文档编辑接口返回 500状态码,返回体{XXXXXX} 请求文档编辑接口,fileapp返回超时 期望值:文档编辑接口返回 500状态码,返回体{XXXXXX} 请求文档编辑接口,fileapp异常下线 期望值:文档编辑接口返回 503状态码,返回体{XXXXXX}

image

自动化桩实现的交互文档

image 桩的交互流程:

  • step1:在python客户端实现socket服务端,提供通信方式
  • step2:在桩模块下,实现socket客户端,和python客户端的socket服务建立通信,明确channel并实例化。
  • step3:根据桩启动配置所描述的端口在桩模块基于flask框架启动http的桩,满足任意接口和任意请求方式。
  • step4:启动被测服务,满足依赖关系。
  • step5:测试用例开始执行,使用桩模块提供的异步http请求方法调用被测服务的接口。
  • step6:被测服务在入参协议校验完成后开始请求依赖服务获取业务的处理结果,被测服务调用依赖服务的接口(实际上就是请求桩)。
  • step7:桩服务会通过channel发送消息,将从被测服务接到的请求打包起来发送到python客户端的socket服务。
  • step8:python客户端会通过拉取消息的方式接收消息。
  • step9:python客户端需要定义桩的结果返回,定义完成通过socket提供的send进行消息的回调。
  • step10:桩接收到回调消息后包装成回调消息直接进行被测服务的消息回复。
  • step11:被测服务通过接口返回返回业务的处理结果。
  • step12:python客户端能正常完成用例的流转过程。
  • step13:python客户端执行完全量用例后下线桩服务。

自动化桩模块介绍

image

  • app -- 被测服务demo
  • business -- 接口自动化框架业务方法封装
  • common -- 接口自动化框架的通用方法封装
  • config -- 接口自动化框架的配置文件
  • httpStubFramework -- 自动化桩组件!! -- httpCommon -- 支持异步http请求和接受 -- httpSeverStub -- 桩实例 -- httpStubOperator -- 桩的操作方法 -- serverStatusCheck -- 简易的服务状态检测方法
  • logs -- 接口自动化框架的日志存储
  • testCase -- 接口自动化框架的用例集
  • main -- 接口自动化框架的启动方法
  • report -- 接口自动化可视化报告
  • stub_instantiation -- 桩启动信息配置!!

自动化桩使用的协议:

桩的启动配置

配置文件类型:stub_instantiation.py

from httpStubFramework.httpStubOperator import StubOperator  # 在该模块实现桩对象的实例化,需要导入模块下的类

### 每一个桩都需要先定义一套配置
stub_config = {
    'http_app_port': 8770,  # 定义了http桩实例的端口,ip默认本机
    'socket_client_port': 8771,  # 定义了桩通道通信过程socket的客户端端口
    'socket_server_port': 8772  # 定义了桩通道通信过程socket的服务端端口
}

# 如果要定义一个桩,可以根据桩的业务定义实例化的名称
fileAppStub = StubOperator(桩的配置信息)

桩启动方法(自动化框架执行入口main)

from stub_instantiation import fileAppStub

fileAppStub.start_stub()

桩下线方法(自动化框架执行入口main)

from stub_instantiation import fileAppStub

fileAppStub.shutdown_stub()

桩http异步方法应用(用例层在调用被测服务http接口时的接口调用方法)

from httpCommon import HttpCommon

hc = HttpCommon()  # 使用前需要进行实例化
hc.http_requests()  # 发送http接口请求,实参传递满足requests.requests的形参

# 等http接口业务处理完成后
code = hc.status_code  # 获取接口返回的状态码
text = hc.res_text  # 获取接口返回的返回体文本

从桩接收消息(用例层)

from stub_instantiation import fileAppStub

data = fileAppStub.receive()  # 接收桩受收到的请求协议消息接收消息模板:
{
    "body": dict(re_data),  # 收到的请求体
    "headers": dict(re_headers),  # 收到的请求头
    "cookies": dict(re_cookies),  # 收到的cookie
    "path": path,  # 收到的路由地址
    "method": re_method,  # 收到的请求方式
    "params": dict  # params参数,以字典形式返回
}

定义桩的结果返回(用例层)

from stub_instantiation import fileAppStub

msg = {
    'body': {},  # 返回体在这一侧定义,目前只支持json返回体的返回
    'code': 200  # 定义了桩的返回状态码
}

fileAppStub.send(msg)  # 将定义好的返回体返回给桩

作者联系方式

vx:hmggtester(添加备注下来自git) phone: 15017111391

About

http协议的自动化桩

Resources

Stars

Watchers

Forks

Packages

No packages published
输卵管发炎有什么症状表现 nu11是什么意思 泌尿外科主要检查什么 小孩发育迟缓是什么原因造成的 大学生入伍有什么好处
勿误是什么意思 2014是什么年 以貌取人是什么意思 后背出汗是什么原因 肝不好看什么科
香蕉不能和什么水果一起吃 绿色裤子配什么上衣 ov是什么意思 虫可念什么 数不胜数的胜是什么意思
女人眼睛干涩吃什么药 猴年马月是什么时候 胶原蛋白是什么 被蛇咬了挂什么科 天天喝白酒对身体有什么危害
人比黄花瘦是什么意思hcv8jop8ns6r.cn 为什么会口臭的原因hcv9jop3ns4r.cn 产后复查挂什么科hcv7jop6ns3r.cn 什么是cghcv7jop6ns5r.cn 什么什么情深hcv9jop3ns4r.cn
前白蛋白是什么意思hcv9jop8ns3r.cn 看灰指甲去医院挂什么科naasee.com 布洛芬什么时候起效fenrenren.com 冬天怕冷夏天怕热是什么原因hcv8jop7ns6r.cn 社保断交有什么影响hcv9jop3ns3r.cn
姨妈不正常是什么原因hcv8jop2ns7r.cn 炖牛肉放什么容易烂hcv8jop9ns1r.cn 鼻窦炎是什么hcv8jop1ns3r.cn t代表什么hcv9jop5ns7r.cn 食色性也什么意思hcv8jop1ns2r.cn
减肥早餐吃什么好hcv7jop7ns4r.cn 血氨是什么hcv9jop1ns3r.cn 国士无双什么意思hcv9jop2ns2r.cn b超能检查出什么sscsqa.com asia是什么意思hcv7jop7ns3r.cn
百度