Selenium项目的单元测试

纳马拉斯

有关最佳实践或实践的问题;)

我目前正在使用Java中的Selenium开发测试自动化系统。它应该用于Webapp的端到端验收测试。测试用例用Gherkin语言编写,并由BDD框架Cucumber(Cucumber-JVM)执行。低级功能使用Selenium / WebDriver与AUT和浏览器进行交互。Selenium代码是使用PageObject模式构造的,该模式将WebDriver的用法抽象化了。黄瓜步骤定义仅调用PageObjects提供的方法。

随着项目的进行和变得越来越复杂,我想开始编写单元测试,以确保验收测试以及围绕这些功能的实用程序能够执行应做的事情:)

现在问题来了:

编写单元测试以测试自动化测试项目是否可行?

主要的问题是,在我意识到使用TestNG进行单元测试的第一种方法期间,我的单元测试最终完成的工作几乎与验收测试已经做的一样。这会适得其反,因为单元测试非常慢并且具有很大的依赖性。

或者只是测试实用程序类,而在这种情况下保留Selenium代码。IE。仅测试可以测试的内容,而无需调用Selenium WebDriver并与AUT交互?

请注意,只是为了确保我没有被误解。我问的是在接受测试代码和所有辅助代码上运行单元测试。与使用JUnit或TestNG之类的单元测试框架运行Selenium测试用例无关。

任何帮助和/或想法将不胜感激,因为我不确定如何解决这一问题。那就是说为测试编写测试是完全明智的;)

基里尔S.

我敢肯定有人会认为我的回应“被反对”并投反对票,但是我认为

是的,如果您具有要用于验收测试的测试框架,则该框架本身需要进行测试

根据我的经验,该值在两个方面:

  1. 能够自信地更改您的框架当您创建某个功能时,您对它了解很多,例如,它支持哪些用例,设计用途是什么,等等。但是其他人(甚至一年以后的您)可能不具备相同的知识水平,即使有文档。因此,或者,每当有人需要对行为进行一些轻微的修改时(因为他们不确定更改现有功能),就会弹出新功能,或者有人可能破坏整个验收测试。

    最好是那些真正的单元测试,能够完全独立于任何东西运行(使用模拟,预定义的静态测试数据等)。

  2. 保护自己免受Selenium本身(或其他重要的第三方库)中的意外更改/错误影响当您将Selenium更新到下一个版本时(通常需要每3-6个月完成一次),总是有机会他们更改了您所依赖(甚至不知道)的某些默认值,或者破坏了某些内容,或突然某物返回了一个不同的异常,或者在以前执行的操作中未引发异常,依此类推。当然,无需费心和重复进行Selenium自己的单元测试,但是当涉及到一些琐碎的事情,或者依赖于文档贫乏的某些功能时,这些测试可能会大有帮助。

    这些是集成测试。理想情况下,它们应针对仅测试的Web应用程序(而不是真正的应用程序)运行,该应用程序以方便测试的方式复制专门测试的行为。

当然,一些妥协也是可能的。例如,有一小部分验收测试用作单元/集成测试(它们先运行,而其他测试仅在通过时运行)。从这些开始可能会更便宜,并且当您调试/修复测试框架中的问题时,可以慢慢迁移到适当的单元/集成测试。

另一个问题是如何将测试框架的测试与产品的实际验收测试分开。对我有用的是在两个不同的项目中保留测试框架和验收测试。这样,我可以更改框架,并在需要时多次构建它(还包括运行单元和集成测试)。当所有单元测试和集成测试通过时,我可以更新实际验收测试所使用的版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大型Qt项目的单元测试

来自分类Dev

Swift项目的单元测试类

来自分类Dev

VSTO项目的单元测试

来自分类Dev

vb.net项目的单元测试

来自分类Dev

在C ++单元测试中编译C项目的问题

来自分类Dev

vb.net项目的单元测试

来自分类Dev

大型项目的正确单元测试

来自分类Dev

NHibernate:如何从单元测试项目中引用主项目的装配?

来自分类Dev

单元测试项目的物理布局是什么?

来自分类Dev

如何使src / test / resources文件可用于其他项目的单元测试?

来自分类Dev

如何创建用于在存储库中添加项目的单元测试?

来自分类Dev

对使用RTOS的项目进行单元测试

来自分类Dev

InMemoryConnection用于单元测试Elasticsearch项目

来自分类Dev

如何对 vsix 项目进行单元测试?

来自分类Dev

Intellij 16-单元测试未识别为Android模块项目的一部分

来自分类Dev

如何将同一项目的单元测试拆分为单独的程序集?

来自分类Dev

.NET项目中单元测试和验收测试的实现

来自分类Dev

是否可以在同一解决方案中使用单元测试项目中的Selenium测试ASP.NET MVC Web项目?

来自分类Dev

麻烦单元测试附加项目中的帮手

来自分类Dev

运行并将单元测试添加到nodejs项目

来自分类Dev

单元测试角度/离子项目

来自分类Dev

如何仅在Hybris项目中运行单元测试?

来自分类Dev

ConfigurationManager.AppSettings在单元测试项目中返回Null

来自分类Dev

删除Web API中的项目单元测试

来自分类Dev

具有AppCompat项目库的Android单元测试

来自分类Dev

忽略本机VC ++项目中的单元测试

来自分类Dev

C ++堆损坏,但仅在单元测试项目中

来自分类Dev

多模块Spring Boot项目中的单元测试

来自分类Dev

无法从intellij中的Maven项目中执行单元测试

Related 相关文章

热门标签

归档