首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型多步在线表格验收试验

大型多步在线表格验收试验
EN

Software Engineering用户
提问于 2012-12-20 18:00:18
回答 1查看 754关注 0票数 4

我必须扩展/修复由其他开发人员编写的大型在线表单。有大量的代码,混合PHP和JS。这是一种只写的编码风格,我想完全重新做,但目前我不能。

它的工作方式如下:

  • 这是一个向导样式的表单,有12个步骤,让我们将它们称为阶段,以避免与测试的步骤混淆。
  • 用户必须填写至少100个字段才能完成。
  • 有些字段按3-5分组.可以使用JS动态添加和删除这些组。
  • 验证是在提交每个阶段之后进行的。如果出现某些错误,则会立即通知用户,直到他/她修复所有错误后才能进一步通知用户。
  • 提交的数据暂时存储在阶段之间的会话中。没有永久的储存。
  • 用户不能跳过阶段,只能依次往返到已经完成的阶段。

手工测试这个东西太荒谬了,所以我用贝帽和Mink和Selenium2编写了一个测试。

我现在只有一个测试,它完成了表单的所有12个阶段。在填写表单的过程中,为了达到特定的目的,我创建了一个步骤定义,它只是让webdriver等待了1个小时(嘲笑我)。当我需要测试一些特定的阶段时,我只需添加这个步骤,我希望Selenium停止-这样就可以打开浏览器窗口,这样我就可以手动完成我想做的任何事情,而不必填充所有以前的字段。

它节省了大量的时间,但感觉很愚蠢。我有理由这么做:

  • 必须尽快完成。
  • 我不能测试表单中的每一步。
  • 在不编写大量PHP代码的情况下,我无法重用填充过程的各个部分。现在我的测试只是用Gherkin语言写了120行。

我问题的简化版本是:我应该如何测试这个?

我可以想出几种方法:

  • 修改代码以允许跳过阶段。这可以通过在应用程序中检测环境参数并确定客户端(webdriver或user)是否能够或不能跳过阶段来安全地完成,因此在生产环境中不允许跳过。
  • 只要用大量的复制粘贴写更多的测试,做一个更大的猴子就行了。
  • 编写步骤定义,分别完成特定阶段。所以,当我完成第一阶段、第二阶段和第三阶段时,我就可以写了.在测试中。

所以,我的问题的完整版本是:哪一种方式更可取,每一种方式都有什么优势?也许还有其他的方法,比如以完全不同的方式设计一个应用程序,这样就没有这样的问题了。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2012-12-20 20:50:06

首先,不要为了测试的方便而更改代码。老实说,这是狗尾巴摇动的情况。

在某些情况下,重构代码以简化测试是合理的,但对于您所阐述的,这是一个可怕的想法。当你收到这样的遗产“礼物”时,你的首要任务是不改变任何事情,直到你开始对它的影响进行拳击。

对你的问题..。

采用一种围绕输入阶段构建测试步骤的方法。我们将假装有业务需求表明输入应该以您所描述的方式接收。(好吧,我们知道这是个谎言,但让我们说出怀疑的好处吧)。

这种伪装实际上使测试代码变得更容易。这是一个隐含的业务规则,即阶段2不能被测试,除非阶段1是完整和正确的。退一步,您将看到这极大地简化了您必须测试的场景的数量。第二阶段中的测试现在可以假设第一阶段中的一切都是合乎情理的,因为业务规则说,除非1是好的,否则您不能继续到第二阶段。

听起来,考虑到你所处的约束条件,你正在采取正确的方法来测试事情。换句话说-分诊。在理想的世界中,您可以重写所有东西,同时也可以编写完美的测试用例。在此期间,截止日期即将到来,更新需要发货。从“重击”测试用例开始,并在时间允许的情况下添加额外的细微差别。老实说,这与大多数其他发展并没有什么不同。时间通常是一个项目负担不起的奢侈品。

您的不适感是测试代码的理想方法与测试代码的实用方法之间的冲突。对于开发过程中的妥协,这是一个相当正常的反应。注释您需要采取的快捷方式,指出需要改进的地方,并不断增加。

为了帮助测试后期阶段,创建可重用的模拟代码部分,从而正确地完成前面的部分。因此,要测试阶段3,您将进行两次调用,以正确完成阶段1和阶段2,并允许公开第3阶段。这是一次小小的黑客攻击,但它也反映了应用程序中涉及的业务规则。换句话说,将现有的单个测试划分为12个组件。这将使您能够更容易地/独立地执行下游阶段。

票数 5
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/180189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档