当前位置: 首页 > news >正文

功能测试中常见的面试题-二

二、测试设计与用例编写题

  1. 解释等价类划分 (Equivalence Partitioning) 和边界值分析 (Boundary Value Analysis)?并举例说明。

    • 等价类划分 (EP): 将输入域划分为若干组(等价类),假设同一组内的数据对揭露程序错误具有等效性。只需从每个等价类中选取一个代表值进行测试即可。

      • 例子: 测试一个输入年龄(1-120岁)的文本框。

        • 有效等价类: [1, 120] (如 30)

        • 无效等价类: < 1 (如 0, -5) 和 > 120 (如 121, 200)

    • 边界值分析 (BVA): 是对等价类划分的补充,关注输入域边界及其附近的值。因为经验表明,边界处最容易出错。

      • 例子: 同上年龄输入框 (1-120)。

        • 有效边界值: 1, 120 (边界点), 2, 119 (边界内邻点)

        • 无效边界值: 0 (刚好小于下界), 121 (刚好大于上界)

    • 通常结合使用: 先划分等价类,再针对每个等价类的边界设计测试用例。

  2. 什么是决策表测试 (Decision Table Testing)?适用于什么场景?

    • 回答: 决策表是一种系统性的方法,用于测试由多个输入条件组合决定的不同输出结果(动作) 的业务规则或逻辑。它以表格形式列出所有可能的条件组合及其对应的预期输出。

    • 适用场景: 复杂的业务逻辑、规则引擎、具有大量布尔条件(真/假)组合的功能。

      • 例子: 信用卡申请审批规则(条件:年龄、收入、信用分;动作:批准/拒绝/需人工审核)。

  3. 什么是状态转换测试 (State Transition Testing)?适用于什么场景?

    • 回答: 这种方法适用于系统或对象的行为依赖于其当前状态,并且状态会因特定事件或条件而改变的场景。通过绘制状态转换图或状态转换表,设计测试用例来覆盖有效的状态转换路径(正常流)和无效的转换(异常流)。

    • 适用场景: 具有明确状态和状态转换的系统,如登录/登出流程、订单状态机(待支付、已支付、发货中、已完成、已取消)、工单状态、游戏角色状态等。

  4. 什么是错误推测法 (Error Guessing)?

    • 回答: 一种基于测试人员经验、直觉和对系统弱点的理解来推测程序中可能存在的错误,并针对性地设计测试用例的方法。它依赖于测试人员的技能和对类似系统常见缺陷的了解。

    • 例子: 测试文件上传功能时,推测可能的错误:上传超大文件、上传0字节文件、上传非法格式文件、上传文件名包含特殊字符的文件、网络中断时上传等。

  5. 一个好的测试用例应包含哪些要素?

    • 回答: 通常包含:

      • 用例ID: 唯一标识符。

      • 用例标题/描述: 清晰、简洁地说明测试目的(What to test?)。

      • 前置条件: 执行该用例前系统必须满足的状态(如:用户已登录,特定数据已存在)。

      • 测试步骤: 详细、可执行的操作步骤(How to test?)。

      • 测试数据: 执行步骤所需的具体输入值。

      • 预期结果: 每一步或整个用例执行后,系统应有的正确响应或状态(What should happen?)。

      • 后置条件: 执行后系统的状态(可选,常用于清理或为后续用例准备)。

      • 优先级: 标识用例的重要程度(高/中/低)。

      • 所属模块/功能: 方便组织和管理。

  6. 如何为一个登录功能设计测试用例?

    • 回答: 这是非常经典的场景题!考虑以下方面:

      • 功能正确性:

        • 输入正确用户名和密码 -> 登录成功(跳转到正确页面,创建有效Session)。

        • 输入正确用户名+错误密码 -> 登录失败,提示“密码错误”。

        • 输入错误用户名+正确密码 -> 登录失败,提示“用户名不存在或密码错误”(安全考虑,避免提示太明确)。

        • 输入错误用户名+错误密码 -> 登录失败。

        • 用户名/密码为空 -> 登录失败,提示“用户名/密码不能为空”。

        • 用户名/密码包含空格(前/中/后) -> 处理是否合理(通常应Trim前后空格)。

      • 输入验证 (等价类 & 边界值 & 特殊字符):

        • 用户名/密码长度限制(过短/过长/恰好边界)。

        • 用户名/密码允许的字符类型(字母、数字、特殊字符@#$_等,需根据需求)。

        • 输入SQL注入/XSS尝试字符串 -> 应被阻止或转义。

      • 用户体验:

        • 错误提示信息是否清晰、友好、无技术术语。

        • 登录失败后,密码是否被清空(安全考虑)?用户名是否保留(方便用户)?

        • 是否有“忘记密码”、“注册”等链接?是否可用?

        • 是否有“记住我”功能?是否有效?

      • 安全性:

        • 传输是否加密(HTTPS)?

        • 登录失败多次是否有锁定机制(防暴力破解)?

        • 登录成功后Session管理是否安全(Cookie HttpOnly, Secure)?

        • 错误信息是否泄露敏感信息(如明确提示“该用户不存在”)?

      • 其他:

        • 不同浏览器/设备上的表现(兼容性)。

        • 网络中断时登录。

        • 同时多点登录(同一账号在不同地方登录)的处理。

http://www.lryc.cn/news/615627.html

相关文章:

  • 【Python 高频 API 速学 ⑥】
  • 09 【C++ 初阶】C/C++内存管理
  • [激光原理与应用-207]:光学器件 - 光纤种子源激光器常用元器件
  • Linux文件系统基石:透彻理解inode及其核心作用
  • 【高等数学】第八章 向量代数与空间解析几何——第四节 空间直线及其方程
  • 分析报告:基于字节连续匹配技术的KV缓存共享实施可能性及其扩展
  • 【机器学习深度学习】模型选型:如何根据模型的参数算出合适的设备匹配?
  • 202506 电子学会青少年等级考试机器人二级理论综合真题
  • 202506 电子学会青少年等级考试机器人三级器人理论真题
  • openvela之STM32开发板部署
  • LLM表征的提取方式
  • EP06:【DL 第二弹】动态计算图与梯度下降入门
  • UCMT部分复现
  • Chaos Monkey 故障注入工具使用介绍
  • Spring Boot Starter 自动化配置原理深度剖析
  • CentOS7编译安装GCC
  • C++高频知识点(十七)
  • C++ 虚函数、多重继承、虚基类与RTTI的实现成本剖析
  • AI大模型模态特征详解
  • 鸿蒙分布式任务调度深度剖析:跨设备并行计算的最佳实践
  • <PLC><汇川><字符转换>在汇川PLC中,如何进行字符串的转换与比较?
  • 从零开始理解编译原理:设计一个简单的编程语言
  • 二十、MySQL-DQL-条件查询
  • Kotlin初体验
  • DeepSeek智能考试系统智能体
  • 在 VS Code 或 Visual Studio 2022 上搭建 ESP32-CAM 开发环境
  • Vulnhub----Beelzebub靶场
  • Day 20 奇异值SVD分解
  • 前端懒加载技术全面解析
  • 衰减器的计算