软件工程与计算总结(十九)软件测试
目录
编辑
一.引言
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天等待邮件通知。 使用授权: 文…...

饲料化肥经营商城小程序的作用是什么
我国农牧业规模非常高,各种农作物和养殖物种类多,市场呈现大好趋势,随着近些年科学生产养殖逐渐深入到底层,专业的肥料及饲料是不少从业者需要的,无论城市还是农村都有不少经销店。 但在实际经营中,经营商…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...