SlideShare a Scribd company logo
1 of 23
Download to read offline
WireMock 起⻜飞⼿手册
shengxuanwei
2016-11-09
1
我们遇到的问题
• 由于 API 开发限制,开发依赖接⼝口交付
• 由于 API 不不可靠,开发和集成测试频繁失败
• 由于 API 数据限制,测试不不同的数据集⾮非常困难
2
我们的解决⽅方案
WireMock is a library for stubbing and proxying web services.
http://wiremock.org/
3
特点
• 模拟⽹网络请求
• 错误注⼊入和模拟⽹网络异常
• 录制与回放
• 单元测试或独⽴立使⽤用
• 搭建环境简单,容易易上⼿手
4
5
6
7
8
待解决的问题
1. 代理理设计
2. 透明代理理和⽤用
户感知
3. HTTPS 和
MITM
4. 触发条件设计
5. 请求匹配规则
6. GET 接⼝口返回模拟
7. POST / DELETE 接⼝口
返回模拟
8. 情景操作模拟
9. ⽹网络延时模拟
10.分发与部署
11.规范和维护
12.….
9
代理理设计
• Reverse Proxy 1,代理理连接 Charles 或
Fiddler,通过 Map Remote 映射 API 请求
• Reverse Proxy 2,修改 SERVER_HOST,
直接连接 WireMock
10
透明代理理和⽤用户感知
• 如果匹配 Match 规则,就返回 Mock 数据。如果不不
匹配 Match 规则,就请求 API 数据,Mock 数据和
API 数据混⽤用,⽤用户⽆无明显感知
• 通过 Priority 请求匹配规则和 proxyBaseUrl 参数
• 怎么设计前端⽤用户感知,让⽤用户分辨看到是 Mock 数
据还是 API 数据
11
HTTPS
• 将 wiremock.jks ⽂文件放到 keystore ⽬目录
• ⼿手机下载安装 wiremovk.p12 证书⽂文件
12
触发条件设计
• 问题是什什么样的条件触发 Mock 数据,既能达到
Mock 效果,也不不影响整体使⽤用?
• 可能的条件,特定⽤用户、城市、品牌、价格等等
• 触发条件的可达性,稳定性,兼容性
13
请求匹配规则
• URL
• HTTP Method
• Query parameters
• Headers
• Request body
14
URL 匹配
• url
• urlPath
• urlPattern
• urlPathPattern
15
HTTP 头部属性匹配
• equalTo
• contains
• matches
• notMatch
• absent
16
queryParameters
headers/X-RAW-PARAMETERS
JSON 或 jsonBody
• GET 请求采⽤用 JSON ⽂文件保存
• POST / DELETE 请求推荐采⽤用 jsonBody
• JSON 使⽤用中⽂文编码保存
• http://www.bejson.com/convert/unicode_chinese/
17
有状态的⾏行行为(场景)
• scenarioName
• requiredScenarioState
• newScenarioState
18
⽹网络延时模拟
• fixedDelayMilliseconds
• delayDistribution : lognormal, uniform
19
分发与部署
• 通过 Git 来管理理和分发配置
• 独⽴立部署
• API 前端部署
20
规范与维护
• mapping_Method_urlPath_statusCode_queryParam
eters_scenarioState.json
• body_Method_urlPath_statusCode_queryParameter
s_scenarioState.json
21
API 开发流程重设计
1.API proposal in wiki
2.Discussions
3.Agree
4.Mock it!
5.Profit
22
The End.
23

More Related Content

What's hot

实时Web的前世今生未来
实时Web的前世今生未来实时Web的前世今生未来
实时Web的前世今生未来RolfZhang
 
Build your ETL job using Jenkins - step by step
Build your ETL job using Jenkins - step by stepBuild your ETL job using Jenkins - step by step
Build your ETL job using Jenkins - step by stepBryan Yang
 
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)Jeff Chu
 
Leverage virtualization in software test
Leverage virtualization in software testLeverage virtualization in software test
Leverage virtualization in software testdrewz lin
 
twPolitwoops final
twPolitwoops finaltwPolitwoops final
twPolitwoops final橘毛 貓
 
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發俊仁 陳
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探美团点评技术团队
 
Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Laravel - 系統全攻略(續)
Laravel - 系統全攻略(續)Laravel - 系統全攻略(續)
Laravel - 系統全攻略(續)Vincent Chi
 

What's hot (14)

驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
实时Web的前世今生未来
实时Web的前世今生未来实时Web的前世今生未来
实时Web的前世今生未来
 
Build your ETL job using Jenkins - step by step
Build your ETL job using Jenkins - step by stepBuild your ETL job using Jenkins - step by step
Build your ETL job using Jenkins - step by step
 
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
 
Leverage virtualization in software test
Leverage virtualization in software testLeverage virtualization in software test
Leverage virtualization in software test
 
twPolitwoops final
twPolitwoops finaltwPolitwoops final
twPolitwoops final
 
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
Vagrant教學
Vagrant教學Vagrant教學
Vagrant教學
 
Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Jmeter
Jmeter Jmeter
Jmeter
 
Laravel - 系統全攻略(續)
Laravel - 系統全攻略(續)Laravel - 系統全攻略(續)
Laravel - 系統全攻略(續)
 

Similar to WireMock 起飞手册

