软件工程与计算总结(十九)软件测试
目录
编辑
一.引言
1.验证与确认
2.目标
3.测试用例
4.桩与驱动
5.缺陷、错误与失败
二.测试层次
1.测试层次的划分
2.单元测试
3.集成测试
4.系统测试
三.测试技术
1.测试用例的选择
2.随机测试
3.基于规格的技术(黑盒测试)
4.基于代码的技术(白盒测试)
5.特定测试技术
四.测试活动
五.测试度量
编辑
一.引言
软件设计的顺序是自顶向下,软件测试的顺序是自底向上~
1.验证与确认
软件测试是软件质量保障的方法之一:
- 验证:检查开发者是否正确地使用技术建立系统,确保系统能够在预期的环境中按照技术要求正确地运行~
- 确认:检查开发者是否反建立了正确的系统,确保最终产品符合规格
软件开发的验证与确认主要有两种手段:静态测试与动态设计~
- 评审是最为常用的静态分析手段
- 动态测试就是软件测试,它在软件能够运行时,考察软件运行时的表现,完成验证与确认任务的方法

2.目标
- 向开发者和用户展示软件满足了需求,表明软件产品是一个合格的产品
- 找出软件中的缺陷和不足
一个关于软测的定义:为评价与改进产品质量、标识产品缺陷和问题而进行的活动
- 为目标1进行的测试是有效性测试,它使用用户希望的方式来测试软件系统,发现系统的缺陷并进行改进
- 为目标2进行的测试是缺陷测试,它在软件测试中具有更大的重要性,目标是发现缺陷,只有发现了缺陷的测试才是成功的测试~
发现尽可能多的缺陷的测试才是成功的,这一点是毋庸置疑的~
3.测试用例
测试用例是一组输入数据与预期结果的组合。

- 输入数据:外界接受的数据or系统内部的状态数据
- 输出结果:数据输出or运行表现
4.桩与驱动

- 桩程序:被测试部件的交互环境,它扮演被测试部件需要调用的其他系统部件~(只是规格上与其他部件相同,内部实现代码要简单的多)
- 驱动程序:负责创建被测试部件的执行环境,并驱动和监控被测试部件执行测试用例的过程,判定测试用例的执行结果~
5.缺陷、错误与失败
- 缺陷:系统代码中存在的不正确的地方
- 错误:如果系统执行到缺陷,就可能使得执行结果不符合预期且无法预测,表现出来的不稳定状态就称为错误。
- 失败:错误的发生会使得软件的功能失效
(软件测试的目标是发现缺陷,但实际上发现的是失败~只有对失败进行分析调试才能发现错误并加以修复)
二.测试层次
1.测试层次的划分
通过测试对象和测试目标两个维度来划分测试的层次~

2.单元测试
又称为模块测试,是对程序单元(软件设计的最小单位)进行正确性检验的测试工作
- 在过程化编程中,一个单元就是一个函数与过程
- 在面向对象编程中,一个单元就是类的一个方法
测试一个程序单元时,需要构建桩程序和驱动程序,将其与其他程序单元隔离~

3.集成测试
(主要采用白盒+黑盒,是为了检验系统功能)
又被称为组装测试,即对程序模块一次性或采用增量方式组织起来,对系统的接口进行正确性检验的测试工作——通常在单元测试之后,系统测试之前进行~
集成测试非常依赖桩程序和驱动程序,常见的集成策略包括大爆炸集成和增量集成,增量集成有自顶向下、自底向上、持续集成等多种方式~

