Jos*_*ger 3 html testing integration-testing automated-tests web-applications
我们使用自动化测试来验证Web应用程序的功能.为了使测试用例中的断言更简单,更灵活,我们正在考虑引入'TestIDs',即HTML标记中的ID,以帮助测试用例找到并验证页面上的元素.此外,这些TestID将允许更具体的集成测试,由于页面上的数据有限,这些测试目前是不可能的.
然而,这就是让我们犹豫的原因:
将TestID限制为测试/暂存HTML似乎不是一个好主意,因为我们显然希望测试将在生产中使用的代码,并且不希望我们的测试/暂存环境表现不同.实际上,我们目前在发布后针对实时系统运行部分测试套件.
你认为TestIDs是个好主意吗?如果是这样你会如何将它们放入标记中?
一些示例标记来演示我正在谈论的内容:
<!-- this test id allows an integration test to verify that
the carrot 188271 is in fact green but exposes the id to the user -->
<tr id="testid-carrot-id-188271">
<td class="color">green</td>
<td class="size">doesn't matter</td>
</tr>Run Code Online (Sandbox Code Playgroud)
我永远不会留下用于在现场网站上测试的代码.这只是一个糟糕的原则,并邀请黑客入侵.
只要您的测试ID被格式化,使得它们不会与页面上的其他ID发生冲突(ID必须是唯一的),并且未被任何实时代码引用(如果您无法确定是否存在某些内容这里更大的错误)那么测试站点与ID和没有它们的实际站点之间的行为应该没有任何差异.
在我看来,最佳做法是设计使您的测试代码在您的开发网站上正确执行,并且您知道删除它不会损害您的实时网站.如果我的网站需要定期测试实时版本以确保它正常工作,我会担心.
我想说,更简单、更好的测试的好处超过了感知到的风险。我假设您正在谈论类似以下内容:将 id='resultDetail' 添加到页面上的结果详细信息元素中,以便更容易找到自动化测试。坦率地说,我不认为这有什么坏处。如果我的观点过于简单化,也许您可以提供一些示例标记,以便我们更好地了解您正在考虑的内容。
看过您的示例标记后,我认为向用户提供 id 没有任何问题。许多应用程序公开域 ID。事实上,根据我的经验,这些域 ID 通常是 UI 的一个组成部分 - 通常 ID 是链接,您可以单击它们来获取更多详细信息、编辑、删除等...