mockserver

使用 Postman 做 API 自动化测试

泪湿孤枕 提交于 2020-08-13 23:30:02
Postman 最基本的功能用来重放请求,并且配合良好的 response 格式化工具。 高级点的用法可以使用 Postman 生成各个语言的脚本,还可以抓包,认证,传输文件。 仅仅做到这些还不能够满足一个系统的开发,或者说过于琐碎,你仍需要频繁地在开发环境,测试环境,生产环境中来回切换。单一的请求也不够,你需要维护系统所有 API 的请求,并且每个请求还带有不同的 querystring 和 body。 Collection 对服务器端的所有请求按功能或者业务模块进行组织,使用 markdown 对所有请求和示例添加适当的描述,这时候就用到了 Collection。以下是 postman 的一些术语以及组织请求的建议。 Collection 对应一个Application,组内各个成员(server, client, QA)共享一个 Collection。可以对整个Collection 添加测试,文档。 对于一开始未在 postman 组织请求的应用,可以设置 Proxy,跑一遍应用,对应用的所有请求进行抓包。 Folder (ItemGroup) 对应一个模块,或者各层级子路由。如 router.use('/users') 所有的请求都在一个 Folder,可以根据路由互相嵌套 Folder。 Request (Item) 对应一个请求,可以添加认证信息。也可以设置代理

SpringBoot中基于Pact的契约测试

萝らか妹 提交于 2020-08-07 11:21:25
背景 如今,契约测试已经逐渐成为测试圈中一个炙手可热的话题,特别是在微服务大行其道的行业背景下,越来越多的团队开始关注服务之间的契约及其契约测试。 什么是契约测试 关于什么是契约测试这个问题,首先先看一下Pact官方文档给出的定义:pact的官方文档,是另一个可以帮助我们理解契约测试的地方。它对契约测试给出了这样的定义: " Contract testing is a way to ensure that services (such as an API provider and a client) can communicate with each other"。 这里面需要关注的重点是 "communicate " , 它给出了Pact对契约测试范畴(scope)的定义 。 契约测试又称之为 消费者驱动的契约测试。这里的契约是指软件系统中各个服务间交互的数据标准格式,更多的指消费端(client)和提供端(server)之间交互的数据接口的格式。 契约测试的价值 那什么是契约测试的价值呢?要说清楚契约测试的价值,就需要准确认识契约测试的精髓——"消费者驱动" 在讨论契约测试的范畴里,”消费者驱动”述及的对象是契约,而不是契约测试。所以谁被驱动的对象就是契约。举个例子,当某个provider正常上线后,某个consumer需要消费这个provider的服务

服务端压测怎么做

送分小仙女□ 提交于 2020-05-04 09:26:38
本文始发自博客:[ 服务端压测怎么做 ]( https://zingpho y.github.io/2020/04/26/%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%8E%8B%E6%B5%8B%E6%80%8E%E4%B9%88%E5%81%9A/) 博文的内容并不都是我原创的,行文思路来源于一次内部分享,再结合网上众多参考资料总结出来的,算是一个学习笔记。 可能很多QA、RD同学跟我都一样,对服务端压测一直没有系统的认知,印象停留在使用压测工具如Jmeter对单接口发压,调整线程数和循环数来制造不同压力,最后计算一下TPS和成功率等就完事了?网上虽然有不少压测相关的文章,但多数是压测工具的入门级使用,有的是压测流程和指标的简单解释,或者就是几个大厂牛逼的全链路压测能力和压测平台的介绍。这些文章要不缺少系统性阐述,要不过于抽象不好理解,对没怎么接触过压测的同学不太友好。 本文尝试在QA角度梳理一次完整的压测过程,尝试总结更为普适的压测思路,给大家提供更有意义的参考。 压测背景 测试分很多种,网上很多文章 [1] 会玩弄概念,搬出来3个名词:压力测试(Stress Testing)、性能测试(Performance Testing)、负载测试(Load Testing)。一般情况下并不需要做这么细粒度的概念区分,这3个概念我觉得是没办法完整区分各自边界的

干货 | 携程Mock本地化实践

时光总嘲笑我的痴心妄想 提交于 2020-04-26 17:31:43
作者简介 Peter Sun,携程高级测试经理。 一、引言 这里说的Mock指的是系统测试或者接口测试场景下,模拟被依赖的其他服务接口进行响应返回的工具。测试人员通过服务接口级Mock的手段隔绝真实外部依赖,创造可控、稳定的测试运行环境,以提升问题的查全率和查准率。 然而,随着业务的发展和微服务化的进程,我们系统的结构越发的庞杂,Mock工具的实际效果开始变得差强人意。这里给大家分享我们遇到的挑战以及解决思路。 二、问题的出现 随着业务发展和微服务化进程,系统结构越发庞杂。服务化场景下使用Mock,有两个问题开始浮现出来。 1)工作串扰,启用Mock影响其他应用的测试工作 理想中的场景: 操作注册中心,使依赖指向Mock服务。 现实中的场景: 通过注册中心切换被测应用的依赖指向到Mock服务的动作,同样会影响到环境中其他应用的依赖指向,引发串扰(上图中应用B受到影响)。 PS:有被问及为何不调整被测应用的代码或者配置指向目标Mock,避免串扰其他应用。这种入侵代码的手段是下策。常在河边走哪有不湿鞋,总会有忘记改回来造成生产事件的时候的。 2)生效延迟 Mock的生效依赖注册中心的服务注册生效过程。由于缓存的存在,实际的生效时间是无法确定的,存在几秒到几分钟的延时。 对于功能测试场景而言,这些延时并无大碍,而在接口自动化测试场景中,这些延时将导致结果的不稳定性激增

