《Web测试囧事》——3.3 前后台分离测试时需要注意测试隔离

简介:

本节书摘来自华章计算机《Web测试囧事》一书中的第3章,第3.3节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 前后台分离测试时需要注意测试隔离

小蔡测试的产品最近需要更新前后台。对于前台来说,要从之前的JavaScript转换成Angular等新技术,显示样式也要从前几年的拟物化风格转换为扁平化风格;对于后台来说,要从之前和公司内部其他产品通用的6套后台模块系统架构,转换成只包含数据库和后端服务器的2套模块系统架构,而且后台技术要用Node.js重写,如图3-5所示。

基本上这个前后台替换的任务,把整个系统都进行了替换,只是仍然保留了之前的功能。进行前后台替换的任务时间紧,所以整个项目组的开发人员被分成了两个小组,分别负责前后台的替换,每个组又临时扩充了不少别的团队的人进行协助。而测试人员,包括小蔡,还是负责整个项目的测试工作。

image

在替换项目准备启动阶段,两个小组都认为只要自己做自己的部分,保证原有功能的正常就可以了,两个团队并不需要过多的交流和沟通,一切以之前的系统为准。

然而项目一开始,双方团队就遇到了不少问题。

首先,两个组对同一功能前后台开发的优先级不同,造成进度不一致,导致有些模块的前后台功能不能同一时间完成。这就阻碍了集成测试的实施,让进度一拖再拖。为了减少这种情况,项目组又搭建了单独的包含以前系统后台和替换项目中前台的环境。虽然这解决了部分测试延误的问题,但是开发人员花费了不少时间来搭建环境,而且在这个环境测试完成之后,还需要在整套替换前后台的环境上再次进行集成测试。

其次,测试人员在前台发现问题时,并不能准确定位是前台团队造成的,还是后台团队引入的。而且由于不熟悉对方团队编写代码,开发人员也需要花费不少时间才能定位问题真正的原因。

整个项目组发现这两个问题耗费的时间过长,所以讨论并执行了一套方案来解决这两个问题:使用Mock服务器进行测试。

前后台团队根据定义好的API,各自编写Mock服务器,便于开发人员进行开发,和测试人员测试相对独立的模块,也大大简化了测试环境和测试执行的复杂度。具体来说,就是前台团队根据API的定义,编写Mock服务器来模拟后台数据库和服务器的返回;而后台团队根据API的定义,编写Mock服务器来模拟前台服务器的请求和预期结果,如图3-6所示。

image

使用Mock服务器进行测试,大大简化了测试复杂度,从测试环境上也隔离了前后台的测试,加快了测试进度。

在进一步的使用中,小蔡发现有时API接口定义的修改在前后台没有及时同步,造成了单独测试前台或者后台时没有问题,但是在进行集成时,却发生了严重的不一致。

还好小蔡之前定期跟踪测试趋势时,从ThoughtWorks技术雷达(technology radar)上了解到契约测试就是针对这种场景的一种测试方法,而且还有不少进行契约测试的工具。

简单说来,契约测试就是同时对前后台都进行了Mock,使它们随时都使用的是一致的API接口定义,也只需要维护单一的API接口。使用契约测试的工具能快速实现前后台的分离,同时保证它们的一致性,如图3-7所示。

小蔡在项目组讨论改进时提出了这个测试实践,大家都很支持,并且马上制定计划进行试验。在整个项目组尝试了一周之后,整个项目组将契约测试作为团队内很重要的实践进行推广和执行。

image

image
image
image
image
image

相关文章
|
1天前
|
IDE Java 测试技术
使用JUnit进行单元测试:提高Java Web应用的稳定性和可靠性
【4月更文挑战第3天】本文介绍了JUnit,一个广泛使用的Java单元测试框架,由Kent Beck和Erich Gamma创建。JUnit核心特性包括注解、断言、测试套件、测试监听器和异常测试。在Java Web应用中,单元测试主要针对模型层。使用JUnit测试涉及设置环境、编写测试类、标记测试方法及运行和分析结果。单元测试能提早发现问题、简化调试、保证代码质量、促进重构并作为实时文档。掌握JUnit对提升软件质量和效率至关重要。
|
1天前
|
SQL 安全 测试技术
Web应用程序安全测试
Web应用程序安全测试
|
1天前
|
监控 数据挖掘 定位技术
Spartacus 测试,后台修改 product price 数据后,添加到 Cart 时,会带出来最新的价格吗
Spartacus 测试,后台修改 product price 数据后,添加到 Cart 时,会带出来最新的价格吗
13 2
|
1天前
|
存储 人工智能 测试技术
python自动化测试实战 —— CSDN的Web页面自动化测试
python自动化测试实战 —— CSDN的Web页面自动化测试
193 0
|
1天前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
141 3
|
1天前
|
JSON 监控 安全
LabVIEW测试和调试Web服务
LabVIEW测试和调试Web服务
12 1
|
1天前
|
SQL 安全 数据处理
Web 测试神器:HackBar 保姆级教程
Web 测试神器:HackBar 保姆级教程
|
1天前
|
XML Web App开发 测试技术
python的Web自动化测试
【4月更文挑战第16天】Python在Web自动化测试中广泛应用,借助Selenium(支持多浏览器交互)、BeautifulSoup(解析HTML/XML)、Requests(发送HTTP请求)和Unittest(测试框架)等工具。测试步骤包括环境搭建、编写测试用例、初始化浏览器、访问页面、操作元素、验证结果、关闭浏览器及运行报告。注意浏览器兼容性、动态内容处理和错误处理。这些组合能提升测试效率和质量。
15 6
|
1天前
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
10 0
|
1天前
|
安全 测试技术 API
请描述在 Python WEB 开发中常用的测试方法。
请描述在 Python WEB 开发中常用的测试方法。
25 0

热门文章

最新文章