问题标签 [acceptance-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
746 浏览

javascript - 如何在无头环境中使用 Capybara 模拟键盘事件?

我正在尝试测试复杂的网络应用程序 GUI,其中涉及一些重要的键盘交互。我对 GUI 的特定组件进行了单元测试,但我也使用 Cucumber 和 Capybara 进行端到端验收测试。我为此使用了无头 Linux 机器,一切都是通过 ssh 完成的。

问题是,我找不到支持 Javascript、允许模拟键盘事件并且是无头的 Capybara 驱动程序

到目前为止我的研究总结:

  • 水豚 webkit。尝试,研究了很多文档和代码,发现它没有简单的键盘模拟,但我可以编写自己的使用execute_script和这个问题,或者尝试弄清楚它是如何trigger工作的。

  • 。有send_keys,听起来很完美,但是。“只要安装了 Firefox,一切都为您设置好了”。我无法安装 Firefox,但我可以尝试设置Selenium-remote 。

  • 水豚-envjstrigger看起来有点 hacky,没有文档,但可以通过查看代码来弄清楚它是如何工作的。

所以,我厌倦了研究和寻求指导。

是否有一些我缺少的明显解决方案?它应该首先尝试我列表中的哪个选项?也许有人在无头环境中使用 Capybara 测试模拟 Javascript 键盘事件有一些有用的经验?

0 投票
2 回答
1281 浏览

acceptance-testing - 生成 Concordion 摘要报告

我的项目正在考虑使用 Concordion 进行自动化验收测试。我在 Concordion 中看到的最大缺陷是自动生成的摘要页面。就目前而言,我们必须让测试人员或功能用户深入研究每个生成的 HTML 页面以检查成功或失败。

在查看 Concordion 的 svn 存储库时,我看到了一项建议修改以生成摘要 XML 文件——但据我所知,该更改尚未合并到主干线中。如果可以的话,我宁愿避免打开 Concordion 的源代码并直接修改它。

有人知道生成 Concordion 主/摘要报告类型页面的快速而肮脏的方法吗?

0 投票
1 回答
1370 浏览

ruby-on-rails - 在验收测试中模拟昂贵的资源(rspec,黄瓜)

对于如何编写完整的堆栈验收测试,我有点困惑,该测试涉及与我试图避免的昂贵网络调用的较低级别接口。

我正在使用 rspec 和 cucumber,并使用 rspeck 模拟进行大部分模拟。

以下是我正在做的一个人为的示例,以说明我正在测试的上下文。

您有一个用于添加成分的页面,您以后可以使用该页面构建食谱等等。成功创建新成分后,成分模型会访问 Web 服务以获取有关给定食品的 usda 营养信息并将其存储在成分模型中。

我编写了一个 WebServiceInterface 类,它负责获取食物的名称,通过 web 服务发出适当的请求并返回 xml 响应。另一个帮助类然后解析 xml 响应,然后返回营养信息的集合,然后在成分实例中使用。

现在,我已经编写了一套用于扩展 WebServiceInterface 的单元测试。它看起来像这样

请注意,这get_response_xml是由响应解析器内部调用的。在这种情况下 ResponseParser 调用get_response_xml注入的fake-webservice.

对于模型来说,它运行得很好而且很漂亮,但在验收测试中情况会更加复杂。我想为页面编写一个验收测试,测试“创建新成分”页面 ( new_ingredient_path) 和列出所有成分及其营养信息 ( ingredients_path) 的成分索引路径之间的集成。

验收测试如下所示:

除了冗长的上下文之外,这是一个问题:编写这种类型的验收测试的最佳方法是什么,同时确保在此过程中不调用实际的 Web 服务。

服务按请求收费,我进行了很多测试,所以“你真的应该在集成/验收测试中测试所有交互”在这种情况下对我来说是不够的。

我需要找到一种方法来确保在测试环境(甚至可能是开发?)中使用虚假的 web 服务或类似的东西而不是实际的 web 服务。来自.Net 背景,我习惯听到的典型答案是“使用依赖注入!!?!!”。虽然我认为 DI 有它的优点(请不要把这变成 DI 辩论),我只是认为这里有一个更简单的轻量级解决方案。

我虽然做过类似的事情,If ENV["RAILS_ENV"] == 'test'然后使用假货,否则使用真实的。这是rails环境中常用的成语还是太俗气?

有没有办法将其注册为某种类型的提供者,可以在“spec_helper.rb”块或黄瓜特性/支持/env.rb 块中配置?

想法,想法,意见,建议????任何有经验的 Rails 开发者都可以。或者 Cucumber/Rspec 大师告诉我完成此类测试的常用方法是什么?

0 投票
1 回答
4673 浏览

automated-tests - 使用 SpecFlow 进行端到端回归测试

我们正在使用 BDD 并使用 SpecFlow 来推动我们的开发 (ATDD)。

我们的 QA 团队希望定义他们自己的“端到端回归测试”(在 Gherkin/SpecFlow 中)并重用我们已经定义的步骤。

(请注意——我知道这不是一个很好的例子,但它应该提供足够的细节)

测试可能包括..

  1. 登录
  2. 搜索产品
  3. 选择要购买的产品
  4. 创建订单
  5. 选择交付选项。
  6. 提交订单。
  7. 取消订单。

这将暗示一个场景,如..

假设我在
搜索产品时已登录
并选择要购买的产品
并创建订单
并选择交货选项
并提交订单
并取消订单
然后??!!

这显然是错误的,因为我们没有在每一步检查输出。

因此,这可以作为一系列场景来解决:

场景 1:
假设我已登录,
当我搜索产品时
,我会看到产品列表

场景 2:
当我选择要购买的产品时,
我可以创建订单

场景 3:
当我创建订单
并选择交货选项时
,我可以提交订单

等等等等

这样做的主要问题是似乎无法指定场景运行的顺序/顺序(nUnit 的特性?)。因为场景之间存在依赖关系(它们没有设置为已知的起点),所以它们必须按顺序运行。

我的问题是:

a) 我们是否要在圆孔中安装方形钉?!

