当前位置: 首页 > 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.dtcms.com/a/322471.html

相关文章:

  • kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器
  • Nginx高性能web服务器
  • 如何衡量需求的紧急程度
  • 单片机输出高电平的两种方式
  • Spring Boot自定义Starter:从原理到实战全解析
  • TDengine IDMP 产品基本概念
  • Redis面试题及详细答案100道(01-15) --- 基础认知篇
  • 原生Vim操作大全
  • 分享一个基于Spark的眼科疾病临床数据可视化分析与应用研究Hadoop基于Vue和Echarts的眼科疾病统计数据交互式可视化系统的设计与实现
  • 麦当秀|MINDSHOW:在线AI PPT设计工具
  • linux 操作ppt
  • OceanBase架构设计
  • 7、docker |其余命令
  • 机器学习——08 特征降维
  • Android MVP架构详解:从理论到实践
  • (第三篇)spring cloud之Zookeeper注册中心
  • 观远BI 工具驱动零售消费行业精益增长的实践路径
  • 从反射到方法句柄:深入探索Java动态编程的终极解决方案
  • 【3D图像技术分析与实现】如何进行基于3DGS的城市道路重建?
  • 疯狂星期四文案网第34天运营日记
  • 计算机网络:如何将/22的CIDR地址块划分为4个子网
  • CosyVoice 语音合成模型性能优化实战:从 CPU 瓶颈到 GPU 加速的完整解决方案
  • Nginx 性能优化与动态内容处理
  • LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C++_困难)(贪心算法)
  • 关于开发语言的一些效率 从堆栈角度理解一部分c java go python
  • nginx的安装
  • QML 鼠标穿透
  • 目标检测数据集 - 人脸佩戴检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 105-基于Flask的珍爱网相亲数据可视化分析系统
  • 深度学习图像分类数据集—七种虾病虫害分类