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

  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.pswp.cn/bicheng/93216.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93216.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93216.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SOLi-LABS Page-4 (Challenges)--54-65关

sql-54 翻译一下页面&#xff0c;得知我们只有十次机会。id参数是单引号闭合。 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 我得到的表名是igsyiz2p7z。&#xff08;每个人得到的应该都不一样&#…

docker代码如何在vscod上修改

基于 docker-compose.yml文件&#xff08;包含 ​​emqx​​&#xff08;MQTT服务&#xff09;、​​backend​​&#xff08;后端服务&#xff09;、​​mysql​​&#xff08;数据库&#xff09;&#xff09;的详细运行、调试、增改删操作说明&#xff0c;结合流程图示意&…

HTML5 CSS3 从入门到精通:构建现代Web的艺术与科学

本文将带你系统地学习掌握现代Web前端的基础与核心&#xff0c;最终能够独立构建语义清晰、布局灵活、交互丰富的专业级网站。 第一章&#xff1a;夯实基础 - HTML5语义化与结构艺术 1.1 告别<div>混沌&#xff1a;语义化标签的力量 <header><h1>网站标题…

C# 微软依赖注入 (Microsoft.Extensions.DependencyInjection) 详解

文章目录 前言 核心原理 三大生命周期 核心接口与类 基础使用示例 关键特性详解 1、构造函数注入 2、作用域管理 3、服务解析方法 4、延迟加载 常见问题解决 问题1:循环依赖 问题2:多实现选择 性能优化技巧 扩展方法示例 前言 微软的依赖注入框架是 .NET Core/5+ 的核心组件…

【车联网kafka】Kafka核心架构与实战经验(第四篇)

一、社团扛把子不为人知的秘密 香港社团里&#xff0c;Kafka 是整个组织的名号&#xff0c;ZooKeeper 就是说一不二的长老团&#xff0c;各个片区的 “话事人” 就是 broker&#xff0c;而能统领所有片区的 “扛把子”&#xff0c;就是 Kafka 里的控制器。​ 1.1 选举的秘密 每…

Scala重点(基础、面向对象、高阶函数、集合、模式匹配)

