如何为现有Web应用程序创建功能/ UI测试

时间:2013-03-18 12:49:46

标签: asp.net testing selenium automated-tests jasmine

我有一项有趣的任务是为现有的Web应用程序构建复杂的工作流测试,该应用程序从未进行过单元测试或集成测试(所有开发人员/用户都没有结构或指导方针进行测试)。

设置

目标是一个ASP.NET(无MVC)Web应用程序,已经构建了好几年。没有干净的MVC或任何其他模式,因此HTML输出非常糟糕(生成的ID,没有太多的css类,行css样式 - >难以测试)。 该应用程序是以数据为中心的,因此需要进行大量测试,数据库的状态对于测试非常重要。

我正在考虑以下工作流程: 1.重置数据库以测试启动数据 2.通过模拟用户交互运行创建和测试数据的测试

工具

我正在玩Selenium IDE,但感觉不够结构化。 我正在梦想一个工具集,我可以在(文字)coffeescript / javascript中编写测试,可以在浏览器中执行(不需要无头测试),但我能找到的所有工具都旨在测试javascript函数而不是用户相互作用。

我的测试步骤必须是:

  1. 页面加载
  2. 通过搜索文本A或计算ul B
  3. 中的元素来测试页面是否已正确加载
  4. 单击按钮C,等待弹出D,在字段E中键入文本
  5. 单击“保存”按钮,检查字段E中的文本是否显示在元素F
  6. jasmine 能否测试这类用户互动?我只能找到javascript函数的jasmine测试或HTML元素的存在,但不能找到复杂的工作流程,而测试步骤相互依赖。

    提前致谢!

3 个答案:

答案 0 :(得分:3)

Selenium IDE无法实现这一目标。

Selenium构建于WebDriver JSON Wire协议之上。拥有这个“基础”意味着它很容易插入许多不同的语言,都使用相同的API。

其中一个是JavaScript:

https://code.google.com/p/selenium/wiki/WebDriverJs

免责声明:JS Bindings非常新!

我不确定我理解为什么你必须在JavaScript中这样做,特别是因为我可以看到严重限制你的选择。

答案 1 :(得分:0)

我建议IBM Rational Functional Tester。它是基于java的,使其具有很强的可扩展性。这不是Javascript,所以请注意,测试是用java代码编写的。对于大多数人来说,有一个记录器:你只需点击一下即可记录你的动作。

关于使用它进行自动化测试,here's my opinions

这是一种商业产品。我不隶属于IBM,但我经常与RFT合作。

答案 2 :(得分:0)

您可能希望查看RIATest以获取Web应用程序的跨平台跨浏览器测试。它使用基于ECMAScript的脚本语言,与JavaScript非常相似。

适用于Windows和Mac,支持的浏览器包括Firefox,IE和Chrome。在一个平台/浏览器上编写的自动测试脚本可以针对所有其他支持的平台/浏览器运行。

当然可以自动执行您描述的步骤。动态生成的ID不好,但您应该能够使用其他属性(例如文本,元素类型等)来标识要自动化和测试的HTML对象。

(免责声明:我是RIATest团队成员)。