b) 有谁知道是否有办法以这种方式使用 SpecFlow/Gherkin?

c) 或者有人知道有什么替代品吗?

非常感谢!

0 投票
3 回答
1527 浏览

bdd - 分析人员(而不是开发人员)编写测试的示例规范工具建议?

我们正在寻求启动一种 bdd 风格的方法,灵感来自 Gojko Adzic 的示例规范。实现是在 java 中,开发人员已经在编写 junit 测试。

关键要求是规范(验收测试)可以由非开发人员编写、阅读和维护。该项目将作为一个敏捷团队运行——所以如果开发人员必须对规范进行检测就可以了。但是,我不希望开发人员、测试人员或领域专家不得不阅读或编写看起来像代码的东西。

到目前为止,我已经查看了FitNesseConcordion和其他各种(例如Spock)。我拒绝了 spock 和类似工具,因为它们以开发人员为主要受众。FitNesse 似乎可以满足大多数要求。

然而,Concordion 可能是当前最受欢迎的:规格看起来更简洁。

所以我的问题(实际上是三个):

  1. 我应该看的其他工具有什么建议吗?
  2. 有没有人以这种方式成功使用 concordion(或其他工具)?
  3. concordion 是否仍在积极开发/支持?很难从网站上分辨出来,大多数相关的 SO 问题都有好几年的历史了。

谢谢。

0 投票
1 回答
828 浏览

selenium - 在 Play 框架中使用 @Before 进行 Selenium 测试

我想在 Play 中为我的程序执行 Selenium 测试之前设置我的数据库!框架。但是,根据文档,唯一的方法是简单地删除数据库并一一加载不同的 YML 文件,而实际上需要许多不同的功能。编写单元和功能测试很容易,我所需要的只是

@Before

public void setup() {
(new asyncjobs.Bootstrap()).doJob();
}

其中 BootStrap 加载所有必要的数据。如何在 Selenium 中指定这个?

0 投票
1 回答
535 浏览

continuous-integration - Fitnesse in Cruisecontrol.net exec: do not fail the build when tests fail

I'm trying to integrate fitnesse with our cruisecontrol setup.

I'd like to have a set of acceptance tests that we develop before the features for the release are worked on. Develop our acceptance tests, run them against our nightly build (not on every check in, we have a job for that but I suspect our acceptance tests would slow that down too much).

So I want to be able to run the fitnesse test suite and not have it fail the build when some tests fail (the expectation is that some of the tests will fail, until we have finished the release).

I have the acceptance tests building on the integration server and the the fitnesse suite running from the command line (as an exec task in the integration job).

At the moment it is failing the build (runner.exe has a non-zero exit code when any test fails).

So... does anyone have a list of exit codes for fitsharp runner.exe? Is there any way to tell a cruisecontrol exec task that I really don't care about the return value from the job? Is there another cc.net task I should use instead?

Edit:
Current best idea is to wrap the fitsharp runner in a batch file or powershell script and swallow the return code from fitness
Edit2:
Return code from fitsharp runner.exe is the number of tests that failed (making setting the success return codes element for the cruisecontrol.net exec task difficult)

0 投票
4 回答
3386 浏览

ruby-on-rails - Capybara-webkit 引发 Capybara::Driver::Webkit::WebkitInvalidResponseError

我在我的 rspec 中收到来自 webkit 驱动程序的以下消息:

几天前它起作用了。问题在于save_page方法。有什么问题?

0 投票
1 回答
207 浏览

asp.net-mvc - 在为表单输入功能定义规范时测试每个边缘情况是否可行?

我开始学习验收测试,我想使用 SpecFlow 测试一个 ASP.NET MVC 应用程序。目前我正在为 CRUD 场景编写测试,
我知道这完全是一个菜鸟问题,但是在我的 SpecFlow 场景中测试每个边缘案例是否可行?我有一个要填写的表格,它有大约 15 个字段,我是否需要进行测试,例如“如果字段 A 有效而字段 B 无效,我应该在屏幕上看到此验证消息”?或者写“如果正确填写表格,我应该看到“添加任务”消息就足够了?在这种情况下,我应该单独对模型验证进行单元测试吗?提前谢谢

0 投票
1 回答
279 浏览

javascript - 检查某些字符串是否在页面上

如何检查页面是否包含带有zombie.js的特定文本?我是否只检查响应并查看它是否有字符串?