首页 > 解决方案 > 测试具有多个连续页面的 webapp 时出错

问题描述

我正在测试一个 ASP.NET webapp(我无权访问的代码),它具有多个连续页面,在 Cypress 脚本中具有以下相关部分:

describe("Calculation", function() {

  // ...

  context("Pages", function() {

    // ... 

    // Page 1
    it("With all inputs", function() {
      cy.visit(url)
      // ... setting input fields ...
      cy.get(next).click()
      cy.get('.stg-error-mark').should('have.length', 0)
    })
  
    // Page 2
    it("No selection", function() {
      cy.get(next).click()
      cy.get('.stg-error-mark').should('have.length', 2)
    })
  })
})

Page 2it(...)的命令日志包含:

...
- CLICK
(FORM SUB) -- 提交表单--   ← 第 2 页在赛普拉斯的应用预览中看起来不错。
(PAGE LOAD) --page loaded--   ← webapp 在 App Preview 中显示以下错误。
...

 

错误

输入事务被自动取消,因为它没有持续太久。请重新开始。

如果Page 1没有visit()在. it(...)_Page 2

我知道将所有相关的页面代码部分放入 ( describe-global)中function并越来越多地调用它们,并且总是从Page 1每个测试开始。但是,由于这个应用程序有 33 个不同的功能路径和 5 到 6 个连续页面(取决于用户在前一页上的输入),我想避免这种代码膨胀、混乱、容易出错和耗时的函数链接——并且全球人是魔鬼。

更新

从理论到实践,这是功能路径图:

  +------ Seite 1 -------+----- Seite 2 -----+------ Seite 3 ------+------ Seite 4 ------+- Seite 5.1 -+- Seite 5.2 -+
  |    Wohneinheiten     |   Fördermodell    |   1. Wohneinheit    |   2. Wohneinheit    | Berechnung  | Berechnung  |
  |         2/4          |        8/2        |        12/10        |         6/5         |   Input     |   Output    |
  |                      |                   |                     |                     |             |             |
  |    Wohneinheiten:    |   ▼ Modell        |  Heizwärmebedarf:   |                     |             |             |
  |  +- <no> --->(X)     |  +-▼ Passiv ------>-- HWB: ----------------------------------->------------->             |
  |  |                   |  |                |   +- !]0..10]       |                     |             |             |
  |  +- WE1: --->(X)     |  |                |      +--->(X)       |                     |             |             |
  |  |                   |  |                |                     |                     |             |             |
  |  +- WE2: --->(X)     |  +-▼ Punkte ------>-- HWB: ----------------------------------->------------->             |
  |  |                   |  |                |   +- !]10..49]      |                     |             |             |
  |  +- WE1:             |  |                |      +--->(X)       |                     |             |             |
  |  |  +- AV-V: -------->--+                |                     |                     |             |             |
  |  |                   |  |                |  +-▼ PV ---------------------------------->------------->             |
  >--+                   |  |                |  +-▼ Solar ------------------------------->------------->             |
  |  |                   |  +-▼ Niedrig ----->--+-x WRL --------------------------------->------------->             |
  |  |                   |  |                |  +- <no> --->(X)    |                     |             |             |
  |  +- WE2:             |  |                |                     |                     |             |             |
  |  |  +- AV-V: --->(X) |  +-▼ Niedrigst --->--▼ Heizsystem ---------------------------->------------->             |
  |  |                   |  |                |    +-▼ Elektrisch   |                     |             |             |
  |  |                   |  +-▼ <no> --->(X) |        +-▼ PV2kWp   |                     |             |             |
  |  |                   |                   |        |   +--->(X) |                     |             |             |
  |  |                   |                   |        +-o WRL      |                     |             |             |
  |  |                   |                   |            +--->(X) |                     |             |             |
  |  +- WE1:             |                   |                     |                     |             |             |
  |     +- WE2:          |   ▼ Modell        |  Heizwärmebedarf:   |  Heizwärmebedarf:   |             |             |
  |        +- AV-V: ----->--+-▼ Passiv ------>-- HWB: ------------->-- HWB: ------------->------------->             |
  |                      |  |                |   +- !]0..10]       |   +- !]0..10]       |             |             |
  +----------------------+  |                |      +--->(X)       |      +--->(X)       |             |             |
                         |  |                |                     |                     |             |             |
                         |  +-▼ Punkte ------>-- HWB: ------------->-- HWB: ------------->------------->             |
                         |  |                |   +- !]10..49]      |   +- !]10..49]      |             |             |
                         |  |                |      +--->(X)       |      +--->(X)       |             |             |
                         |  |                |                     |                     |             |             |
                         |  +-▼ Niedrig ----->--+-▼ PV  ----------->--+-▼ PV  ----------->------------->             |
                         |  |                |  +-▼ Solar --------->  +-▼ Solar --------->------------->             |
                         |  |                |  +-x WRL ----------->  +-x WRL ----------->------------->             |
                         |  |                |  +- <no> --->(X)    |  +- <no> --->(X)    |             |             |
                         |  |                |                     |                     |             |             |
                         |  +-▼ Niedrigst --->--▼ Heizsystem ------>--▼ Heizsystem ------>------------->             |
                         |  |                |    +-▼ Elektrisch   |    +-▼ Elektrisch   |             |             |
                         |  +-▼ <no> --->(X) |        +-▼ PV2kWp   |        +-▼ PV2kWp   |             |             |
                         |                   |        |   +--->(X) |        |   +--->(X) |             |             |
                         |                   |        +-x WRL      |        +-x WRL      |             |             |
                         |                   |            +--->(X) |            +--->(X) |             |             |
                         +-------------------+---------------------+---------------------+-------------+-------------+
Legend:
  : ...... Textbox
  .. ..... Interval
  ▼ ...... Dropdown-Listbox or selection
  x,o .... Checkbox (checked, unchecked)
  <no> ... No input or selection
  ! ...... Not
  (X) .... Error
  > ...... Proceed to page or error

现在一切都清楚了,不是吗?(:好的,它在绿色中看起来不那么压倒性,在编辑器中看起来更高更宽。)

在输入 on的情况下,它的Seite 3Seite 4在下部相同和重复WE2Seite 1

标签: javascriptasp.netweb-applicationsfunctional-testingcypress

解决方案


(我不是反对者)

我不确定您的问题到底是什么-您需要提供更多信息:

  • 错误来自哪里以及触发它的原因是什么?
  • 你确定你不拆除状态/cookies/等吗?测试用例之间?

无论哪种方式,通常您不应该在一个测试用例依赖于前一个测试用例的测试用例之间共享状态,并且测试用例必须按给定顺序运行。测试用例 ( it) 应该相互独立并且自给自足。

不遵守此最佳实践会导致难以维护的复杂测试用例。您也无法切换it.only以测试单个案例,依此类推。

当您不拥有整个代码库(在团队项目中)时,这一点尤其重要,因为有人可能会更改测试的运行方式(例如,清除测试之间的状态;随机化测试顺序...)。


推荐阅读