我们使用什么对Web UI进行单元测试?
我目前正在工作的公司正在使用Selenium进行统一测试我们的用户界面。我们使用什么对Web UI进行单元测试,以及如何找到它?
解决方案
回答
我们使用Selenium Core,但正在逐步切换到Selenium RC,它更好,更易于管理。我们编写了许多自定义代码,以使测试在我们的持续集成服务器上运行,其中一些在并行套件中运行以更快地运行。
我们会发现一件事是Selenium似乎为每个测试重新启动了浏览器(我们可以将其设置为不执行此操作,但是这样做时会遇到内存问题)。在Firefox中,这可能很慢,但在IE中并不太糟(有一次我感谢Bill Gates的OS集成)。
回答
我们正在使用QuickTestPro。到目前为止,它是有效的,但是浏览器的选择受到限制。最好的部分是能够记录浏览器活动,并将其转换为可编写脚本的步骤集。还有一个不错的.Net插件,因此,如果我们需要在测试的不同阶段执行任何验证代码,则可以在程序集中编写方法并从脚本中调用它们。
回答
好吧,如果我们已经正确设计了应用程序,那么UI内将不会有大量的逻辑。将实际完成的工作分成与UI分开的单元,然后进行测试,这将更加有意义。
如果这样做,那么UI中唯一的代码就是调用后端的代码,因此只需测试后端就足够了。
过去(在我的工作中)我曾经使用过NUnit ASP,如果我们坚持对UI进行单元测试,我强烈建议我们使用NUnit ASP以外的任何工具。使用起来很痛苦,即使在用户界面进行了最细微的更改(即使测试的主题实际上并没有改变)之后,测试也会变得无效(需要修订)。
回答
我们使用JSunit进行单元测试已经有一段时间了……它可能与我们所讨论的测试类型不同,但是对于确保JavaScript能够按预期工作非常有用。
我们可以在浏览器中运行它,并且可以在Ant构建中将其设置为在多个平台上针对多个浏览器自动远程运行(因此,我们可以确保代码是跨浏览器的,并且可以确保逻辑正确)。
我认为它不能代替硒,但是可以很好地补充硒。
回答
我们在我的工作地点使用Watin,因为我们是.net商店,所以该解决方案很有意义。实际上,我们从Watir(原始的ruby实现)开始,然后进行切换。到目前为止,这对我们来说是一个很好的解决方案
回答
我使用过WATIR,这非常好。我喜欢它,因为它是Ruby,可以测试交互性,可用元素和源代码解析。我已经有一段时间没有使用它了,但我想它已经变得更好了。
据说它已经移植到Firefox和Safari,但是现在已经发生了一段时间。
回答
查看Canoo Web测试。它是开源的,并建立在ANT框架上。
我花了一些时间来处理软件质量保证的研究生课程,它似乎是一个非常强大的测试工具。
回答
Selenium Grid可以在多台计算机上并行运行Web测试,从而可以加快Web测试过程
回答
我主要使用CubicTest,这是一个eclipse插件,可让我们以图形方式定义测试。它可以通过包括watir和Selenium在内的多个库导出/运行测试。不过,大多数人只是使用Selenium赛跑者。
全面披露:我是开发人员之一,所以我有点有偏见:)
在这里仔细看看:cubictest.openqa.org
-埃伦德
回答
Selenium用于集成测试,而不用于单元测试。这是一个细微但重要的区别。我通常看到的用法是用于检查构建的完整性。即具有登录的测试,(例如)提交故事,发表评论的测试等。
这个想法是,我们正在测试以查看整个系统在部署之前是否可以一起工作,而不是让用户发现站点已损坏。
回答
我是硒的忠实粉丝。正如某些评论所提到的那样,说"对Web ui进行单元测试"并不完全准确。但是,我确实发现Selenium对于在UI上执行这种验收和健全性测试非常有用。
一个很好的入门方法是在开发中使用Selenium IDE。即,在开发过程中只需打开IDE,然后减少开发时间就可以编写测试。 (不必手动通过UI即可测试我们正在处理的内容,只需按一下按钮,Selenium IDE就会为我们解决这个问题。这是一个了不起的时间节省!)
我的大多数主要用例场景都有Selenium RC测试来支持它们。我们不能真正将它们视为xUnit框架中的单元测试,但是它们是针对非常特定的功能的测试。它们写的很快(特别是如果我们为登录或者设置测试用例实现了通用方法),运行起来很快,并且提供了非常紧密的反馈循环。从这些意义上讲,Selenium RC测试与单元测试非常相似。
我认为,与其他任何事情一样,如果我们投入精力正确地学习测试工具(例如Selenium),努力将得到回报。我们提到公司已经使用Selenium进行UI测试。这很棒。使用它。如果我们发现硒难以使用或者造成混淆,请坚持使用。一旦我们学习了一点API,学习曲线就不会那么陡峭。
如果我正在开发Web应用程序,那么在没有Selenium RC测试对其进行备份的情况下,我很少编写大量代码。这就是我发现硒的效果。 :)(希望这会回答问题。)
回答
我们使用Visual Studio 2008测试版。
优点:
非常擅长捕获用户交互
捕获Ajax呼叫
将用户输入映射到数据库,XML或者CSV文件非常容易
捕获的测试可以转换为C以获得更多控制
相同的测试可用于负载测试和代码覆盖率
缺点:
VS2008 Tester Edition是与普通Developer Edition分开的SKU,这意味着额外的费用
我们可能对Microsoft有所了解;-)
我们已经在项目中非常有效地使用了它,但是要使测试保持最新状态需要付出很多努力,每次更换屏幕时,都可能需要重新记录测试
我们倾向于使测试简短而尖锐,做一件事然后离开,而不是在单个测试中记录10分钟的点击时间。
我们有几种标准的UI测试类型:
菜单测试:以特定用户(或者用户类型/角色)身份登录,并确保所有必需的菜单项均可用
验证测试:打开一个页面,然后单击保存而不输入任何数据,确保出现所有验证警告。一次完成一个必填字段,并检查警告消息是否应该消失。
搜索测试:使用数据库或者数据文件中的数据进行搜索,并确保搜索返回正确的数据
数据输入测试:从数据文件创建新的记录,清理数据库以允许测试多次运行
UI测试非常耗时,但是在发布新版本之前经过几百次测试后所获得的舒适感是无价的。
回答
我们使用WatiN进行系统测试,并使用QUnit进行JavaScript单元测试。
回答
钼是建立在硒之上的,具有一些添加功能。