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

功能性测试

运行

什么是“运行”?:

从用户的角度来看,“运行”是对系统做出一个操作,系统会给用户回馈一个满足用户预期的、有意义的反馈。运行一定是从用户层面来描述的,输入是系统层面的输入,输出也是对用户有价值、有意义的反馈。我们对系统内部组件或者接口的操作,不能称为一次运行,例如:系统数据库新增了一个表,系统新建了一个链接,等等。这就需要我们把这些组件拼接起来,知道可以从外部的角度为用户提供有意义的输入或输出。这些组件的组合就构成了系统的功能,系统的一个功能应该能够满足用户的一次完整运行。

单运行

用户发送了一封电子邮件,提交了一个购物清单,清空了购物车,等等,这些都可以称为一次运行。

多运行

用户收到了电子邮件,然后将邮件设置为重要;用户添加了购物车,然后提交了订单。

很多时候,系统在单运行的情况下一切正常,但是在多运行的情况下就会出现问题,例如用户只打电话时一切正常,直接收短信时也一切正常,但是正在打电话的时候接收到一条短消息就会出现问题,所以我们需要在测试中充分考虑多运行。

测试方法

  • 单运行正常值输入法
  • 单运行边界值输入法
  • 多运行顺序执行法
  • 多运行相互作用法

单运行正常值输入法

在每次运行的时候,输入的都是系统允许的正常值的测试方法

例子

1. 用户发送电子邮件是一个单运行操作,该操作包含的输入参数有:收件人邮箱、发件人邮箱、邮件标题、邮件内容、邮件优先级等。

使用单运行正常值输入法时,只需针对这些参数选取正常的测试输入数据即可。

测试参数处理思路

  • 对于取值个数有限的参数:测试时需要遍历所有可能的取值。
  • 对于取值有范围的参数:采用等价类划分思想,先将输入数据分类,再从每一类中选取代表性测试数据。

单运行边界值输入法

在每次运行的时候,输入的都是系统允许的边界值的测试方法。该方法和单运行正常值输入法的差别在于前者输入的值为边界值。

一、边界值概念

边界值是指输入范围的临界点附近的值。
示例:输入范围为 [1, 10],边界值为:0、1、10、11

二、单运行边界值输入法特点

  • 测试数据包含:
    • 正常输入:如 1、10
    • 非法输入:如 0、11
  • 既能验证正常处理,又能验证异常处理,测试效率较高。

三、边界值法与单运行正常值法对比

  • 单运行正常值:只使用正常、有效的输入数据。
  • 单运行边界值:覆盖正常 + 边界 + 越界数据,覆盖更充分。

四、以“用户发送电子邮件”为例的边界值测试点

  • 收件人数量

    • 收件人数量为系统支持最大数
    • 收件人数量为系统支持最大数+1
    • 收件人数量为 1
    • 收件人为
  • 邮件标题

    • 标题长度为系统支持最大长度
    • 标题长度为系统支持最大长度+1
    • 标题为
  • 邮件内容

    • 内容长度为系统支持最大长度
    • 内容长度为系统支持最大长度+1
    • 内容为

多运行顺序执行法

在功能性测试时,按照一定的顺序来进行多个运行的测试方法。

分析和用户操作习惯息息相关的地方,去分析可能的执行顺序。

例子:

1.用户操作顺序不固定:

  • 路径1:登录 → 选择商品 → 提交订单
  • 路径2:选择商品 → 登录 → 提交订单
  • 路径3:选择商品 → 提交订单 → 登录

核心原因

  • 状态依赖
    商品、购物车、订单、价格、优惠、库存等信息,均依赖用户登录状态。
  • 数据上下文不一致
    未登录时为游客态数据,登录后切换为用户态数据;
    两种状态需要切换、合并、覆盖,逻辑复杂,极易出错。
  • 前后端逻辑不对称
    前端/后端可能只按一种流程设计,当操作顺序改变时,逻辑不兼容,从而产生缺陷。

多运行相互作用法

