测试存在问题:
一、测试环境接口不稳定
二、业务系统不是孤立存在的,关联方太多,并且关联系统经常出现不稳定的状况
三、暂时无可用Mock server工具
四、接口未提测验收完成,前端测试提早介入
影响:
测试依赖数据,依赖接口阻塞致使测试延期,干耗时间成本人力成本
解决方案:
引入Mock测试,有了Mock,测试童鞋在后端接口未准备好时按照接口文档就能够开始造数据进行测试工做,不会出现测试一直等待开发的状况,也能够开发联调与测试进行。这样的话,开发自测阶段就能够及早开展,从而发现缺陷的时机也提早了,有利于整个产品app测试覆盖率提高和产品项目进度的保证css
去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录下即完成安装。前端
Charles 是经过将本身设置成代理服务器来完成封包截取的,因此使用 Charles 的第一步是将其设置成系统的代理服务器。数据库
启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你能够输入登陆密码授予 Charles 该权限。你也能够忽略该请求,而后在须要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。步骤以下:json
* 一、打开Charles程序
* 二、Mac链接上网络paictest,查看Mac电脑的IP地址: 系统偏好设置->网络就能够查看到了,好比个人ip地址是:172.16.0.238 * 三、将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”, 填入代理端口 8888,而且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上 的设置。 * 四、要截取 iPhone 上的网络请求:进入当前wifi链接paictest(Mac在一个局域网内), 设置HTTP代理Group,将服务器填为上一步中得到的IP,即172.16.0.238,端口填8888. * 五、打开 iPhone 上的任意须要网络通信的程序,就能够看到 Charles 弹出 iPhone 请求链接的确认菜单(以下图所示),点击 “Allow” 便可完成设置。
以后,你就能够看到源源不断的网络请求出如今 Charles 的界面中,以下图所示(因为涉及部分业务,马赛克了)。后端
若是你须要截取分析 Https 协议相关的内容。那么须要安装 Charles 的 CA 证书。具体步骤以下。浏览器
一、首先咱们须要在 Mac 电脑上安装证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,而后输入系统的账号密码,便可在 KeyChain 看到添加好的证书。bash
须要注意的是,即便是安装完证书以后,Charles 默认也并不截取 Https 网络通信的信息,若是你想对截取某个网站上的全部 Https 网络请求,能够在该请求上右击,选择 SSL proxy,以下图所示:服务器
这样,对于该 Host 的全部 SSL 请求能够被截取到了。网络
二、截取移动设备中的 Https 通信信息app
若是咱们须要在 iOS 或 Android 机器上截取 Https 协议的通信内容,还须要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,而后就能够看到 Charles 弹出的简单的安装教程。在设备上设置好 Charles 为代理后,在手机浏览器中访问地址:http://charlesproxy.com/getssl
便可打开证书安装的界面,安装完证书后,就能够截取手机上的 Https 通信内容了。不过一样须要注意,默认状况下 Charles 并不作截取,你还须要在要截取的网络请求上右击,选中SSL proxy 菜单项。
根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,均可以达到修改服务器返回内容的目的。这三者在功能上的差别是:
Map 功能适合长期地将某一些请求重定向到另外一个网络地址或本地文件。
Rewrite 功能适合对网络请求进行一些正则替换。
Breakpoints 功能适合作一些临时性的修改。
为了调试服务器的接口,咱们须要反复尝试不一样参数的网络请求。Charles 能够方便地提供网络请求的修改和重发功能。只须要在以往的网络请求上点击右键,选择 “Edit”,便可建立一个可编辑的网络请求。以下所示:
咱们能够修改该请求的任何信息,包括 URL 地址、端口、参数等,以后点击 “Execute” 便可发送该修改后的网络请求(以下图所示)。
Charles 支持咱们屡次修改和发送该请求,这对于咱们和服务器端调试接口很是方便
举个例子:有一个订单状态接口 order_state,有已过时、已失效、已支付、待支付、已取消、待审核等10个状态返回,若是是在没有mock的状况下,咱们须要实际造10个状态的订单数据,甚至去修改数据库订单字段状态来看前端订单显示状况。利用Mock方法,咱们能够借助一些工具例如charles打断点,截取接口返回的response的json数据,进行一些模拟:好比
订单接口发生服务器错误 or 系统繁忙时app是否崩溃;
订单接口的各类状态在前端显示的覆盖测试;
订单状态空的时候前端如何显示的覆盖测试;
订单数据异常的时候前端如何显示的覆盖测试,
订单接口请求超时的状况等等等总之想要什么返回就模拟什么返回。
打开手机,链接电脑安装开户组件app 成功,点击app启动成功,登陆成功,moudle名称输入模块名称(xxBanklogin进入xx app 登陆流程,利用charles抓包,以下截图
在charless上要mock数据的url上右点击,弹出的列表选中breakpoint,要点击两次 Excute 才能完成一次 HTTP 请求,缘由是,Charles 的断点功能分别提供了修改 HTTP Request 和 Response 的机会映射本地文件
通常有两种处理方式可选择:
一是直接在charels设置好断点,请求相应的接口时修改编辑response里面json格式的相关数据后点击excute执行模拟请求提交
二是将全部接口的json数据在一个Sublime text 中以json格式保存,进行数据管理,最后利用 charles Map 规则的导入导出功能,方法是点击菜单 Tools → Map Local,在弹出界面中点击 Export
{ "code": "000000", "data": { 因为涉及到业务信息,部分data信息隐藏 "status": "0" }, "msg": "成功" }
{ "code": "030801", "msg": "操做超时" }
{ "code": "000001", "msg": "系统繁忙,请稍后再试!" }
{ "code": "000002", "msg": "登陆超时!" }
{ "code": "000004", "msg": "帐户在另外一台设备已登陆,当前登陆被挤下线!" }