1. 基础语法1.1. 注释和java一样我是单行注释 /* 我是多行注释 我是多行注释 */ /** * 我是文档注释 * 我是文档注释 */1.2. 语句语句可以不以分号结尾一条语句独占一行 println("Hello World!")多条语句在一行 println("Hello World!"); println("He…

明远智睿T113-i核心板:工业设备制造领域的革新利器

在工业设备制造这片充满挑战与机遇的领域&#xff0c;技术革新如同一股汹涌浪潮&#xff0c;不断重塑着市场竞争的格局。随着技术持续进步&#xff0c;市场竞争愈发激烈&#xff0c;制造商们面临着如何在保证产品卓越性能的同时&#xff0c;有效控制成本这一关键难题。在此背景…

122-基于Flask的校园霸凌数据可视化分析系统

校园霸凌数据可视化分析系统 - 基于Flask的全栈数据分析平台 本文详细介绍了一个基于Flask框架开发的校园霸凌数据可视化分析系统&#xff0c;从技术架构到功能实现&#xff0c;为数据分析项目开发提供参考。 &#x1f4cb; 目录 项目概述技术架构核心功能代码结构技术栈详解核…

Docker 网络设置方式详解

Docker 网络是容器通信的核心基础&#xff0c;它允许容器之间、容器与主机之间以及容器与外部网络之间进行数据交互。Docker 提供了多种网络驱动类型&#xff0c;适用于不同场景&#xff0c;下面详细介绍 Docker 网络的设置方式。一、Docker 网络的基本概念 Docker 网络通过驱动…

export default和export function的作用及export的含义

在 JavaScript 中&#xff0c;export 是一个关键字&#xff0c;用于将模块中的变量、函数、类等导出&#xff0c;以便其他模块可以导入和使用。export default 和 export&#xff08;非默认导出&#xff09;是两种不同的导出方式&#xff0c;它们在使用场景和语义上有明显的区别…

免费 ollama 可用地址共享 内含免费 deepseek,gpt,bge,llama,Qwen,embed 大模型等

ollama 共享 介绍 集ollama地址的批量添加&#xff0c;批量校验&#xff0c;批量获取 &#xff0c;api接口调用于一体 演示地址&#xff1a;ollama格式化工具 开源地址&#xff1a;https://gitee.com/web/ollama-share 使用说明 index.php 通过提交table 批量提交ollama地…

Android Audio实战——获取活跃音频类型(十五)

在 Android Audio 开发中,很多场景需要获取当前正在播放的音频类型,而在音频管理器 AudioManager 中并没有发现类似的接口,这一篇文章就来看一下实现获取活跃音频类型的方式。 一、音频类型获取 对于获取当前活跃音频流类型,在《硬按键调节音量》中是通过 getActiveStream…

Verilog功能模块--SPI主机和从机(02)--SPI主机设计思路与代码解析

前言 上一篇文章介绍了SPI的四种工作模式及其时序特性&#xff0c;相信各位同学已经掌握了SPI通信的核心原理。 本文用纯Verilog设计了功能完整的4线SPI主机&#xff0c;并详细说明了模块编码思路和使用注意事项&#xff0c;最后分享了源码。 一、模块功能 本Verilog功能模块—…

Decoder模型 向量模长表示什么

Decoder模型 向量模长表示什么 词和其他词的关系的强弱和关联程度;生僻词模长小 从实验结果来看,Qwen2-7B-Instruct的向量模长规律与之前的预期(“模长与语义丰富度、确定性正相关”)完全相反,这反映了Decoder-only模型(尤其是指令微调模型)的表征特性与Encoder-only模…

STL容器及其算法

C 标准库容器详解&#xff1a;特性、用法与场景选型容器是 C 标准库&#xff08;STL&#xff09;的核心组件&#xff0c;用于存储和管理数据。不同容器因底层实现不同&#xff0c;在性能、功能和适用场景上差异显著。本文系统梳理vector、list、set、map等常用容器&#xff0c;…

MySQL ZIP安装教程:从解压到启动

金金金上线&#xff01; 话不多&#xff0c;只讲你能听懂的前端知识 前言 我这里不能下载安装程序的mysql&#xff0c;由于电脑安全限制&#xff0c;安装时会弹出需要管理员账号密码权限&#xff0c;此路行不通&#xff0c;所以琢磨着免安装版本怎么个流程&#xff0c;好&#…

p2p打洞

p2p网络穿透库,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp: https://libp2p.io/ P2P-udp的穿透教程: https://edu.51cto.com/lesson/731596.html 目前打洞机制最好的库是webrtc,其次是libnice,它是轻量级的专门打洞的库。 libni…

『“无恙心宽”,梗痛不常』——爱上古中医(12)(健康生活是coder抒写优质代码的前提条件——《黄帝内经》伴读学习纪要)

养心护心气血通&#xff0c;无痛无梗全身松。 笔记模板由python脚本于2025-08-10 15:54:46创建&#xff0c;本篇笔记适合至少通晓一门语言&#xff0c;熟悉基本编程范式的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅…

Spark 运行流程核心组件(一)作业提交

1、Job启动流程1、Client触发 SparkContext 初始化 2、SparkContext 向 Master 注册应用 3、Master 调度 Worker 启动 Executor 4、Worker 进程启动 Executor 5、DAGScheduler 将作业分解为 Stage&#xff1a; 6、TaskScheduler 分配 Task 到 Executor 2、核心组件组件职责Spar…

MySQL 临时表与复制表

一、MySQL 临时表临时表是会话级别的临时数据载体&#xff0c;其设计初衷是为了满足短期数据处理需求&#xff0c;以下从技术细节展开说明。&#xff08;一&#xff09;核心特性拓展1.生命周期与会话绑定会话结束的判定&#xff1a;包括正常断开连接&#xff08;exit/quit&…