创建自动化测试后,如何进行测试并确保测试能够执行预期的工作?我可以轻松测试通过测试的场景,但是如何处理由于现场问题而失败的场景呢?诸如-缺少元素,单击不起作用等问题。我所能想到的就是模拟HTML以模拟条件以测试和运行该本地HTML中的测试。其他人有更好的主意吗?

评论

澄清一下:您是在谈论使测试正常失败(因为在测试中发现问题并且需要失败)吗?还是描述了测试用户的测试描述246?

我一直在看着优美的失败。

#1 楼

我认为您是在问是否需要元测试(自动或其他)。当然,您怎么知道元测试是正确的?这是大多数开发人员的工作:如果某些东西有风险,则对其进行测试;否则,他们相信自己的代码是正确的。如果他们信任的东西发现有错误,他们会尝试重新校准他们的判断。您应该做同样的事情。

就我个人而言,我不会麻烦模拟HTML。如果您有可以修改的站点,则可以尝试引入错误以查看测试是否找到了它们。当然,您想引入现实的错误,而确定哪些错误是现实的可能并不容易。过度使用可能是无效的,甚至是破坏性的。如果您选择编写自动化测试,则您将受到与开发人员相同的决定。大多数开发人员不会选择测试每一行代码。这是一件好事。自动化测试的每一行都需要额外的开发工作和额外的持续维护,并且不一定会发现更多的错误。决定取决于您自己的经验,对开发人员的信心,对主题的熟悉程度,对所依赖代码的信心,产品的成熟度以及其他因素。而不是寻求严格的规则来教条地遵循,而是尝试一些感觉正确的事情,诚实地关注您的结果,然后相应地进行重新校准。

这是您的经验法则可以尝试。如果要测试某些东西需要付出巨大的努力,请质疑您的假设。您可能会尝试以错误的方式进行测试,或者尝试进行的测试可能比需要的复杂,或者甚至可能认为出错的风险并不能证明测试的合理性。

评论


我不知道什么是元测试。你能解释一下是什么吗?而且我无法修改该网站以引入该错误。我的问题更多是关于如何确保自动化脚本(在JAVA中)的所有部分都经过测试的问题。这是否使问题清楚?

– A.J
2012年6月22日20:40

我在提出一个荒唐的广告无限论点。元测试是对测试的测试,我认为这是您提出问题的主题。如果您通过模拟HTML来测试您的测试,您如何知道模拟代码是正确的?如果存在错误,则可能会使您的元测试无效。那么,您也会为您的模拟代码编写测试吗?然后,如何知道对模拟代码的测试是否正确,除非您也对其进行了测试?需要注意的一点是,无需编写测试就能编写正确的代码。否则,您不应编写代码。

–user246
2012年6月22日在22:29

@ user246“在某种程度上,您需要能够编写正确的代码而不编写测试;否则,您不应该编写代码。”极端地说,这表明不需要软件质量保证。但是,由于我想以为我不是寄生虫,所以我必须问:如何确定界限?多少层测试和元测试合适?答案似乎是OP问题的核心。

–user867
2012年6月25日下午6:42

@ user867我将更新答案以解决您的问题。

–user246
2012年6月25日14:50

@ user246我了解。我不想测试代码的每一行,但至少要确保在找不到所需内容时它会失败-可能是最关键的代码。我将遵循经验法则。

– A.J
2012年6月26日18:23

#2 楼

当我使测试自动化时,我通常会以某种小而有意义的方式使测试出错,然后带着期望会失败的方式运行它。例如:


如果系统应该在“生活意义”字段中显示为“ 42”,那么我将更改测试以断言它显示为“ 43” 。
如果仅当当前用户为“ Ford Prefect”时系统应该显示“ 42”,则我将测试更改为以“ Zaphod Beeblebrox”登录。
如果系统应为要在福特访问“宇宙尽头的餐厅”页面后才显示“ 42”,我将更改测试以省略“参观餐厅...”步骤。

我一次执行其中之一。我将测试弄错,运行它,并注意它是否仍然通过。如果测试现在失败了,并且可以将失败解释为由于我的更改而有意义,那么我会得出结论,原来的测试正确无误,然后将其改回。通过,这意味着我更改的细节没有达到我想要的效果,因此我需要进行一些调试。

如果测试失败,但是失败显然不是由于我破坏了测试,我需要做一些调试。我发现了一些怀疑的理由(例如,测试报告失败,这可能表明测试或系统存在问题;或者当我有理由认为系统或其环境损坏时,测试报告成功)。 br />

评论


+1用于测试您的代码并提供不必要的Hitchhiker引用。始终将毛巾放在办公桌旁。

– Steve Miskiewicz
2012年6月25日在23:04

#3 楼


“我可以轻松测试通过测试的方案”,我的经验却相反。以一个测试为例,该测试的返回值在开始时被初始化为“通过”(这是非常糟糕的做法),而测试代码中的错误则在实际测试某些东西之前将其发送到测试结束。
我们通常为实用程序功能之类的核心服务添加一组单元测试。


#4 楼

您还可以采用变异构建方法:在生成构建时插入错误,并查看您的覆盖范围是否找到它们。数值越高,覆盖范围就越好,至少从理论上讲:)。