从用户登录谈谈测试用例设计

本文详细阐述了如何利用等价类划分和边界值分析方法设计针对‘用户登录’功能的详尽测试用例,涵盖功能性与非功能性需求,强调测试覆盖的重要性及测试用例设计的策略和技巧。

        等价类划分和边界值分析方法是最常用、最典型并且是最重要的黑盒测试方法。

一、功能测试用例

        针对“用户登录”功能测试,基于等价类划分和边界值分析方法,能够设计的功能测试用例有:

        1、输入已注册的用户名和正确的密码,验证是否登录成功;
        2、输入已注册的用户名和不正确的密码,验证是否登录失败,并且提示信息正确;
        3、输入未注册的用户名和任意密码,验证是否登录失败,并且提示信息正确;
        4、用户名和密码两者都为空,验证是否登录失败,并且提示信息正确;
        5、用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确:
        6、如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否登录成功;
        7、如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入错误的验证码验证是否登录失败,并且提示信息正确。
        8、用户名和密码是否区分大小写?
        9、页面上的密码框是否加密显示?
        10、后台系统创建的用户第一次登录成功时,是否提示修改密码?
        11、忘记用户名和忘记密码的功能是否可用?
        12、前端页面是否根据设计要求限制用户名和密码长度?
        13、如果登录功能需要验证码,单击验证码图片是否可以更换验证码?更换后的验证码是否可用?
        14、刷新页面是否会刷新验证码?
        15、如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性。
        16、如果用户登录成功但是会话超时,继续操作是否会重定向到用户登录界面?
        17、不同级别的用户(如管理员用户和普通用户)登录系统后的权限是否正确?
  &nb

