一、软件及测试

1、软件:是指计算机系统中的程序、数据及其相关文档的集合,用于实现特定功能、解决实际问题或满足用户需求(控制计算机硬件工作的工具)。

  • 系统软件:负责管理、控制、维护计算机资源,为应用软件提供运行环境。例如操作系统(Windows、Linux、macOS)、驱动程序、编译器、数据库管理系统等。

  • 应用软件:为完成特定任务或解决具体问题而设计的软件。例如办公软件(Word、Excel)、浏览器(Chrome)、游戏、微信、Photoshop等。

  • 支撑软件(有时归入系统软件或单独列出):如中间件、开发工具(IDE、调试器)等。

  • 嵌入式软件:运行在特定硬件设备中的软件,如智能手表、路由器、汽车控制系统中的程序。

2、软件产生过程:需求产生 → 需求文档 → 设计效果图 → 产品开发 → 产品测试 → 部署上线

3、软件测试:使用技术手段验证软件是否满足使用需求

4、软件测试目的:减少软件缺陷(bug),保障软件质量

二、主流测试

1、功能测试:验证软件的每一项功能是否与需求规格说明书(或设计文档)完全一致。它关注的是:在给定的输入下,系统能否产生正确的输出,业务流程能否走通,边界条件、异常情况是否被正确处理。通常采用黑盒方法(等价类划分、边界值分析、判定表等)。功能测试可以手动执行,也可以用自动化脚本辅助。

2、自动化测试:使用测试脚本和工具(如 Selenium、Appium、JUnit)代替人工执行测试用例,自动完成输入、操作、校验和结果记录。核心价值在于:回归测试、重复性高且长期稳定的场景、持续集成流水线中的快速验证。

3、接口测试:使用代码或工具对服务端提供的接口进行测试

4、性能测试:模拟多人使用软件,查找服务器缺陷

三、测试分类

1、按测试阶段划分

1、单元测试:针对程序中最小的可测试单元(函数、方法、类)进行验证。通常由开发人员在编码阶段编写和执行,目的是尽早发现逻辑错误、边界条件问题、异常处理缺陷。;

2、集成:验证多个模块/组件之间的接口和交互是否正常。比如 A 模块调用 B 模块的服务,数据能否正确传递、格式是否一致、事务是否回滚。

3、系统:将整个软件作为一个完整的系统进行测试,在真实或模拟的生产环境中验证功能、性能、安全、兼容性等是否满足需求规格。

4、验收测试:由用户、客户或产品经理验证软件是否满足业务需求和合同要求,决定是否接受上线。

2、按代码可见度划分

1、黑盒测试

  • 代码可见度:完全不可见。测试人员不关心软件内部结构和代码逻辑,只关注输入与输出。

  • 测试依据:需求文档、功能规格说明。

  • 方法:等价类划分、边界值分析、判定表、场景法等。

  • 典型执行者:测试工程师(QA)、用户。

  • 例子:登录功能测试——输入正确密码能登录,错误密码提示失败。

2、灰盒测试:

  • 代码可见度:部分可见。测试人员了解模块间的接口、数据流向、数据库结构或关键算法,但不关注全部实现细节。

  • 特点:结合黑盒的输入输出验证与白盒的路径/数据检查。常用于集成测试、接口测试。

  • 例子:测试订单功能时,既通过前端操作下单,又直接查询数据库确认订单状态是否正确更新;或者借助日志和API返回码来定位问题。

3、白盒测试:

  • 代码可见度:完全可见。测试人员(通常是开发人员)直接针对源代码或程序内部结构进行测试。

  • 测试依据:代码逻辑、分支条件、循环路径、内部数据结构。

  • 方法:语句覆盖、分支覆盖、路径覆盖、MC/DC等。

  • 典型执行者:开发人员(单元测试)。

  • 例子:针对一个if (a>0 && b>0)的分支,设计测试数据使得这个条件既执行到true分支又执行到false分支。

总结:三种测试的本质区别在于测试过程中对程序内部结构的了解程度——黑盒完全不看内部,白盒完全基于内部,灰盒介于两者之间。在实际项目中,往往需要组合使用这三种测试来保证质量。