02.wls概览
02.wls概览02.wls概览
02.wls概览Meng He
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606Fionsu
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
MySQL运维那些事
MySQL运维那些事MySQL运维那些事
MySQL运维那些事Jinrong Ye
 
微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構Jeff Chu
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1天青 王
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构n716
 
網路技術心得分享
網路技術心得分享網路技術心得分享
網路技術心得分享Mux Baxer
 
為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁
為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁
為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁臺灣塔米歐
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
http flood and mobile app
http flood and mobile apphttp flood and mobile app
http flood and mobile appim_yunshu
 
02.web sphere培训 应用websphere
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用webspherelittlecong
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Justin Lin
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路jeffz
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)Shanda innovation institute
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化衡锋 阳
 
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Justin Lin
 
Introduction to ASP.NET MVC and MVC 5 Features
Introduction to ASP.NET MVC and MVC 5 FeaturesIntroduction to ASP.NET MVC and MVC 5 Features
Introduction to ASP.NET MVC and MVC 5 FeaturesJeff Chu
 

Similar to WireMock 起飞手册 (20)

02.wls概览
02.wls概览02.wls概览
02.wls概览
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
MySQL运维那些事
MySQL运维那些事MySQL运维那些事
MySQL运维那些事
 
微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 
網路技術心得分享
網路技術心得分享網路技術心得分享
網路技術心得分享
 
為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁
為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁
為什麼在網址列輸入netis路由器的IP位址192.168.1.1,卻無法顯示網頁
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
http flood and mobile app
http flood and mobile apphttp flood and mobile app
http flood and mobile app
 
02.web sphere培训 应用websphere
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用websphere
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化
 
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
 
20110607 IPv6
20110607 IPv620110607 IPv6
20110607 IPv6
 
Introduction to ASP.NET MVC and MVC 5 Features
Introduction to ASP.NET MVC and MVC 5 FeaturesIntroduction to ASP.NET MVC and MVC 5 Features
Introduction to ASP.NET MVC and MVC 5 Features
 

More from Jiyee Sheng

tree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptxtree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptxJiyee Sheng
 
我的键盘习惯 - 盛宣玮.pdf
我的键盘习惯 - 盛宣玮.pdf我的键盘习惯 - 盛宣玮.pdf
我的键盘习惯 - 盛宣玮.pdfJiyee Sheng
 
人人车二手车 iOS 客户端架构演进史
人人车二手车 iOS 客户端架构演进史人人车二手车 iOS 客户端架构演进史
人人车二手车 iOS 客户端架构演进史Jiyee Sheng
 
如何高效工作
如何高效工作如何高效工作
如何高效工作Jiyee Sheng
 
下一个读代码的人就是你
下一个读代码的人就是你下一个读代码的人就是你
下一个读代码的人就是你Jiyee Sheng
 
Mac - 推开程序员的另一扇窗
Mac - 推开程序员的另一扇窗Mac - 推开程序员的另一扇窗
Mac - 推开程序员的另一扇窗Jiyee Sheng
 
下一个读代码的人就是你
下一个读代码的人就是你下一个读代码的人就是你
下一个读代码的人就是你Jiyee Sheng
 
iOS团队开发实践经验
iOS团队开发实践经验iOS团队开发实践经验
iOS团队开发实践经验Jiyee Sheng
 
2013年京JS参会分享
2013年京JS参会分享2013年京JS参会分享
2013年京JS参会分享Jiyee Sheng
 
一个顽强的bug修复经历
一个顽强的bug修复经历一个顽强的bug修复经历
一个顽强的bug修复经历Jiyee Sheng
 
Using Shell & Mastering Shell
Using Shell & Mastering ShellUsing Shell & Mastering Shell
Using Shell & Mastering ShellJiyee Sheng
 

More from Jiyee Sheng (12)

tree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptxtree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptx
 
我的键盘习惯 - 盛宣玮.pdf
我的键盘习惯 - 盛宣玮.pdf我的键盘习惯 - 盛宣玮.pdf
我的键盘习惯 - 盛宣玮.pdf
 
人人车二手车 iOS 客户端架构演进史
人人车二手车 iOS 客户端架构演进史人人车二手车 iOS 客户端架构演进史
人人车二手车 iOS 客户端架构演进史
 
如何高效工作
如何高效工作如何高效工作
如何高效工作
 
下一个读代码的人就是你
下一个读代码的人就是你下一个读代码的人就是你
下一个读代码的人就是你
 
Mac - 推开程序员的另一扇窗
Mac - 推开程序员的另一扇窗Mac - 推开程序员的另一扇窗
Mac - 推开程序员的另一扇窗
 
下一个读代码的人就是你
下一个读代码的人就是你下一个读代码的人就是你
下一个读代码的人就是你
 
iOS团队开发实践经验
iOS团队开发实践经验iOS团队开发实践经验
iOS团队开发实践经验
 
2013年京JS参会分享
2013年京JS参会分享2013年京JS参会分享
2013年京JS参会分享
 
一个顽强的bug修复经历
一个顽强的bug修复经历一个顽强的bug修复经历
一个顽强的bug修复经历
 
Using Shell & Mastering Shell
Using Shell & Mastering ShellUsing Shell & Mastering Shell
Using Shell & Mastering Shell
 
正则指引
正则指引正则指引
正则指引
 

WireMock 起飞手册