<think>好的,我需要帮助用户解决关于编写测试用例、接口文档和自动化测试脚本的问题,以及解释功能测试和接口测试的区别。首先,用户提到了航班预订系统的功能测试用例,特别是登录模块和订单模块。我需要参考之前的引用,特别是引用[2]和[3]中提到的Excel使用方法,以及如何用unittest和ddt进行参数化测试。首先,功能测试用例的编写。用户需要知道如何根据需求文档使用Excel来设计测试用例。引用[2]中的例子使用了Excel来存储测试数据,包括URL、方法、参数等,这可以作为模板。登录模块需要考虑有效和无效的用例,比如正确的用户名密码、错误密码、空输入等。订单模块可能需要测试创建订单、取消订单、查询订单等场景,每个场景需要不同的参数和预期结果。需要确保测试用例覆盖正常和异常情况,并遵循等价类划分和边界值分析。 接下来是12306注册用户判重接口的接口文档和自动化测试脚本。接口文档需要包含URL、方法、请求参数、响应字段、示例等。用户之前的问题中已经有一个示例代码,使用unittest、ddt和requests,所以需要在此基础上进行调整。确保测试方法以test开头,使用@data装饰器传递多组数据,每个测试用例发送请求并断言结果是否符合预期。需要注意参数化测试的数据来源,可能是Excel文件,如引用[2]中的做法。然后是关于功能测试和接口测试的区别。功能测试关注用户界面和业务流程,验证整个系统是否符合需求。接口测试则更底层,直接测试API的正确性、性能和安全性,不依赖UI。需要强调两者的侧重点,比如功能测试使用Selenium等工具,而接口测试用requests库,以及测试覆盖的不同层次。在编写回答时,需要结构清晰,分点解答每个问题。确保引用相关的引用[1]、[2]、[3]中的内容,比如在接口文档部分提到使用Excel管理测试数据,引用[2]中的代码示例。同时,注意用户提到的系统级指令,比如正确使用LaTeX格式,虽然这个问题可能不涉及数学公式,但需要检查是否有必要的地方。最后生成相关问题,可能涉及测试用例管理、性能测试、持续集成等。 需要验证用户提供的代码示例是否有潜在问题,比如测试类是否继承TestCase,方法名是否正确,装饰器使用是否正确。例如之前的AttributeError是由于方法名不以test开头,所以需要提醒用户注意命名规范。另外,在接口测试脚本中,是否处理了异常情况,比如网络错误或响应格式不正确,可能需要添加异常处理逻辑。 最后,确保回答符合中文要求,引用标识正确添加,代码块格式正确,相关问题合理且与主题相关。可能的问题包括如何管理大量测试用例,如何结合性能测试工具如LMbench(引用[1]),或者如何集成到CI/CD流程中。</think>### 一、航班预订系统功能测试用例设计 #### 1. 登录模块测试用例设计 使用Excel表格管理测试数据时,需包含以下字段: - **用例编号**:唯一标识 - **用例标题**:如“登录成功-有效用户名密码” - **用户名/手机号**:输入值 - **密码**:输入值 - **验证码**(如有) - **预期结果**:如登录成功跳转页面或错误提示 - **实际结果**:执行后填写 - **测试状态**:Pass/Fail **示例Excel结构**: | 用例编号 | 用例标题 | 用户名 | 密码 | 预期结果 | |----------|--------------------------|----------|--------|-----------------------| | LOGIN_01 | 有效用户名密码 | test123 | Pass@1 | 跳转至个人中心 | | LOGIN_02 | 密码错误 | test123 | wrong | 提示“密码错误” | | LOGIN_03 | 空用户名 | (空) | Pass@1 | 提示“用户名不能为空” | #### 2. 订单模块测试用例设计 需覆盖以下场景: - 订单创建(航班选择、乘客信息填写、支付) - 订单查询 - 订单取消 **示例Excel结构**: | 用例编号 | 用例标题 | 出发地 | 目的地 | 乘客信息 | 预期结果 | |----------|--------------------------|--------|--------|----------|-----------------------| | ORDER_01 | 正常创建订单 | 北京 | 上海 | 张三 | 订单状态为“已支付” | | ORDER_02 | 乘客信息为空 | 北京 | 上海 | (空) | 提示“乘客信息必填” | **设计原则**: - 使用**等价类划分**和**边界值分析**覆盖正常/异常场景[^3] - 通过Excel参数化实现数据与代码分离(参考引用[2]中的`@data(*excel_data)`) --- ### 二、12306注册用户判重接口文档与测试脚本 #### 1. 接口文档编写 | 字段 | 说明 | |--------------|-------------------------------| | **接口名称** | 用户判重接口 | | **URL** | `https://kyfw.12306.cn/otn/regist/checkUserName` | | **方法** | GET | | **请求参数** | `userName`(用户名), `appType`(固定值"web") | | **响应字段** | `result`(True/False), `msg`(提示信息) | **请求示例**: ```http GET /checkUserName?userName=testuser&appType=web HTTP/1.1 Host: kyfw.12306.cn ``` **响应示例**: ```json {"result": false, "msg": "用户名已存在"} ``` #### 2. 自动化测试脚本实现 基于`unittest`+`ddt`+`requests`的参数化测试: ```python import unittest from ddt import ddt, data import requests import json @ddt class TestUserCheck(unittest.TestCase): base_url = "https://kyfw.12306.cn/otn/regist/checkUserName" @data( {"userName": "new_user", "expected": True}, {"userName": "existing_user", "expected": False} ) def test_username_check(self, case): params = { "userName": case["userName"], "appType": "web" } response = requests.get(self.base_url, params=params) result = response.json() self.assertEqual(result["result"], case["expected"], f"用户判重失败:{case['userName']}") if __name__ == "__main__": unittest.main() ``` **关键点**: - 使用`@ddt`和`@data`装饰器实现参数化[^2] - 断言响应中的`result`字段与预期一致 - 通过`unittest.main()`执行测试集 --- ### 三、功能测试与接口测试的对比 | **维度** | **功能测试** | **接口测试** | |----------------|-----------------------------------------------|-----------------------------------------------| | **测试对象** | 用户界面(UI)及业务流程 | API接口(如HTTP/RPC) | | **侧重点** | 验证用户操作是否符合需求文档 | 验证接口逻辑、性能、安全性 | | **工具** | Selenium/Appium/Cypress | Requests/Postman/JMeter | | **执行速度** | 较慢(依赖UI渲染) | 较快(直接调用接口) | | **覆盖层次** | 黑盒测试用户视角) | 灰盒测试(关注数据流与状态码) | | **典型场景** | 登录页面跳转、订单支付流程 | 参数校验、接口超时、并发性能[^1] | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值