四、质量模型

从以下角度去衡量软件质量:功能、性能、兼容、易用、安全,可靠性、移植性、维护性

五、测试流程

  1. 需求评审:测试人员参与需求文档评审,理解业务逻辑、功能点和验收标准,确保需求可测,提前发现需求缺陷或不明确之处。

  2. 计划编写:制定测试计划,确定测试范围、测试策略、资源安排、时间进度、风险应对措施以及交付物。

  3. 用例设计:根据需求和设计文档编写测试用例,包括功能用例、边界用例、异常场景等,并准备测试数据。

  4. 用例执行:按照测试用例执行测试,手工或自动化运行,记录实际结果与预期结果的差异。

  5. 缺陷管理:对执行过程中发现的缺陷进行提交、跟踪、回归验证,包括缺陷分级、指派、修复确认、关闭等流程。

  6. 测试报告:汇总测试结果,统计用例通过率、缺陷分布、遗留问题,给出测试结论(是否通过、是否建议上线),并输出测试报告。

六、用例

用例定义:为某个特定目标(验证某个功能或场景)而设计的执行文档。

  1. 用例编号:唯一标识一个测试用例,便于管理和追溯(如 TC_LOGIN_001)。

  2. 用例标题:简明扼要描述用例的测试目的(如“验证密码错误时登录失败并提示”)。

  3. 测试模块:用例所属的功能模块或子系统(如“登录模块”“订单模块”)。

  4. 优先级:表明用例的重要程度和影响力P0~P4(P0最高)。

  5. 前置条件:执行本用例前系统必须满足的状态或数据准备(如“已注册账号,数据库中存在该用户”)。

  6. 测试步骤:从开始到结束的具体操作序列(如“1. 打开登录页;2. 输入用户名xxx;3. 输入密码xxx;4. 点击登录”)。

  7. 测试数据:步骤中所需的具体数据值(如用户名 test01,密码 wrong123)。

  8. 预期结果:按步骤执行后期望系统产生的行为或输出(如“页面提示‘密码错误’;不跳转到主页”)。

  9. 实际结果:执行后真实观察到的结果(一般执行时填写,用于与预期对比,但设计用例时该列可留空或标注“待执行”)

七、案例-测试用例练习

八、方法

1、等价类划分法

(1)说明:在所有测试数据中,具有某种共同特征的数据集合进行划分

(2)分类:有效等价类:满足需求的数据集合;无效等价类:不满足需求的数据集合

(3)步骤:明确需求;确定有效和无效;提取数据编写测试用例

(4)适用场景:针对需要有大量数据测试输入,但是没法穷举测试的地方(输入框、下拉列表、单选复选框)

(5)案例1:需求:验证QQ账号的合法性(要求:6~10位自然数)

(6)案例2:验证某城市电话号码正确性(要求:区号:空或者是三位数字;前缀码:非0且非1开头的三位数字;后缀码“四位数字)

2、边界值分析法

(1)边界范围节点

        选取正好等于、刚好大于、刚好小于边界的值作为测试数据 

  • 上点:边界上的点(正好等于) 
  • 离点:距离上点最近的点(刚好大于、刚好小于) 
  • 内点:范围内的点(区间范围内的数据)

(2)步骤:明确需求;确定有效和无效等价类;确定边界范围值;提取数据编写测试用例

(3)说明:使用边界值解决边界位数限制问题,但是不能解决类型问题

(4)适用场景:

  • 在等价类的基础上针对有边界范围的测试数据输入的地方 (重点关注边界)
  • 常见词语描述:大小、尺寸、重量、最大、最小、至多、至少等修饰词语
  • 典型代表:有边界范围的输入框类测试

(5)案例1:需求:通过边界值法验证标题长度的合法性;要求:标题长度大于0,小于等于30个字符(七条用例)

(6)案例2:需求:通过边界值法验证QQ号码的合法性;要求:6~10位自然数。

(7)案例优化:结论:7个优化为5个

上点:必选(不考虑区间开闭)

内点:必选(建议选择中间范围)

离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点)

3、判定表法

判定表法:解决多条件有依赖关系的测试。

