集成测试是不是应该绕过登录自然过程,以免多次重新测试相同的登录功能

Posted

技术标签:

【中文标题】集成测试是不是应该绕过登录自然过程,以免多次重新测试相同的登录功能【英文标题】:Should integration test bypass login natural processes in order don't retest same login functionality for many times集成测试是否应该绕过登录自然过程,以免多次重新测试相同的登录功能 【发布时间】:2020-06-09 14:04:16 【问题描述】:

假设我正在测试一个 Web 服务,我有几个场景需要对用户进行身份验证:

Scenario #1: Customer sign-up

Scenario #2: Customer sign-in

Scenario #3: Customer change name

Scenario #4: Customer update image

所有测试都应该通过所有登录步骤,例如:

1) Go to register page
2) Enter new user information
3) Activate account
4) Go to login page
5) Enter login and password
6) Press the Login button
7) Check if I authenticated as a customer

或者我可以只测试一次并实现快速创建用户并登录的端点。

因此,如果我有这种端点,这意味着我可以一直跳过重新测试相同的事情,而只需执行简短的场景 #3 和 #4。但在这种情况下,我的环境不太自然。

请告诉我您在实际项目中使用的最佳实践

【问题讨论】:

可以通过调用 Web 服务端点之一来完成用户登录吗?这些测试是自动化用户界面,还是直接调用网络服务? 【参考方案1】:

几个最佳实践:

使用测试金字塔 integration > ui(在 UI 上测试要慢得多,在 UI 中仅自动化覆盖主要流程的必要内容) 对于 UI,使用快速方法进行设置(所以是的,Web 服务,只测试登录一次) 如果可能的话,在构建过程中保留一些测试数据(例如,确保可能更改数据结构的新构建不会影响基本功能,例如登录) 测试应该是原子的(不相互依赖) 不时进行一些清理以删除重复的测试代码并改进框架(速度、稳定性)

【讨论】:

【参考方案2】:

您不应将“登录”场景复制并粘贴到所有其他场景中,但拥有帐户并登录是其他用例的先决条件。从行为驱动开发的角度来看,这将转化为模拟或实际执行这些步骤的一个或多个Given 步骤:

Scenario: Customer change name
    # Calls web service or database to create new user
    Given "Bob" is a registered user

    # Calls web service or database to make account active
    And "Bob" has an active account

    # Opens browser, navigates to login page, fills out login form and submits it
    And the user is logged in as "Bob"

    # Steps specific to changing name and asserting it has changed
    When the user changes their name to "Samuel"
    Then the user's name is "Samuel"

【讨论】:

以上是关于集成测试是不是应该绕过登录自然过程,以免多次重新测试相同的登录功能的主要内容,如果未能解决你的问题,请参考以下文章

Centos 6安装 Jenkins

v1.6中的Subversion分支重新集成[重复]

jenkins,设置集成测试环境,就是构建过程先部署服务,然后运行整体测试用例,执行完后在关闭服务

《Google软件测试之道》

web渗透测试之攻破登录页面

怎样测试method中变量的值 mock