问题标签 [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.
bdd - 用户故事的演员必须是人吗?
用户故事传统上被写成“作为一个[用户类型]我想要[功能]以便[一些好处]”的表达。在书籍和在线资源中,[用户类型]通常对应于人类的角色。然而,在描述系统内部特性时,通常更容易将一些无人值守的服务代替用户,例如“作为 ServiceX,我希望定期刷新一些数据,以便我可以使用最新信息进行 XYZ”。
这种形式可以直接为系统的相关部分编写易于理解的验收测试。但这在概念上正确吗?用户故事不应该基于赋予商业价值的功能,并且由于系统和服务对获得商业价值不感兴趣,它们不应该成为用户故事的参与者吗?
java - 组织 JBehave 故事
我们刚刚开始研究使用 JBehave 进行验收测试,我想知道使用它的人如何组织故事的编写和故事文件的存储。目前只是对它们进行开发,因此我们将故事文件存储在资源文件夹中,并与 Java 代码一起实现它们。
我想我的实际问题是你如何以及在哪里存储你的故事文件,以及这如何与产品所有者或 QA 编写故事一起工作?
unit-testing - 单元测试与验收测试
你是其中之一吗?或两者?
我的理解是单元测试:
- 从开发人员的角度验证系统
- 帮助开发者实践 TDD
- 保持代码模块化
- 协助检测低粒度级别的错误
验收测试:
- 从业务和 QC/QA 的角度验证系统
- 往往是高级别的,因为它们通常是由不熟悉代码内部工作的人编写的
我觉得两者都是必要的。但是,为了最大限度地减少冗余工作,尝试将单元测试合并到验收测试中是否是个好主意?换句话说,让后者调用前者。往反方向走有意义吗?
您对单元测试与验收测试的总体看法是什么,以及如何管理它们之间的关系?
mocking - 有没有办法在使用 White 进行验收测试时注入模拟?
在我们的客户端/服务器应用程序中,服务器端由一组 Web 服务公开。客户端与我们所谓的应用程序上下文交互以调用服务器。我希望能够在验收测试期间模拟应用程序上下文,以便将测试隔离到客户端,而不是让测试一直从客户端到服务器再到数据库,并且必须使用我们要运行的每个测试的正确数据。
这可能吗?还是我应该采取不同的方法?
testing - 是否可以将easyb 的Groovy 与简单的英语场景定义分开?
这是来自 easyb 网站的示例 easyb 场景:
是否可以将 Groovy 与英语分开,以呈现更像这样的内容:
这样我的 PHB 就不会被大括号和 Groovy 搞糊涂了。
integration-testing - 如何删除 SpecFlow 中的种子数据
这可能已经提出,也许是一个愚蠢的问题。
无论如何,我一直在研究 SpecFlow 并想知道如何删除该功能的种子数据。这些种子数据在不同的场景中共享。有没有一种优雅的方式来做到这一点?也许在调用 testRunner.OnFeatureEnd() 时注入事件的能力?
javascript - 我应该为一个简单的 HTML5 + jQuery 应用程序使用什么 JavaScript UI 测试框架?
我将在业余时间编写一个简单的 HTML5 + JavaScript (jQuery) 应用程序,以跟上最新的 Web 技术(在工作中它是更高级的 C# 后端东西)。
我想以过去十年左右的方式进行开发,即 TDD 风格。
作为 HTML/JavaScript 中的 TDD/BDD/AcceptanceTDD 世界的新手,我的问题是:是否有一个很棒的框架或类似的框架可以在浏览器中针对网页编写测试(对许多浏览器的开箱即用支持)一个明确的加号)?
我想使用 JavaScript 的原因有两个。1. 我想学习更多 JavaScript,以及 2. 我想在测试中使用与开发相同的语言。
否则,我可以简单地使用我的 C# 技能并使用 Selenium、WatiN 或类似的框架。
我在 MSDN 找到了Jasmine、QUnit和使用 jQuery的本土解决方案,但对流程和复杂性没有感觉,因此非常欢迎推荐和第一手经验。
bdd - BDD 场景应该包括实际的测试数据,还是仅仅描述它?
我们已经意识到在定义典型的 CRUD 场景时有两个选项可以指定测试数据:
选项 1:描述要使用的数据,并让实现定义数据
选项 2:明确说明要使用的测试数据
在利弊方面,我们已经确定的是:
选项 1 很好地涵盖了“有效名称”的定义发生变化的情况。如果我们使用测试数据位于多个位置的选项 2,这可能会更难处理。选项 1 明确描述了此测试数据的重要性,尤其是在我们所说的“输入了无效的信用卡号”之类的情况下。它还以某种方式“感觉”更抽象和 BDD,更关注描述而不是实现。
但是,选项 1 使用了很难重复使用的非常具体的步骤。例如,“页面应该显示创建的区域详细信息”可能只会在这种情况下使用。相反,我们可以实现选项 2 的“页面应该显示以下字段”,以使其可以被其他场景多次重复使用。
我还认为选项 2 似乎对客户更友好,因为他们可以通过示例看到正在发生的事情,而不必解释更抽象的术语,例如“有效”。选项 2 会更脆弱吗?重构模型可能意味着破坏这些测试,而如果测试数据是在代码中定义的,编译器将帮助我们进行模型更改。
我很欣赏这里不会有正确或错误的答案,但想听听人们对他们如何决定使用哪个的意见。
谢谢!
unit-testing - 哪些验收测试框架更适合后端开发?
我所说的后端是指使用数据、处理文件或使用机器接口(REST、SOAP、CORBA 等)进行通信的软件系统。不需要花哨的 Web 或 UI 测试。我想到了 Cucumber 和 Robotframework,但我不知道它们是否适合手头的任务。
spring - 将数据预加载到 GAE 开发服务器数据存储中的验收测试
在我的应用程序中,我有一组 DAO,我将它们注入我的应用程序层。对于我正在编写的验收测试,我想用数据预加载 dev_server 数据存储,所以我在我的 JUnit 测试中使用相同的 Spring 配置(使用 @ContextConfiguration 注释)将相关 DAO 的实例注入到我的测试中。当我实际去存储一些数据时,例如:
我得到了可怕的“没有为此线程注册 API 环境”。
这可能是因为我的测试用例没有在 GAE application-web.xml 中读取应用程序详细信息(尽管我在这里猜测我可能真的错了);因此它不知道写入 dev_server 上运行的应用程序正在读取/写入的同一数据存储。
如何让我的测试“指向”与应用程序相同的数据存储?是否有一些“数据源”机制可以同时注入到应用程序和测试中?有没有办法让我的测试强制数据存储 api 读取所需的配置?