4.系统测试
前两者更加关注技术上的正确性,重在发现设计缺陷和代码缺陷,系统测试更关注不符合需求的缺陷和需求自身的内在缺陷~
系统测试关注整个系统的行为,所以不依赖于桩程序and驱动程序~
三.测试技术
1.测试用例的选择
测试是有代价的(人力、时间、金钱成本),目标是发现尽可能多的缺陷,并不绝对要求发现所有缺陷~
软件测试人员要仔细选择测试用例,在代价尽可能小的情况下发现足够多的缺陷~
2.随机测试
基于软件工程师直觉和经验的技术,也是实践中最为广泛使用的测试技术~
但并不是最优的测试技术,有时可以发现其他技术不能发现的缺陷,但其测试到缺陷的几率却比其他技术要小的多~
3.基于规格的技术(黑盒测试)
把测试对象看做一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性——使用测试对象的规格说明来设计输入和输出数据~
等价类划分:
把程序的输入域划分为若干部分,然后从每一个部分选取少数代表性的个体作为测试用例
- 有效等价类:对于程序的规格说明来说是合理的、有意义的数据输入构成的集合
- 无效等价类:与有效等价类的定义正好相反
边界值分析:对前者划分方法的补充——因为错误往往发生在边界而非内部~
决策表:为复杂逻辑判断设计测试用例的技术,决策表由条件声明、行动声明、规划选项和行动选项四个象限组成的表格
状态转换:专门针对复杂测试对象的测试技术,该类复杂测试对象输入数据反应是多样的,还需要依赖自身的状态才能决定,如果测试对象的状态不同,那么即使输入数据是一样的,输出也会有所不同~
4.基于代码的技术(白盒测试)
与黑盒不同,将测试对象看做透明的,不关心测试对象的规格,而根据对象内部的程序结构来设计测试用例进行测试工作~
语句覆盖:保证每一行代码都至少执行一次
(较弱的代码覆盖)
条件覆盖:每个判断结果至少都满足一次
(仍不能保证所有路径的覆盖)
路径覆盖:每条独立路径都至少执行一次
5.特定测试技术
- 面向对象的测试
- GUI测试
- 基于web的测试
- 基于组件的测试
- 并发程序的测试
- 协议遵从性测试
- 实时系统测试
四.测试活动
- 测试计划:按照工程的做法,在开始具体的软件测试活动之前,必须明确工作范围等计划
- 测试设计:进一步明确需要被测试的对象,为被测对象设计用例集合
- 测试执行:要严格按照测试用例来完成,并记录相应的测试结果
- 测试评价:执行结束后,必须评价测试结果,以确定测试是否成功

