- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Charles最大的优势在于抓包分析,而且我们大部分使用的功能也在抓包的功能上,但是不要忘记了,Charles也可以做接口测试。至于Mock,其实在修改请求和响应数据哪里就已经介绍了,宏哥就是在这里简单的提一下介绍一下它的理论知识,今天主要介绍和分享的是使用Charles进行接口测试实操.
百度百科是这么说的:Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.
Mock 就是在测试过程中,对于一些不容易构造/获取的对象,创建一个 Mock对象 来模拟对象的行为.
Mock 方法 是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开.
开发过程中,只要交互双方定义好接口,团队之间可以并行工作,进程互不影响,不需互相等待对方进度,只需约定好相互之间的数据规范(接口文档),即可使用 mock 构建出可用接口,然后尽快进行开发和自测,提前发现缺陷. 。
单元测试是 TDD 实现的基石,而 TDD 经常会碰到协同模块尚未开发完成的情况,但有了 mock,测试人员可提前接入测试,提供测试效率,当接口定义好后,测试人员就可以创建一个 Mock,把接口添加到自动化测试环境,提前创建测试.
接口涉及入参,或者业务逻辑复杂的情况,某些场景无法通过正常手段进行操作,而通过mock虚拟模拟,可以有效的增加覆盖率 。
若一个接口在不同的状态下要返回不同的值,常见做法是复现这种状态然后再去请求接口,但使用某些接口时,可能因操作时机或方式不当导致失败,甚至污染后端存储如数据库等, 为避免系统数据库被污染,可以将接口调整为 Mock 模式,以保证数据库纯净.
Mock也不是万能的,使用Mock也存在着风险,需要根据项目实际情况和具体需要来确定是否选用Mock.
测试过程中如果大量使用Mock,mock测试的场景失去了真实性,可能会导致在后续的系统性测试时才发现bug,使得缺陷发现的较晚,可能会造成后续修复成本更大 。
接口文档已对接完成,但后端接口还未开发完成,测试人员需要进行单元测试,或提前进行接口自动化测试,需要使用Mock各种请求返回的内容.
遇到前端人员已完成开发任务,而后端人员开发打接口尚未完成这种情况,需要和前端人员联调进行测试,则需要搭建Mock服务.
好了,Mock的理论就介绍到这里,有兴趣的自己可以私下查资料。接下来就要进入今天的重点:使用Charles进行接口测试.
用Charles进行测试,我们使用的主要是Composer功能。这个和Fiddler工具类似。Composer允许自定义请求发送到服务器,可以手动创建一个新的请求。具体操作步骤如下:
1.打开Charles,点击【Tools】-->【Compose】或者【Compose New...】 。如下图所示:
2.填写你要测试接口的信息,有接口文档,按接口文档填写,没有就自己抓包填写,如下图所示:
1.选中抓到的接口请求信息,右键-->【Compose】,如下图所示:
2.出现了接口请求的相关信息。如下图所示:
根据下图图标注位置对Composer的界面功能进行说明.
1.请求方式:点开可以勾选请求协议是get、post等 。
2.url地址栏:输入请求的url地址 。
3.Execute按钮点击后就可以执行请求了 。
4.执行完成后会在右侧History区域生成历史记录 。
5.http版本:可以勾选http版本 。
6.添加请求参数 。
现在免费的接口很不好找,找了半天找到python里有一个,之前在Fiddler中也用的这个。就用这个举例吧.
接口信息:
接口信息 | 描述 |
---|---|
https://httpbin.org/post | 接口地址 |
请求方式 | HTTP POST |
请求参数 | 请求参数格式为 JSON |
参数格式:
{ "form": { "comments": "北京宏哥post接口测试", "custemail": "19182XX@qq.com", "custname": "北京宏哥", "custtel": "13045032408", "delivery": "15:45" } }
那么如何使用Charles调试一个POST请求并带有json格式的数据,具体操作步骤如下:
1.启动Charles,打开Compose面板, 在Compose新建面板中的输入URL(输入请求接口的地址),下拉框中选择POST请求方式,如下图所示:
2.点击【Compose】后,如下图所示:
3.点击【JSON Text】,然后输入请求的JSON数据,最后点击【Execute】如下图所示:
4.点击Execute(执行),若在会话列表中看到结果返回200表示操作成功,如下图所示:
5.在Inspectors里面查看到请求响应的结果了,我们事先知道接口返回的是json格式数据,点击响应部分的json将数据格式化,方便阅读。如下图所示:
接口信息:一个带参数的 get 请求,如在豆瓣网搜索:西游记,url 地址为:https://www.douban.com/search?q=西游记。具体操作如下图所示:
1.启动Charles,打开Compose面板, 在Composer面板中的输入URL,下拉框中选择GET请求方式,如下图所示:
2.输入请求接口的参数,如下图所示:
3.点击Execute(执行),若在会话列表中看到结果返回200表示操作成功,如下图所示:
今天主要讲解和分享了如何使用Charles进行接口测试的两种请求方式,其他的请求类似!!!好了,今天时间也不早了,宏哥就讲解和分享到这里,感谢你耐心地阅读!!! 。
最后此篇关于《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(13)-Charles如何进行Mock和接口测试的文章就讲到这里了,如果你想了解更多关于《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(13)-Charles如何进行Mock和接口测试的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦,全部是我自己写的,用到了系统的SysColumns (一)行转列的方法 先说说行转列的方法,这个就比较好想了,利用拼sql和case
您好,我是编码新手,正在尝试找出此 getopt 不起作用的原因。我的编译器提示“i:o:” 错误 C2664“int getopt(int,char **,char *)”:无法将参数 3 从“co
mockjs作用就是,生成随机模拟数据,拦截 ajax 请求,可以对数据进行增删改查。在生成数据时,我们就需要能够熟练使用 mock.js 的语法。 Mockjs 的语法规范包括两部分:数据模
我用 Java 开发了一个 SDK,我也有一个运行时。我想限制使用运行时 jar 的开发。我的 SDK 是节点锁定的,但我不想保持运行时节点锁定,以便我的客户可以自由地使用我的 SDK 开发应用程序,
这是玩 Rust 的链接: http://rustbyexample.com/match/guard.html 我发现 Rust 在我对无符号变量取反时显示警告,因此执行下面的代码以 结尾 warni
我正在尝试使用简单的 创建一个按钮栏并将其不透明度更改为 50% 并提供背景 但是进入这个分区的元素表现出与父级相同的透明度 .我希望它们保持 100% 的不透明度。 (这是不可能的)。如何使这成
谁能想出一种方法来使用 ol/li 列表中的数字来标记图像? 应用一些 CSS 后应该输出以下内容: ------ ------ ------ | | | | |
我有一个我认为微不足道的问题。我必须处理德语字母表中的元音变音 (äöü)。在Unicode中,似乎有几种显示它们的方法,其中之一就是组合字符。我需要规范化这些不同的方式,将它们全部替换为单字符代码。
来源:blog.csdn.net/weixin_44730681/article/details/107944048 1 基本概念 2 添加依赖 3 配置相关属性 4 sql监控 5 慢sql记录 6
我想对我的数据库进行两次调用,这将需要一段时间才能返回结果,而且我不想阻塞当前线程。我使用 Akka Futures 来包装数据库调用。 我不想等待(阻塞)两个调用返回,而是指定要调用的回调函数,然后
细心的人都会发现github个人主页有一个记录每天贡献次数的面板,我暂且称之为贡献面板。就像下图那个样子。只要当天在github有提交记录,对应的小格子就会变成绿色,当天提交次数越多,颜色也会越深。
今天第一次看 Bazel。 关于构建 cpp tutorial ,我可以看到它如何构建简单的可执行文件和存档库,但它看起来不像示例创建或使用共享库。 有谁知道用于演示此过程的简单示例 BUILD 文件
我正在尝试让 Play 2.2 在 IntelliJ IDEA 中运行,但遇到了一些问题。 Play 2 Framework 插件似乎不适用于 Play 2.2。 使用 play 控制台设置项目并使用
我正在使用类似单选按钮的 div,有一个问题。 我这样声明一个函数和变量 我设置了两种样式,一个 .buttonUp 和 .buttonDown 应用于 div 的 onclick 事件。 var
我是一名优秀的程序员,十分优秀!