加餐 | 如何做HTTP服务的测试?
许式伟
该思维导图由 AI 生成,仅供参考
你好,我是七牛云许式伟。
基于 HTTP 协议提供服务的好处是显然的。除了 HTTP 服务有很多现成的客户端、服务端框架可以直接使用外,在 HTTP 服务的调试、测试、监控、负载均衡等领域都有现成的相关工具支撑。
在七牛,我们绝大部分的服务,包括内部服务,都是基于 HTTP 协议来提供服务。所以我们需要思考如何更有效地进行 HTTP 服务的测试。
七牛早期 HTTP 服务的测试方法很朴素:第一步先写好服务端,然后写一个客户端 SDK,再基于这个客户端 SDK 写测试案例。
这种方法多多少少会遇到一些问题。首先,客户端 SDK 的修改可能会导致测试案例编不过。其次,客户端 SDK 通常是使用方友好,而不是测试方友好。服务端开发过程和客户端 SDK 的耦合容易过早地陷入“客户端 SDK 如何抽象更合理” 的细节,而不能专注于测试服务逻辑本身。
我的核心诉求是对服务端开发过程和客户端开发过程进行解耦。在网络协议定好了以后,整个系统原则上就可以编写测试案例,而不用等客户端 SDK 的成熟。
不写客户端 SDK 而直接做 HTTP 测试,一个直观的思路是直接基于 http.Client 类来写测试案例。这种方式的问题是代码比较冗长,而且它的业务逻辑表达不直观,很难一眼就看出这句话想干什么。虽然可以写一些辅助函数来改观,但做多了就会逐渐有写测试专用 SDK 的倾向。这种写法看起来也不是很可取,毕竟为测试写一个专门的 SDK,看起来成本有些高了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
这篇文章介绍了一种名为httptest DSL的领域专用语言,用于进行HTTP服务的测试。该DSL支持HTTP请求的发起和返回包的匹配,具有类型系统和子命令的概念,能够满足大部分测试需求。文章还提供了httptest DSL的基础文法和HTTP请求的基本形式,并给出了具体的例子来说明如何使用该DSL进行测试。通过使用httptest DSL,可以实现对HTTP服务的有效测试,解耦服务端和客户端开发过程,提高测试效率。此外,文章还介绍了httptest DSL中的match指令和测试环境的参数化,以及如何配置测试环境和执行测试脚本。总的来说,本文强调了测试在软件质量保障中的重要性,以及如何利用httptest DSL来提高开发效率。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》,新⼈⾸单¥68
《许式伟的架构课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(11)
- 最新
- 精选
- debugtalk之前我做的一个开源项目 HttpRunner 和这个倒有些相似之处。 https://github.com/httprunner/httprunner 对于DSL,有个痛点就是没法像代码那样进行单步调试。所以我也在HttpRunner中探索了语法提示和自动补全功能,以及和 python代码的互转
作者回复: 👍
2019-10-0426 - Aaron Cheung测试先行在目前的开发环境下有无必要 开发人员的边界条件之类有可能没有覆盖业务条件
作者回复: 测试先行很有必要。测试分黑盒白盒,黑盒关注业务边界,白盒两者都关注。
2019-10-0824 - Charles加餐加的太好了,谢谢!请问下许老师,后端对应的数据库产生的测试数据如何处理的?测试环境还好,生产环境呢?如果是代码处理的话,处理逻辑是放在后端吗?
作者回复: 生产环境一般用测试账号,测试数据会在测试前进行清理。清理的处理逻辑一般都在测试代码中。
2019-10-0821 - mickey如果后端是连接数据库的,怎样做动态的自动化测试呢?
作者回复: 这个不影响,只需要在测试前数据库是在运行中的就行
2019-10-05 - 丁丁历险记笔记 1 准备上班后下载使用,做中学 2 去关注开发人员日常工作过程中的不爽和低效率是非常有必要的。任何开发效率提升相关的工作,其收益都是指数级的。2019-11-044
- ifelse学习打卡2023-09-17归属地:浙江
- alswl跟之前设计的基于 pyresttest 集成测试(e2e)方案思路挺一致的 https://testerhome.com/topics/6134 现在一旦让我设计 DSL,第一反应就是往 YAML 作为载体。2022-12-08归属地:上海
- 不温暖啊不纯良读完第一段的时候我脑子里出现了一个场景,一个叫http的店铺在街上吆喝:"服务便宜卖,客户端服务1元1斤,服务的服务2元1斤,服务后测试/调试/监控/负载均衡等",一个叫七牛的人说:"来个服务端的测试服务".接着他又找到github店铺,看见今日特价:httptest DSL测试工具,心想:'这个不错,刚好好http测试服务配合用,买回家改造改造'.接着就是使用场景了,七牛把客户端和服务端交给了两个不同的人去干,于是用http测试服务使得他俩不用在一起干活,就能完成互相测试.最后是隐藏敏感信息,测试用例是写好了,但ip/密码/AK/SK等信息一定要配置起来,于是就有了后面的 host foo.com等代表敏感信息的单词.2021-05-11
- Run很好2021-03-03
- Jowin测试用例是移定的,SDK是不断变化的。2020-06-04
收起评论