(1)步骤:

  • 1、明确需求
  • 2、画出判定表 
    • 1)列出条件桩和动作桩 
    • 2)填写条件项,对条件进行全组合 
    • 3)根据条件项的组合确定动作项 
    • 4)简化、合并相似规则 (有相同的动作)
  • 3、根据规则编写测试用例

(2)适用场景:

  • 有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约)关系。
  • 判定表一般适用于条件组合数量较少的情况(比如4个条件以下)

(3)案例1:订购单检查:

  • 1)如果金额大于 500 元,又未过期,则发出批准单和提货单;
  • 2)如果金额大于 500 元,但过期了,则不发批准单与提货单;
  • 3)如果金额小于等于 500 元,则不论是否过期都发出批准单和提货单;
  • 4)在过期的情况下不论金额大小还需要发出通知单

(4)案例2:文件修改规则:

  • 1)输入的第一列字符必须是 A 或 B
  • 2)第二列字符必须是一个数字
  • 3)如果第一列字符不正确,则给出信息 L
  • 4)如果第二列字符不正确,则给出信息M
  • 5)如果两列字符输入正确,则修改文件成功

4、场景法

(1)适用流程图法,需要根据流程图梳理业务;先测试业务再测试单功能、单模块、单界面。

(2)流程图:适用标准图形和箭头来表达程序或业务的走向

(3)适用场景:
(4)案例1

5、错误推断法

(1)定义:通过经验推测系统可能出现的问题

(2)思想:根据经验列举出可能出现问题的清单,根据清单分析问题可能原因,推测发现缺陷

(3)场景:1、时间紧迫任务量大时,根据之前项目类经验找出易出bug的模块重点测试 2、实践宽裕通过该方法列出之前出现问题较多的模块再次测试

 案例1-注册

写用例分功能和非功能,功能里面可以分正向和逆向。

注册:正向:3条;逆向:18条;兼容:4条

 案例2-按钮测试点

按钮默认值导致浏览器显示的内容不一致。例如

  • 空button<button></button>:Chrome/Edge 空白;Firefox 自带 “提交” 文字。
  • 无 value 提交框:<input type="submit">  Chrome:提交;Firefox:提交查询;Safari:提交表单。

九、缺陷

用例执行不通过为缺陷,需要进行缺陷管理

(1)定义:软件在使用过程中存在的任何问题都在软件的缺陷,简称bug

(2)缺陷的判定标准:

        1. 软件未实现需求(规格)说明书中明确要求的功能 -少功能

        2. 软件出现了需求(规格)说明书中指明不应该出现的错误 -功能错误

        3. 软件实现的功能超出需求(规格)说明书指明的范围 -多功能

        4. 软件未实现需求(规格)说明书中虽未明确指明但应该实现的要求 -隐性功能错误

        5. 软件难以理解,不易使用,运行缓慢,用户体验不好 -不易使用

(3)缺陷产生的原因

(4)软件缺陷的生命周期

(5)缺陷的核心内容

缺陷描述:发现缺陷以后如何描述,让别人看的懂

缺陷提交:指派人,优先级,类型......

1. 缺陷的标题: 描述缺陷的核心问题

2. 缺陷的预置条件: 缺陷产生的前提

3. 缺陷的复现步骤: 复现缺陷的过程

1. 缺陷的预期结果: 希望得到的结果

2. 缺陷的实际结果: 实际得到的结果

3. 缺陷的必要附件: 图片、日志等信息(证据)

(6)缺陷提交要素

(7)软件缺陷类型

功能错误、错误界面、兼容性、数据、易用性、改进建议、架构

(8)缺陷报告示例

(9)缺陷跟踪流程(测试人员:黄色;开发人员:绿色)

(10)提交缺陷注意事项

可重现:缺陷可以复现;唯一性:一个缺陷上报一个问题;规范性:符合公司或者项目要求

面试题:当你发现缺陷后,首先会怎么办?

回答:保证可复现,确定是bug。提交时检查缺陷是否已存在。

(11)缺陷编写规范

 (12)缺陷标题分析

        如何写标题

  1. 描述测试数据+实际结果(预期结果);
  2. 测试数据描述+预期结果(实际结果);
  3. 测试数据描述+实际结果(需求)