ALPHA任务拆解

可紊 提交于 2020-04-20 00:29:36
项目 内容 这个作业属于哪个课程 BUAA2020软件工程 这个作业的要求在哪里 作业要求 我们在这个课程的目标是 学会团队合作,共同开发一个完整的项目 这个作业在哪个具体方面帮助我们实现目标 团队任务分解和细化 总体规划 支持用户编辑需要生成的数据的相关属性 实现基于空白表单生成多份表单的生成 支持PDF、JSON文件的下载 Alpha目标 完成三个模块: UI界面 后端 Azure接口调用 实现最小功能集的一整套业务逻辑: UI上传pdf模板 标注字段范围,添加属性 后端解析及数据生成 调用Fott API 处理实际的表单 前端 姓名 任务 预计时长 重要程度(最高5) 截止时间 llj, tzj, zyc 配置环境保证代码可以本地编译运行 1h 5 4.10 自学基本的前端知识和主流架构,学习ts、react等编程工具的知识 5h 4 4.12 熟悉学习原项目代码整体架构,掌握关键类之间的各种关系以及现有的组件 3h 3 4.12 zyc tag页面:UI布局 1h 5 4.13 tag页面:探索如何选中页面中一个区域的坐标作为某字段的参数 2h 5 4.14 tag页面:实现设定字段名以及对应页面中的区域 1h 5 4.14 tag页面:实现对字段的要求设定,最基本包括:内容格式(字母、数字)、内容长度(字符数) 0.3h 4 4.15 tag页面

使用mockserver来进行http接口mock

我的梦境 提交于 2020-01-24 06:46:15
转载:http://blog.csdn.net/heymysweetheart/article/details/52227379 前言 进行单元测试时,必须要mock掉第三方的依赖调用,而mockserver提供了足够的api来支持这种http的mock,现在简单介绍如何使用mockserver进行http接口mock。 依赖 mockserver依赖 < dependency > < groupId > org . mock - server </ groupId > < artifactId > mockserver - netty </ artifactId > < version > 3.10 . 4 </ version > </ dependency > httpclient依赖 < dependency > < groupId > org . apache . httpcomponents </ groupId > < artifactId > httpclient </ artifactId > < version > 4.3 . 3 </ version > </ dependency > <!-- https : //mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --> <

直击灵魂深处的拷问:“为什么前后端分离,你比以前更痛苦”

大兔子大兔子 提交于 2020-01-06 17:05:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、前后端分离痛点剖析 1、你有没有遇到过: · 前端代码刚写完,后端的接口又变了。 · 接口文档永远都是不对的。 · 测试工作永远只能临近上线才能开始。 2、为什么前后端分离了,你比从前更痛苦? 前后端分离早已经不是新闻,当真正分离之后确遇到了更多问题。要想解决现在的痛,就要知道痛的原因: ①为什么接口会频繁变动? · 设计之初没有想好。 这需要提高需求的理解能力和接口设计能力。 · 变动的成本较低。德国有句谚语:“朝汤里吐口水。” 只有这样,才能让人们放弃那碗汤,停止不合理的行为。 前后端同学坐在一起工作的时候效率会有提升,当后端同学接口变化时,只需要口头上通知一下即可,我们没有文档,我们很敏捷啊。 没错,我们需要承认这样配合开发的效率会很高,但是频繁的变动会导致不断返工,造成了另一种浪费,这种浪费是可以被减少,甚至是被消除的。 ②为什么接口文档永远都是不对的? 接口文档在定接口时起到一定作用,写完接口就没有用了。后面接口的频繁变化,文档必定会永远落后于实际接口,维护文档的带来了一定的成本却没能带来价值。除非对外提供的接口,否则文档谁来看呢?没人看,用处又在哪? 有些公司干脆丢掉接口文档,说我们要拥抱敏捷。所以接口文档落后的原因在于没有给我们带来价值。 ③为什么测试工作永远只能临近上线才能开始? 一个需求

RestTemplate较为通用的使用方法

回眸只為那壹抹淺笑 提交于 2019-12-31 17:34:14
RestTemplate较为通用的使用方法 一丶http请求响应   1. http请求主要包括3个部分, 请求行(get,post等请求方法 url地址 http协议版本), 请求头( key value形式), 请求体(任意文本, 通常与请求头content-type对应).      2. http响应主要包括3个部分, 响应消息行(协议/版本 响应状态码 对响应状态码的描述), 响应消息头(key value形式), 响应消息正文(任意文本, 通常与响应消息头content-type对应)      更详细的请看 此博文 二丶restTemplate使用简述   处理http请求, 主要是构造生成http请求报文, 处理转换http响应报文.   在实际项目中, 主要是使用get, post两种请求.   1) get请求, 主要是在请求行中的url带上请求参数, 如http://localhost:8080/server/userId?userId=2 中的userId=2, url路径中的部分数据也可以作为请求参数, 如http://localhost:8080/server/userId/2中的2, 可以和前一个url等同   restTemplate主要是通过占位符{}来构造url,   #getForObject(url, responseType,