五.测试度量
相关文章:
软件工程与计算总结(十九)软件测试
目录 编辑 一.引言 1.验证与确认 2.目标 3.测试用例 4.桩与驱动 5.缺陷、错误与失败 二.测试层次 1.测试层次的划分 2.单元测试 3.集成测试 4.系统测试 三.测试技术 1.测试用例的选择 2.随机测试 3.基于规格的技术(黑盒测试) 4.基于代…...
Tomcat设置IP黑名单和白名单server.xml
方式一: -- 只允许192.168.1.2和192.168.2.3 <Context path"" docBase"xxxAdmin" debug"0" reloadable"true" ><Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.1.…...
【AI视野·今日NLP 自然语言处理论文速览 第五十五期】Mon, 16 Oct 2023
AI视野今日CS.NLP 自然语言处理论文速览 Mon, 16 Oct 2023 Totally 53 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers PromptRE: Weakly-Supervised Document-Level Relation Extraction via Prompting-Based Data Programming Au…...
k8s crd设置额外header
可以通过设置crd.spec.additionalPrinterColumns来实现: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata:name: crontabs.stable.example.com spec:group: stable.example.comscope: Namespacednames:plural: crontabssingular: cr…...
电容笔好还是触屏笔好?便宜又好用的电容笔推荐
目前有哪些电容笔值得买?相比于之前的电容笔,现在的电容笔增加了很多新的特性功能,例如防误触、避免手指不小心触碰屏幕造成书写错误、笔画粗细可以自由调整等。苹果最初的Pencil现在售价一直高居不下。所以,如果你没有过多的预算…...
列表作为条件查询的参数
<if test"secucodeList ! null and secucodeList.size() > 0">...
elementui中el-select和el-tree实现下拉树形多选功能
实现效果如下: 代码如下: html中 <el-col :lg"12"><el-form-item label"可用单位" prop"useOrgListTemp"><div class"departAll"><el-selectref"selectTree"v-model"valu…...
手机怎么监控电脑?
随着企业对电脑监控需求的增加,越来越多的管理者意识到使用电脑监控电脑的不便性,一旦外出就无法实时查看监控。其实可以用手机实现监控电脑的需求,只需在被监控端安装电脑监控软件后,将电脑设备和员工信息进行绑定,使…...
职场题:有一件特别紧急的事,群众要办理,且联系不上领导,你怎么办?(2)
接1所写 如果无法联系上领导且有一项特别紧急的事情需要办理,以下是进一步的建议: 11. 尝试其他沟通渠道:除了直接联系领导外,尝试通过其他沟通渠道与领导取得联系。这可能包括电子邮件、即时通讯工具或其他内部通信平台。确保详…...
《深入理解java虚拟机 第三版》学习笔记一
第 2 章 Java 内存区域与内存溢出异常 2.2 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些…...
webGL编程指南 第三章 旋转三角形
我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写,每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 接着 上一节 接着做平移的转化。本案例是三角形的旋转 <!DOCTYPE html> <html lang"en"><head…...
网络安全是什么?一文认识网络安全
一、网络安全 1.概念 网络安全从其本质上讲就是网络上的信息安全,指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露,系统可靠正常地运行,网络服务不中断。 (1)基本特征 网络安全根据其本质的界定&#…...
LeetCode 2897. 对数组执行操作使平方和最大【贪心,位运算,哈希表】2301
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
linux加密安全和时间同步
sudo实现授权 添加 vim /etc/sudoers luo ALL(root) /usr/bin/mount /deb/cdrom /mnt/ test ALL(root:ALL) ALL 在所有主机上 提权为root用户, 可以执行所有命令 户"test"被授权以"root"用户身份在任意主机上执行任意命令 切换luo用户使用 su…...
在Go中处理异常
引言 程序遇到的错误大致分为两类:程序员预料到的错误和程序员没有预料到的错误。我们在前两篇关于[错误处理]的文章中介绍的error接口主要处理我们在编写Go程序时预期的错误。error接口甚至允许我们承认函数调用发生错误的罕见可能性,因此我们可以在这些情况下进行…...
rust 全局变量
文章目录 编译期初始化静态常量静态变量原子类型 运行期初始化lazy_staticBox::leak从函数中返回全局变量 标准库中的 OnceCell 编译期初始化 静态常量 const MAX_ID: usize usize::MAX / 2; fn main() {println!("用户ID允许的最大值是{}",MAX_ID); }关键字是co…...
使用Python的qrcode库生成二维码
使用Python的qrcode库生成二维码 此二维码直接跳转对应的网址。 1、首先安装qrcode包 pip install qrcode2、运行代码 import qrcode# 需要跳转的URL url "https://blog.csdn.net/weixin_45092662?typeblog" img qrcode.make(url) img.save("qrcode.png&…...
MSQL系列(四) Mysql实战-索引分析Explain命令详解
Mysql实战-索引分析Explain命令详解 前面我们讲解了索引的存储结构,我们知道了BTree的索引结构,也了解了索引最左侧匹配原则,到底最左侧匹配原则在我们的项目中有什么用?或者说有什么影响?今天我们来实战操作一下&…...
FPGA软件【紫光】
软件:编程软件。 注册账号需要用到企业邮箱 可以使用【企业微信】的邮箱 注册需要2~3天,会收到激活邮件 授权: 找到笔记本网卡的MAC, 软件授权选择ADS 提交申请后,需要2~3天等待邮件通知。 使用授权: 文…...
饲料化肥经营商城小程序的作用是什么
我国农牧业规模非常高,各种农作物和养殖物种类多,市场呈现大好趋势,随着近些年科学生产养殖逐渐深入到底层,专业的肥料及饲料是不少从业者需要的,无论城市还是农村都有不少经销店。 但在实际经营中,经营商…...
Python包管理工具之uv的使用详细指南
uv 是一个新兴的 Python 包管理工具,它旨在提供比 pip 和 poetry 更快、更现代的依赖管理体验。uv 由 Charles Murphy 开发,基于 Rust 构建,具有极高的性能和兼容性,支持标准的 requirements.txt 文件以及 pyproject.toml 中的依赖…...
从Async到Sync,从SDR到DDR:一次NAND Flash接口升级引发的“血案”与调试实录
从Async到Sync,从SDR到DDR:一次NAND Flash接口升级引发的“血案”与调试实录 那天下午,当示波器上扭曲的DQS信号波形终于变得规整时,我瘫坐在工位上,手里的咖啡早已凉透。这次NAND Flash接口升级引发的连锁反应&#…...
新手福音:借助快马AI生成代码,轻松入门天天直播应用开发
作为一个刚入门前端开发的新手,想尝试直播类应用开发时,面对复杂的技术栈和交互逻辑常常无从下手。最近我发现用InsCode(快马)平台可以快速生成可运行的学习项目,就以"天天直播"为例记录下我的实践过程。 项目结构设计 整个直播页面…...
炉石传说自动化工具:从效率提升到智能策略的全栈解决方案
炉石传说自动化工具:从效率提升到智能策略的全栈解决方案 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 在快节奏的现代生活中,…...
合规刚需下,游戏行业适合的内网通讯软件怎么选
一、背景 2026年,游戏行业在合规监管、信创推进与降本增效三重驱动下,内部协作与数据安全需求持续升级。《数据安全法》《网络安全法》对游戏企业研发代码、运营数据、用户信息的存储与传输提出明确合规要求,数据泄露、权限失控、协作低效等…...
开源大模型效果展示:Pixel Language Portal对emoji+文字混合输入的语义解析
开源大模型效果展示:Pixel Language Portal对emoji文字混合输入的语义解析 1. 项目概览 Pixel Language Portal(像素语言跨维传送门)是一款基于Tencent Hunyuan-MT-7B大模型构建的创新翻译工具。与传统翻译软件不同,它将语言转换…...
土地利用变化分析实战:用Python处理40年CNLUCC数据集
土地利用变化分析实战:用Python处理40年CNLUCC数据集 1972年至今的中国土地利用变化数据,如同一部记录国土变迁的"生态相册"。对于区域规划师、生态研究者而言,这套CNLUCC数据集的价值不亚于考古学家手中的碳14检测仪。本文将带您用…...
从404到无损输出:一个Favicon抓取API的三年优化笔记(含CDN、懒加载避坑指南)
从404到毫秒响应:Favicon API架构演进与高并发实践 第一次收到用户反馈"favicon接口返回500错误"时,我们团队正在会议室讨论如何优化爬虫性能。那是个典型的周一早晨——咖啡还没喝完,警报先响了起来。这个看似简单的图标抓取服务&…...
收藏!小白也能入局:2026年最火高薪AI Agent开发指南(年薪80万+)
文章介绍了Agentic AI(AI Agent)的兴起及其对职场的巨大影响。通过一个真实案例展现了个人通过学习AI从月薪8K到年薪80万的转变。文章指出,到2026年,40%的岗位将与AI Agent协作,年薪10万美元起步的职位需求激增。文章详…...
Qwen3.5-4B-Claude-Opus一文详解:GGUF量化模型在低延迟推理场景下的优势
Qwen3.5-4B-Claude-Opus一文详解:GGUF量化模型在低延迟推理场景下的优势 1. 模型概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B架构的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该…...


