编码的UI测试

问题描述 投票:0回答:3

我想使用编码的ui测试自动化一些测试。我的一些测试涉及针对我想要断言的数据库进行事务处理。但是运行这些自动化测试会引入自己的问题,每次测试运行时都可以修改(添加,更新或删除记录)数据库的状态。在修改数据库时是否有一些一般指导如何创建编码的ui测试?我想添加模拟存储库吗?我是否要创建一个具有数据库服务器的测试环境,该服务器可以在每次测试运行时恢复为快照?如果编码的ui测试不涉及从数据库事务中断言值,而只是断言一个按钮被单击并让单元测试断言数据库事务?

c# visual-studio unit-testing testing functional-testing
3个回答
3
投票

恕我直言这个问题适用于您编写的任何测试 - 不仅专门针对CodedUI测试。

您的测试可以在数据库进行时对数据库进行Query / ExecuteNonQuery。因此,在测试运行结束时,DB将从状态A移动到状态B.因此,确保在测试运行开始时运行某些数据库刷新脚本是很好的,这样您就可以确保在运行之前将数据库带入状态A,而不管其当前状态如何。

可能需要注意的是,当您在相同的测试数据上运行相同的测试时,在测试运行开始时DB状态保持不变,您每次都执行完全相同的测试,并且测试中的应用程序有可能对这些测试不敏感,测试运行最终会随着时间的推移而收益递减。因此,随机化测试工作的测试数据可能是一个好主意。


0
投票

它可以像你想要的那样简单或复杂。

最简单的方法是在每次运行时完全重置数据。这可能意味着每次使用一些模式创建脚本从头开始创建数据库。

更复杂的解决方案是仅重置模式的部分(即:某些表,具体取决于测试的性质)。相关表格等

无论你做什么 - 期望测试按特定顺序运行是不好的做法。如果您的套件中有50个测试,则这些测试必须能够以任何顺序运行,并根据测试人员运行 - 他们可能决定运行1个或所有测试。

这是高级别的东西。在实际实现方面,您可以找到使用属性标记测试的有趣方法,并且您可以定义要初始化的值的值(这可能是要清除的表名,或者如果您使用ORM可能是1个实体,并从那里动态确定相关表格。并动态运行清理输出。


-1
投票

是的,UI测试应该对测试数据进行断言,可以在登台环境中运行。

我发现在测试完成后按照练习测试清理并使数据库处于先前状态是有用的。它需要更加干净的测试用例设计,但在测试维护期间可以获得回报。或者,您可以在测试运行之前/之后重新导入数据库转储。

如果您研究自动化UI工具,我会推荐Anwendo [1],这是我开发的Web应用程序的UI测试工具。

[1] https://anwendo.com

© www.soinside.com 2019 - 2024. All rights reserved.