问题标签 [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.
msbuild - TeamCity:管理验收测试的部署依赖项?
我正在尝试在 TeamCity 6 中配置一组构建配置,并尝试以 TeamCity 启用的最简洁的方式对特定需求进行建模。
我有一组验收测试(大约 4-8 套测试,按它们所属的系统功能区域分组)我希望并行运行(我将它们建模为构建配置,以便它们可以分布在一个一组代理)。
从我最初的研究来看,似乎拥有一个通过快照依赖AcceptanceTests
项引入一组单独的验收测试配置的元构建配置应该可以解决问题。然后我所要做的就是说我的构建配置应该触发并且它们都会被拉入。所以,假设我也有,并且Commit
AcceptanceTests
AcceptanceSuiteA
AcceptanceSuiteB
AcceptanceSuiteC
到目前为止,一切都很好(我知道我也可以反过来让Commit
配置触发AcceptanceSuiteA
,AcceptanceSuiteB
并且AcceptanceSuiteC
- 问题是我需要手动汇总结果以确定整个验收测试的整体成功)。
复杂的一点是,虽然AcceptanceSuiteC
只需要一些Commit
工件,然后就可以自己生活,AcceptanceSuiteA
并且AcceptanceSuiteB
需要:
DeploySite
(假设这需要 2 分钟,而我不能为此运行一个完全隔离的设备)- 针对已部署的站点运行测试
问题是我需要能够确保:
- 该网站只配置一次
- 两个套件运行时网站不会被破坏
如果我设置DeploySite
为构建配置并将AcceptanceSuiteA
其AcceptanceSuiteB
作为快照依赖项拉入,AFAICT:
- 随后或并行运行
AcceptanceSuiteB
可能会触发另一个DeploySite
,这将破坏AcceptanceSuiteA
和/或AcceptanceSuiteB
正在使用的部署。
虽然我可以说限制同时运行的构建的数量以强制一次只发生一个,但我需要一次有一个,而不是在依赖的部分仍在运行时。
TeamCity 中有没有办法对这种层次结构进行建模?
编辑:想法:-
一个废话解决方案是DeploySite
可以设置一个“使用中标志”标记,然后让AcceptanceTests
配置清除该标志[在完成之后] AcceptanceSuiteA
。AcceptanceSuiteB
然后问题就变成了让下一个DeploySite
管道等待直到再次打开所述门(在构建中进行阻塞等待,感觉不对 - 我希望它被标记为“尚未开始”而不是看起来像花了很长时间做某事)。然而,这种东西在这里有一个标志,并有这个位检查它是我试图摆脱的那种可变状态/片状气味。
编辑 2:如果我可以以编程方式更改代理配置,我可以将代理要求设置为要求InUse=false,然后在部署开始时设置标志并在测试运行后清除它
java - 如何防止 Selenium RC 在我的测试运行时窃取窗口焦点?
我知道我可能属于少数人,但我必须在运行测试的同时使用我的机器。一直妨碍我的事情是,当我使用 Selenium RC 运行测试用例时,浏览器窗口总是在窃取焦点。这使我无法在一天结束时在我注销前一天多次运行我的测试。我尝试了 Selenium Grid,但我不能让它只监听本地主机上的请求,而不是 0.0.0.0(我的网络管理员的要求)。
我已经翻阅了 Selenium 文档和大量 Selenium 站点,但我无法找到明确的答案。我可以在我的测试运行时阻止 Selenium RC 测试窃取窗口焦点吗?
我正在使用 Firefox 3.6.13。
selenium - 什么 .NET UI 测试工具具有内置浏览器以更快地运行测试?
你好,我记得有一次看到 selenium 或 watin 有一个“内置”浏览器可以比通常的浏览器(IE/FF ...)更快地运行测试,我是在做梦还是真的?谁能指导我查看有关该问题的一些信息/文档?
谢谢,n
selenium - 有没有人将 Selenium 集成到 StoryTeller 装置中?
有没有人将Selenium集成到StoryTeller装置中?你是怎么做的,他们在持续集成方面的作用是什么?
database - 使用 specflow 在验收测试中清理数据库
我是tdd的新手。我看过 Brandon Satrom 的视频。我正在尝试实现像它们这样的测试,用于验收测试的外循环和用于单元测试的内循环。我认为验收测试也是针对数据库的。所以我希望在 Specflow 中找到有关 [BeginScenario/AfterScenario] 事件的示例,用于数据库清理。据说它用于数据库清理。但是我看到的例子都没有。
我误解了验收测试的概念吗?它不也涵盖数据库吗?我们应该像在单元测试中那样使用模拟对象吗?
ruby-on-rails - 端到端测试 RESTful Web 服务 (Rails)
我正在尝试筛选无数的测试解决方案,我什至不确定我是否朝着正确的方向前进。故事是:我们正在运行一个 RESTful Web 服务,实现为 Rails 应用程序,它支持我们的移动客户端。我们正在对 Web 服务进行单元测试(当然),但这涉及模拟应用程序的许多部分,例如搜索堆栈 (Apache SOLR)。
此外,我们的测试不(即不能!)涵盖关键路线,例如移动登录/登录过程,因为这涉及 API 应用程序和移动网站之间的通信,用户可以在其中输入凭据,例如SSO(Janrain 参与)。因此,标准的 Rails 集成测试是行不通的。
我意识到理论上,如果测试套件设计得非常好,模拟只发生在下一层测试开始的那些连接点,然后通过单元或功能分别测试服务 API 和移动网站,一个可以获得相同的测试覆盖率。我发现在实践中,如果您有多个开发人员独立开发测试套件,这是一种错觉。我只是承认我们的单元测试根本没有设计得那么好。特别是在练习 TDD 时,我发现虽然测试可以驱动应用程序代码,但测试代码设计只针对被测单元量身定制,导致测试套件的规模相当大。
我发现的另一件事是,有时我们没有纯粹使用单元测试来检测回归,例如,由于连锁效应,错误的查询被发送到 SOLR 服务器。这就是为什么我认为确保整个堆栈沿关键路线工作的唯一真正方法是在每次部署之前在登台服务器上自动对其进行端到端测试,即将实际的 HTTP 请求发送到应用程序。
我的问题是:
- 你认为这是一件合理的事情吗?我发现关于在 Web 上端到端测试实时 API 的信息非常少,这让我想知道我是否有任何意义
- 您建议使用哪些工具/设置?我们使用 Watir 为我们的网站运行验收测试,但对于 Web 服务(不需要浏览器环境,不需要 JS 或任何类似 UI 的东西)来说,这似乎有点过头了。甚至像 Ruby 脚本这样简单的东西?
- 您可以给我任何一般的最佳实践或建议来设计此类测试吗?
testing - 冲刺和验收测试阶段 - 在 Scrum 和 XP 中从战壕
我正在阅读Scrum and XP from the Trenches这本书的中间,阅读我们如何进行测试一章,特别是关于验收测试阶段(我将其称为ATP)。作者建议一种方法:
方法 2:“可以开始构建新内容,但优先考虑将旧内容投入生产”</p>
但是(在我看来,或者我没有得到任何东西)这种方法根本不涉及 ATP。有一个冲刺,然后是另一个,但是 ATP 在哪里。或者在作者看来,第一个 sprint 中包含 ATP。如果是这样,那么它是如何引用语句形式的子章验收测试是否应该成为 sprint 的一部分?前几页:
我们在这里摇摆不定。我们的一些团队在 sprint 中包括验收测试。然而,我们的大多数团队都没有这样做,原因有两个: 冲刺是有时间限制的。验收测试(使用我的定义,包括调试和重新发布)很难进行时间限制。如果时间用完而您仍然有一个严重的错误怎么办?您是否要发布具有严重错误的生产?你要等到下一个冲刺吗?在大多数情况下,这两种解决方案都是不可接受的。因此,我们将手动验收测试留在外面。如果您有多个 Scrum 团队在同一产品上工作,则必须对两个团队工作的综合结果进行手动验收测试。如果两个团队都在 sprint 中手动接受,你仍然需要一个团队来测试最终版本,
所以伙计们,(这是问题):你如何理解那一章?
除此之外,这是我的想法:作者提到由于严重的错误问题,ATP 不应该成为 Sprint 的一部分?好吧,如果没有 ATP,我们就不能在 sprint 中遇到这样的问题吗?我们可以。无论哪种方式(我们在 Sptint 中是否有 ATP)我们都遇到了麻烦。底线:如果 Sprint 时间盒足够长(也许这是作者在方法 2中的想法),它也可以处理 ATP。它将消除发布后到达的大量错误。
谢谢,帕维尔
PS你知道任何页面有变化与书的作者积极聊天吗?
PS 2 在发布之前阅读我的问题时,我只是开悟了:也许是这样说:
方法 2:“可以开始构建新内容,但优先考虑将旧内容投入生产”</p>
作者:Sprint 1 完成,代码库(版本 1.0.0)进入 ATP。同时,我们正在为 1.1.0 版本启动 Sprint 2,同时修复 1.0.0 版本中发现的错误。当 Sprint 1 期间准备的代码库一尘不染时,它就会上线。所以在这里,我们有一些重叠之王。但是,如果这是作者的意图(我敢肯定不是),那么它就违反了基本原则:
- sprint 新软件可用后(不是因为我们等待 ATP 结束)
- 如果我们将 sprint 视为 sprint+ATP :),那么 sprint 没有时间限制。
总而言之,那本书读起来很棒,但是那一章对我来说有点模糊(我在那次阅读中也学到了一个很酷的词)。
database - Sql 或 Reports 的验收测试
我负责一个包含数百个 Sql Reports (SSRS) 的项目的开发和维护。我真的很想添加验收测试。是否有报告验收测试的最佳实践?
我们目前正在为 .net 项目使用多个测试框架,因此对 TDD、BDD - 用户故事等感到满意。人们是否使用类似的方法进行报告验收测试,例如
有些报告需要很长时间才能运行,人们是否使用专用的验收测试数据库?
有没有人在 SSRS 中使用像 watir 这样的跑步者?
非常感谢您对该领域的任何见解!
authentication - 如何通过 UI 自动化实现给定的登录用户角色?
我在如何通过Web UI 自动化(例如使用 WatiN)实现登录用户角色的Given步骤(例如使用 SpecFlow)时遇到问题。
假设我有以下功能:
此功能使用管理员用户角色。一种可能的情况是:
这只是一个例子。该场景也可以通过单击按钮或链接并验证页面上的某些文本或其他内容来编写,但我不打算进行讨论。
我想知道的是如何实现这个Given步骤。我看到了几个选项:
- 编写所有以管理员身份登录的内容(转到登录页面,以管理员身份登录)
- 验证每个页面上可见的某些登录状态(当前登录为...)
但是,如果身份验证机制是 Windows 身份验证(集成安全性/Active Directory)或其他环境中的类似机制,并且没有可见的登录状态指示并且您需要为整个站点的每个页面登录,该怎么办?
我希望我错过了一些东西,有人可以指出我正确的方向。