十、缺陷管理工具-禅道

(1)特点:国产、免费、开源、简单、轻量级;三管融合(产品管理、项目管理、质量管理)

十一、综合案例

测试对象:web端登录功能测试;web端发布文章功能测试

(1)登录需求:

(2)明确需求后如何开展测试:步骤:分析需求、提取测试点、设计用例、用例评审、执行用例、缺陷管理、测试报告

登录功能完整测试用例
用例编号 用例标题 测试模块 优先级 前置条件 测试步骤 测试数据 预期结果
TC_LOGIN_001 验证已注册手机号,输入后可正常触发后续流程 登录模块-手机号 P0 1. 系统存在已注册的手机号:13800138000;2. 登录页面正常打开 1. 打开登录页面;2. 在手机号输入框输入已注册手机号;3. 点击“获取验证码”按钮 手机号:13800138000 系统成功发送验证码,验证码输入框可正常接收输入
TC_LOGIN_002 验证手机号输入为空时,点击获取验证码需提示 登录模块-手机号 P1 登录页面正常打开 1. 打开登录页面;2. 不输入手机号,直接点击“获取验证码” 手机号:(空) 系统提示“请输入手机号”,不发送验证码
TC_LOGIN_003 验证输入非自然数手机号时,需提示格式错误 登录模块-手机号 P1 登录页面正常打开 1. 打开登录页面;2. 输入非自然数格式的手机号(如含字母/符号);3. 点击“获取验证码” 手机号:1380013800a / 13800#38000 系统提示“请输入正确手机号”,不发送验证码
TC_LOGIN_004 验证输入10位自然数手机号时,需提示格式错误 登录模块-手机号 P1 登录页面正常打开 1. 打开登录页面;2. 输入10位数字的手机号;3. 点击“获取验证码” 手机号:1380013800 系统提示“请输入正确手机号”,不发送验证码
TC_LOGIN_005 验证输入12位自然数手机号时,需提示格式错误 登录模块-手机号 P1 登录页面正常打开 1. 打开登录页面;2. 输入12位数字的手机号;3. 点击“获取验证码” 手机号:138001380000 系统提示“请输入正确手机号”,不发送验证码
TC_LOGIN_006 验证输入未注册的有效手机号时,需提示手机号未注册 登录模块-手机号 P1 系统中不存在手机号13800138999 1. 打开登录页面;2. 输入未注册的11位有效手机号;3. 点击“获取验证码” 手机号:13800138999 系统提示“手机号未注册”,不发送验证码
TC_LOGIN_007 验证输入正确验证码时,可成功登录 登录模块-验证码 P0 1. 已获取有效验证码(如123456);2. 登录页面正常打开 1. 打开登录页面;2. 输入已注册手机号并获取验证码;3. 输入正确的验证码;4. 点击“登录” 手机号:13800138000;验证码:123456 登录成功,跳转到系统首页
TC_LOGIN_008 验证验证码输入为空时,点击登录需提示 登录模块-验证码 P1 已获取有效验证码 1. 打开登录页面;2. 输入已注册手机号并获取验证码;3. 不输入验证码,直接点击“登录” 手机号:13800138000;验证码:(空) 系统提示“请输入验证码”,不执行登录
TC_LOGIN_009 验证输入错误验证码时,登录失败并提示 登录模块-验证码 P1 已获取有效验证码(如123456) 1. 打开登录页面;2. 输入已注册手机号并获取验证码;3. 输入错误的验证码;4. 点击“登录” 手机号:13800138000;验证码:654321 系统提示“验证码错误”,不跳转到首页
TC_LOGIN_010 验证输入过期验证码时,登录失败并提示 登录模块-验证码 P1 1. 已获取验证码(有效期5分钟);2. 等待验证码过期 1. 打开登录页面;2. 输入已注册手机号并获取验证码;3. 等待验证码过期后,输入原验证码;4. 点击“登录” 手机号:13800138000;验证码:123456(已过期) 系统提示“验证码已过期,请重新获取”,不跳转到首页
TC_LOGIN_011 验证勾选用户协议后,可正常获取验证码并登录 登录模块-协议 P0 1. 登录页面正常打开;2. 已注册手机号存在 1. 打开登录页面;2. 勾选“用户协议与隐私政策”;3. 输入已注册手机号并获取验证码;4. 输入正确验证码并点击登录 手机号:13800138000;验证码:123456;协议状态:已勾选 可正常获取验证码,登录成功并跳转到首页
TC_LOGIN_012 验证未勾选用户协议时,无法获取验证码 登录模块-协议 P1 登录页面正常打开 1. 打开登录页面;2. 不勾选“用户协议与隐私政策”;3. 输入已注册手机号,点击“获取验证码” 手机号:13800138000;协议状态:未勾选 系统提示“请先阅读并同意用户协议与隐私政策”,不发送验证码
TC_LOGIN_013 验证滑块验证通过时,可成功发送验证码 登录模块-滑块验证 P0 1. 登录页面正常打开;2. 已注册手机号存在 1. 打开登录页面;2. 输入已注册手机号;3. 完成滑块验证(拖动滑块到指定位置);4. 点击“获取验证码” 手机号:13800138000;滑块操作:拖动至目标位置 滑块验证通过,系统成功发送验证码
TC_LOGIN_014 验证滑块验证失败时,无法发送验证码 登录模块-滑块验证 P1 登录页面正常打开 1. 打开登录页面;2. 输入已注册手机号;3. 未将滑块拖动到指定位置,直接点击“获取验证码” 手机号:13800138000;滑块操作:未拖到目标位置 系统提示“请完成滑块验证”,不发送验证码
TC_LOGIN_015 验证账号密码均正确时,可成功登录 登录模块-账号密码 P0 系统存在已注册账号:test01,密码:Test@1234 1. 打开登录页面;2. 切换到账号密码登录;3. 输入正确账号和密码;4. 点击“登录” 账号:test01;密码:Test@1234 登录成功,跳转到系统首页
TC_LOGIN_016 验证账号正确、密码错误时,登录失败并提示 登录模块-账号密码 P1 系统存在已注册账号:test01,密码:Test@1234 1. 打开登录页面;2. 切换到账号密码登录;3. 输入正确账号和错误密码;4. 点击“登录” 账号:test01;密码:Wrong@123 系统提示“账号或密码错误”,不跳转到首页
TC_LOGIN_017 验证账号不存在时,登录失败并提示 登录模块-账号密码 P1 系统中不存在账号:test999 1. 打开登录页面;2. 切换到账号密码登录;3. 输入不存在的账号和任意密码;4. 点击“登录” 账号:test999;密码:Test@1234 系统提示“账号不存在,请注册”,不跳转到首页
TC_LOGIN_018 验证勾选“记住我”后,下次打开页面自动填充账号 登录模块-记住我 P2 已成功登录并勾选“记住我” 1. 登录成功并勾选“记住我”;2. 关闭浏览器后重新打开登录页面 账号:test01;密码:Test@1234 账号输入框自动填充test01,密码框保持为空
TC_LOGIN_019 验证连续输错密码5次后,账号被锁定 登录模块-安全 P1 系统存在账号test01,密码Test@1234,锁定规则为连续输错5次锁定15分钟 1. 打开登录页面;2. 输入账号test01和错误密码,重复操作5次;3. 第6次尝试登录 账号:test01;错误密码:Wrong@123(重复5次) 第5次错误后提示“密码错误次数过多,账号将锁定15分钟”;第6次登录提示“账号已锁定,请15分钟后再试”
TC_LOGIN_020 验证登录成功后,点击退出登录,可回到登录页 登录模块-退出登录 P0 用户已成功登录系统 1. 登录系统;2. 点击右上角“退出登录”按钮;3. 确认退出 成功退出登录,跳转到登录页面
TC_LOGIN_021 验证登录状态下,直接访问首页地址不跳转登录页 登录模块-会话 P1 用户已成功登录并保持会话 1. 登录系统;2. 复制首页URL;3. 关闭浏览器后重新打开,粘贴URL访问 首页URL:https://xxx.com/home 直接进入首页,无需重新登录
TC_LOGIN_022 验证会话超时后,访问页面自动跳转到登录页 登录模块-会话 P1 用户已登录,会话超时时间为30分钟 1. 登录系统;2. 保持页面无操作超过30分钟;3. 点击页面任意操作 自动跳转到登录页面,提示“登录已过期,请重新登录”
TC_LOGIN_023 验证谷歌浏览器下登录页面功能正常 登录模块-兼容性 P2 安装谷歌浏览器(最新版) 1. 打开谷歌浏览器,访问登录页面;2. 执行手机号+验证码登录流程;3. 验证页面布局、按钮、输入框是否正常 浏览器:Google Chrome(最新版) 页面布局正常,所有功能可正常使用,登录流程无异常
TC_LOGIN_024 验证火狐浏览器下登录页面功能正常 登录模块-兼容性 P2 安装火狐浏览器(最新版) 1. 打开火狐浏览器,访问登录页面;2. 执行手机号+验证码登录流程;3. 验证页面布局、按钮、输入框是否正常 浏览器:Firefox(最新版) 页面布局正常,所有功能可正常使用,登录流程无异常
TC_LOGIN_025 验证IE浏览器下登录页面功能正常 登录模块-兼容性 P2 安装IE11浏览器 1. 打开IE11浏览器,访问登录页面;2. 执行手机号+验证码登录流程;3. 验证页面布局、按钮、输入框是否正常 浏览器:IE11 页面布局正常,所有功能可正常使用,登录流程无异常
TC_LOGIN_026 验证Edge浏览器下登录页面功能正常 登录模块-兼容性 P2 安装Edge浏览器(最新版) 1. 打开Edge浏览器,访问登录页面;2. 执行手机号+验证码登录流程;3. 验证页面布局、按钮、输入框是否正常 浏览器:Microsoft Edge(最新版) 页面布局正常,所有功能可正常使用,登录流程无异常
TC_LOGIN_027 验证Safari浏览器下登录页面功能正常 登录模块-兼容性 P2 安装Safari浏览器(最新版) 1. 打开Safari浏览器,访问登录页面;2. 执行手机号+验证码登录流程;3. 验证页面布局、按钮、输入框是否正常 浏览器:Safari(最新版) 页面布局正常,所有功能可正常使用,登录流程无异常
TC_LOGIN_028 验证欧朋浏览器下登录页面功能正常 登录模块-兼容性 P3 安装Opera浏览器(最新版) 1. 打开Opera浏览器,访问登录页面;2. 执行手机号+验证码登录流程;3. 验证页面布局、按钮、输入框是否正常 浏览器:Opera(最新版) 页面布局正常,所有功能可正常使用,登录流程无异常
TC_LOGIN_029 验证登录页面布局与UI原型一致 登录模块-界面布局 P2 已获取登录页面UI原型图 1. 打开登录页面;2. 对比UI原型图,检查元素位置、颜色、字体、间距 原型图:登录页UI设计稿 页面所有元素与原型图完全一致,无错位、变形、颜色偏差
TC_LOGIN_030 验证不同分辨率下登录页面布局无错乱 登录模块-界面布局 P3 登录页面正常打开 1. 调整浏览器窗口分辨率为1920×1080、1366×768、1024×768;2. 检查页面布局是否错乱 分辨率:1920×1080、1366×768、1024×768 不同分辨率下页面布局正常,元素无重叠、溢出
TC_LOGIN_031 验证登录请求防SQL注入攻击 登录模块-安全 P1 登录页面正常打开 1. 在账号输入框输入SQL注入语句;2. 点击“登录”按钮 账号:' OR 1=1 --;密码:任意 系统提示“账号或密码错误”,无法绕过验证登录
TC_LOGIN_032 验证密码输入框明文不可见 登录模块-安全 P1 登录页面正常打开 1. 切换到账号密码登录;2. 在密码输入框输入内容 密码:Test@1234 密码内容以圆点/星号形式显示,无法直接查看明文
TC_LOGIN_033 验证登录接口防暴力破解 登录模块-安全 P1 系统存在账号test01,密码Test@1234 1. 使用工具对登录接口发起高频暴力破解请求;2. 观察系统响应 请求频率:100次/分钟 系统返回429/503错误,或触发IP/账号限流,无法通过暴力破解登录
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