Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么编码UI测试自动化很重要?_C# - Fatal编程技术网

C# 为什么编码UI测试自动化很重要?

C# 为什么编码UI测试自动化很重要?,c#,C#,我对测试应用程序这一主题还不熟悉。已经有几天了,我们开始在互联网上浏览一些有用的教程。老实说,我能找到一些好的视频 让我了解如何使用MSVisualStudio2010实现一些编码UI测试自动化、数据库单元测试以及单元测试。 但在我的脑海里仍然有很多问题。例如,CUIT的自动化只是 记录我自己在运行应用程序和测试时所做的事情。那又怎么样。。? 它只是记录了我的行为。实际上,我是传统上测试应用程序的人。 我知道,肯定有什么原因我不知道! 谁能给我解释一下自动编码UI测试是如何帮助我的? 另一方面,

我对测试应用程序这一主题还不熟悉。已经有几天了,我们开始在互联网上浏览一些有用的教程。老实说,我能找到一些好的视频 让我了解如何使用MSVisualStudio2010实现一些编码UI测试自动化、数据库单元测试以及单元测试。 但在我的脑海里仍然有很多问题。例如,CUIT的自动化只是 记录我自己在运行应用程序和测试时所做的事情。那又怎么样。。? 它只是记录了我的行为。实际上,我是传统上测试应用程序的人。 我知道,肯定有什么原因我不知道! 谁能给我解释一下自动编码UI测试是如何帮助我的? 另一方面,关于数据库单元测试也有类似的问题。 我在YouTube上找到了一个视频教程来解释这个例子。它只是简单地检查一下 如果要使存储过程正常工作!显然,当我运行我的应用程序(按F5键)时,我只需了解Insert SP是否工作正常! 因此,我还是不能理解数据库单元测试的作用是什么? 如果有人能给我一个想法或任何有用的链接,我将提前表示感谢。
谢谢,

拥有自动化测试的一大优势是,它让您有信心更改和修复东西,并添加功能,而不必担心某些东西会损坏,或者会有意外的副作用。在每次更改后运行预编码测试既简单又便宜,因此即使在开发周期的后期也可以进行风险最高的更改,并且仍然可以确信应用程序仍然良好

另一个优点是:假设您编写的某些新代码确实破坏或更改了某些现有功能。然后,你就有了一个简单的方法来发现到底发生了什么变化(只需运行自动测试并查看结果!),然后你就可以对这些变化进行推理,并将它们分类为bug、实际需要的副作用/变化等。否则,开发很快就会变成“向前一步,向后两步”的混乱局面-每次签入可能会修复一个问题并引入两个新问题。即使开发人员意识到了这两个新问题(情况并非总是如此),尽管他们的意图是好的,但他们以后还是会忘记解决这些新问题

您可以说您可以“只运行SP”或自己“只运行”UI。但这并不具有可伸缩性。。。同样,在理想情况下,您希望能够在每次更改后自动运行1000个测试,而无需任何费用,这意味着它们必须是自动化的。另外,您还可以通过运行应用程序来了解SP是否正常工作。。。但是,随着数据库和应用程序变得越来越复杂,要在应用程序中正确地测试数据库,您必须做些什么变得越来越不明显。另外,如果以后需要创建使用相同数据库的第二个应用程序,该怎么办?(例如,您现在有一个网站,以后需要为管理员创建一些命令行工具)

由于显而易见的原因,当有多个人在同一段代码上工作时,所有这些都变得更加重要。如果没有良好的自动化测试覆盖率,复杂的代码片段很快就会成为一个人的专有领域(“不要在没有与Joe交谈的情况下接触代码!”)


当然,这并不意味着您应该盲目地将所有可用的测试技术应用于所有项目,尤其是相对“昂贵”的OVE,如CUIT(这可能很昂贵,因为如果您的UI在项目过程中发生了很大变化,那么这类测试可能更难更新)。相反,您应该对项目中的实际风险区域进行适当的评估(如果您愿意,“bug农场”),并在周期中的适当时间引入每种类型的测试,即制定实际的测试计划。最后一段是我的观点,显然有不同的方法来选择测试的内容/方式/时间

我不记得在哪里看到过这个,但它很好地总结了单元测试


“编写良好的单元测试找不到bug…但它肯定能找到回归”

关于记录您操作的测试软件的说明,这在尝试复制bug时非常方便,尤其是在您第一次开始编写测试时

正如Eugene指出的,当你有一个以上的编码员时,事情会变得更加复杂,我还想补充一点,当软件必须与其他组件(例如服务器、其他软件包)交互时,它会变得非常复杂。假设另一个组件是完美的并不总是安全的。因此,自动化测试的想法是,在您不断编写软件的同时,您可以针对以前完成的所有工作进行测试,而无需做任何工作。例如,我编写了一个使用蓝牙连接的程序,但我添加了WiFi,我可以对WiFi使用大多数(如果不是全部的话)蓝牙测试用例。在一个UI示例中,假设您添加了一个新按钮,在这个过程中,您意外地打破了一个旧按钮,如果您有10个按钮,并且它与新按钮没有关系,那么您不必手动测试它,但是自动测试套件会立即将其选中

如果你需要更多关于测试的理由,我强烈建议你阅读这篇文章,说明你为什么应该测试,以及它的好处,并举例说明如何进行测试。它也有一些关于DB测试的例子


我希望这会有所帮助,我也是测试新手,但在短时间内学到了很多东西。

是的,它只记录了您所做的事情,因此您正在测试应用程序。但是你只需要测试一次,之后,它就可以自己运行了。这比必须测试你自己的好处是显而易见的,而且要确保你每次都在做同样的事情。。听起来很合理,克里斯!感谢LotusDatabase单元测试允许您检查