首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟复杂集成/GUI自动化测试数据

如何模拟复杂集成/GUI自动化测试数据
EN

Software Engineering用户
提问于 2020-02-19 17:09:18
回答 1查看 764关注 0票数 1

概况

最近,我们团队中的自动化测试遇到了很多问题。部分原因是被指定写作的人没有什么经验。在这一失败之后,我们采用了一种不同的方法,其中产品所有者和开发人员更多地参与了自动化测试的整个过程,因此质量得到了改善。

如果没有一个好的解决方案,我们还面临一个问题,那就是测试数据和维护。

我们有用RestSharp和xUnit编写的集成测试(后端是ASP.Net Core),以及使用Selenium和xUnit (前端是角的)编写的ASP.Net测试。

这两者都依赖于MS作为数据存储。

现在,最佳实践表明,测试应该尽可能相互独立。这在单元测试中很容易实现,在这里我们可以安排测试数据,因为被测试的部分非常小。然而,在GUI/Integration测试中,情况有点不同。

问题描述

由于GUI/集成测试通常执行复杂的操作(测试的元素比单元测试多),因此很难为每个单独的测试在数据库中创建独立的模拟数据。

场景

让我们假设我们希望为一些分层组织结构编写自动化测试,该结构是通过CRUD屏幕添加的。我们有有儿童区域的网站,然后有儿童分区等等。

第一个测试是测试添加和编辑站点。这很简单。对区域的第二个测试需要在系统中分配一个预先存在的站点,这样我们就可以创建层次结构。第三,需要场地和面积等。

因此,从根本上说,测试场景越复杂,它可能需要的特定数据就越多,并且在层次结构开始时出现故障--add会失败其他测试,这些测试本身可能工作得很好。

可能的解决方案

  1. 测试在创建数据时相互依赖--在我看来,这是一种非常糟糕的方法,因为第一个测试失败将导致其他测试失败。另外,对于更复杂的场景,它的扩展也不是很好。
  2. 每个测试都分别加载它的数据--这允许测试是独立的,但由于这一点,我们将有大量代码来加载测试的数据,以防发生更改或问题,这也会导致大量的重新工作,因此也会使测试变得有点脆弱。
  3. 我们可以用码头进行集装箱化。创建数据库映像,并在每次运行时用数据加载数据库。这将使我们能够确保可以并行运行更多的测试,但解决方案1和解决方案2也需要实现,以将数据推入容器中。
  4. 我们可以把测试分成不同的类别。简单/复杂的。一个简单的,我们假设可以写在尽可能多的孤立。复杂的测试可以有共享的步骤(层次结构就是这样的例子,我们可以接受有一些链式的测试步骤)。

如能在此提供指导,将不胜感激。创建成功的测试自动化是一项艰巨的工作,最好的办法就是从最好的方向开始。

EN

回答 1

Software Engineering用户

发布于 2020-03-28 09:58:36

基本上,在MVC模型的框架中,UI和控制器层与数据模型是分开测试的。在您的情况下,我将分别测试DAO层、Controller和UI。模拟控制器可以模拟UI的测试,它应该模拟真实的响应,并在一个简单的、甚至内存中的数据库中执行CRUD。可以在DAO层的集成测试中检查真实的数据库。在测试UI或控制器时,没有理由使用真正的数据库和后面的DAO来运行UI的Unit测试。所有这些都可以通过在集成测试中运行实际场景来测试,而不是每个单元。

在我看来,你把测试的过程复杂化了。

票数 -1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/405456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档