最近,我们团队中的自动化测试遇到了很多问题。部分原因是被指定写作的人没有什么经验。在这一失败之后,我们采用了一种不同的方法,其中产品所有者和开发人员更多地参与了自动化测试的整个过程,因此质量得到了改善。
如果没有一个好的解决方案,我们还面临一个问题,那就是测试数据和维护。
我们有用RestSharp和xUnit编写的集成测试(后端是ASP.Net Core),以及使用Selenium和xUnit (前端是角的)编写的ASP.Net测试。
这两者都依赖于MS作为数据存储。
现在,最佳实践表明,测试应该尽可能相互独立。这在单元测试中很容易实现,在这里我们可以安排测试数据,因为被测试的部分非常小。然而,在GUI/Integration测试中,情况有点不同。
由于GUI/集成测试通常执行复杂的操作(测试的元素比单元测试多),因此很难为每个单独的测试在数据库中创建独立的模拟数据。
让我们假设我们希望为一些分层组织结构编写自动化测试,该结构是通过CRUD屏幕添加的。我们有有儿童区域的网站,然后有儿童分区等等。
第一个测试是测试添加和编辑站点。这很简单。对区域的第二个测试需要在系统中分配一个预先存在的站点,这样我们就可以创建层次结构。第三,需要场地和面积等。
因此,从根本上说,测试场景越复杂,它可能需要的特定数据就越多,并且在层次结构开始时出现故障--add会失败其他测试,这些测试本身可能工作得很好。
如能在此提供指导,将不胜感激。创建成功的测试自动化是一项艰巨的工作,最好的办法就是从最好的方向开始。
发布于 2020-03-28 09:58:36
基本上,在MVC模型的框架中,UI和控制器层与数据模型是分开测试的。在您的情况下,我将分别测试DAO层、Controller和UI。模拟控制器可以模拟UI的测试,它应该模拟真实的响应,并在一个简单的、甚至内存中的数据库中执行CRUD。可以在DAO层的集成测试中检查真实的数据库。在测试UI或控制器时,没有理由使用真正的数据库和后面的DAO来运行UI的Unit测试。所有这些都可以通过在集成测试中运行实际场景来测试,而不是每个单元。
在我看来,你把测试的过程复杂化了。
https://softwareengineering.stackexchange.com/questions/405456
复制相似问题