集成测试是不是应该绕过登录自然过程,以免多次重新测试相同的登录功能
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"
【讨论】:
以上是关于集成测试是不是应该绕过登录自然过程,以免多次重新测试相同的登录功能的主要内容,如果未能解决你的问题,请参考以下文章