在进行功能测试时,把多个存在相互关系的运行组合在一起进行测试的方法。

例子:

1. 用户在发送电子邮件的时候有收到一封电子邮件。即用户同时在进行收发电子邮件的操作。

2. 通话过程中收到短消息

  • 场景说明:用户正在打电话时,同时收到一条新短信。
  • 资源占用
    • 通话:占用通话通道、音频、界面、后台服务
    • 短信:触发系统通知、弹窗、状态栏、声音、震动
  • 冲突原因
    两者会相互干扰,存在资源竞争:
    • 抢占音频通道
    • 抢占界面展示
    • 抢占系统优先级
    • 进程/线程同时被唤醒
  • 缺陷风险
    若系统调度、状态处理、资源管理不当,极易出现缺陷。

本文部分内容引用自:《测试架构师修炼之道:从测试工程师到测试架构师(第2版)》

http://www.jsqmd.com/news/508470/

相关文章:

  • 不止于代码补全:我用Jetbrains AI助手重构注释、写提交信息和排查Bug的日常
  • nginx配置总结
  • NMN产品品牌推荐,NMN新手必看:2026十大靠谱品牌排名,第一次选NMN照着买不踩坑 - 资讯焦点
  • 春联生成模型-中文-base实战指南:集成至飞书多维表格实现审批流春联生成
  • 刚刚,全球视频模型新王诞生了!
  • OBS直播抠绿插件(Matting123):影视级抠像技术实战指南
  • NAD+哪个产品最好?抗衰NMN怎么选靠谱?广受好评的抗衰老实测,NAD +焕新年轻状态 - 资讯焦点
  • YOLOFuse功能体验:多种融合策略对比,找到最适合你的方案
  • 计算机毕业设计springboot基于web宿舍管理系统 SpringBoot高校学生公寓智能化管理平台的设计与实现 基于B/S架构的校园住宿服务数字化系统开发
  • 请先清空 vector 再使用 resize
  • 开题→综述→正文全流程 AI 写作工具:效率与质量双在线,一文选对不踩坑
  • 避开这些坑!VLD在VS2022调试C++内存泄漏的5个常见配置误区
  • nad+口服抗衰老哪个产品最好?全球十大抗衰老保健品,成分、效果、长期安全性全测评,科学抗衰的必备指南 - 资讯焦点
  • 鼠标性能解构:从机械运动到数据可视化的技术探险
  • 终极指南:如何免Root解锁微信平板模式实现双设备登录
  • Nanbeige 4.1-3B镜像免配置方案:Docker一键拉取运行教程
  • 破损率从 3% 降至 0.5%|耀达吸塑医药级吸塑包装定制全链路解决方案 - 速递信息
  • Qwen3.5-9B GPU算力优化教程:显存压缩30%+延迟降低40%实操方案
  • Hutool随机字符串生成实战:从验证码到密码安全的5种应用场景
  • Qwen3-32B-Chat部署教程:NVIDIA Container Toolkit配置与GPU资源隔离设置
  • 利用Comsol实现固体氧化物电解槽(SOEC)共电解CO2和H2O的二次电流分布、浓物质传递...
  • OpenClaw + ESP32 ,这只小龙虾你不来看看吗?
  • 名校上岸指南:后保研品牌全解析与你的保研困惑一次解答|附后保研官网及联系方式 - 速递信息
  • 利用Python脚本优化IC设计中的filelist条件编译流程
  • 数字频率计及感应电机转速测量:软件设计与实现
  • nlp_gte_sentence-embedding_chinese-large在法律文书相似案例检索中的应用
  • Z-Image-Turbo-rinaiqiao-huiyewunv部署教程:Mac M2 Ultra芯片Metal加速适配实践
  • 基于GB/T 25000.51,用户文档测试中的测试技术指标分享
  • GPU显存友好:Nanbeige 4.3B在消费级显卡上的流式神谕渲染实操
  • 5分钟部署Qwen3-1.7B:跟着教程一步步来,轻松搭建AI对话机器人