软件测评师教程之软件测试基础

news2024/11/26 8:54:10

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

一.软件测试分类

(1)按照开发阶段划分

1.单元测试(模块测试)

单元测试需要从程序内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

2.集成测试(组装测试)

软件集成的过程是一个持续的过程,会形成很多个临时版本,在不断的集成过程中,功能集成的稳定性是真正的挑战。在每个版本提交时,都需要进行冒烟测试,即对程序主要功能进行验证。冒烟测试也叫版本验证测试、提交测试。

3.确认测试

通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求说明书中规定的要求。

4.系统测试

在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户的需求。

5.验收测试

按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。

(2)按照测试实施组织划分

1.开发方测试
2.用户测试
3.第三方测试

(3)按照测试技术划分

1.白盒测试(结构测试)

对程序内部结构的分析、检测来寻找问题。将程序看成一个透明的白盒子,能清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的。

2.黑盒测试

通过程序的外部来发现缺陷和错误。将程序看成一个黑盒子,不考虑程序结构和处理过程,在程序的界面进行测试,检查是否按照需求规定来正常实现。

3.灰盒测试

介于白盒与黑盒之间的测试。灰盒关注输出对于输入的正确性以及内在表现,但这种关注不像白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。

二.软件测试过程模型

(1)V模型

V模型是最具有代表意义的测试模型,但存在着一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,容易使人理解为测试是软件开发的最后一个阶段,只针对程序进行测试寻找错误,而需求分析阶段隐藏的问题一直到后期的验收测试才被发现。

(2)W模型

强调测试伴随着整个软件开发周期,测试的对象也不仅仅是程序,需求、功能和设计同样要测试。可以说,测试与开发是同步进行的,从而有利于尽早地发现问题。以需求为例,需求分析一完成,我们就可以对需求进行测试,而不是等到最后才进行针对需求的验收测试。
W模型和V模型都把软件开发视为需求、设计、编码等一系列串行的活动。将软件开发和测试看成了一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可正式开始下一阶段,这样就无法支持迭代、自发性以及变更调整。

(3)H模型

H模型揭示了软件测试不仅仅指测试的执行,还包括很多其他的活动;软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行;软件测试要尽早准备,尽早执行;软件测试是根据被测物的不同而分层次进行的。不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。
在H模型中,软件测试模型是一个独立的流程,贯穿于整个产品周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。

(4)X模型

X模型是弥补V模型的一些缺陷。X模型左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序。【定位了探索性测试】

(5)前置测试模型

开发与测试相结合;对每一个交付内容进行测试;在设计阶段进行测试计划和测试设计;测试和开发结合在一起;让验收测试和技术测试保持相互独立。

(6)测试模型的使用

在W模型的框架下,运用H模型的思想进行独立地测试,并同时将测试和开发紧密结合,寻找恰当的就绪点开始测试并反复迭代测试,最终保证按期完成预定目标。

三.软件测试策略

(1)测试信息流

(2)分析设计阶段

1.需求说明书评测

编制良好需求说明书的8条原则:
原则1:功能与如何实现相分离,描述需要“做什么”而不是“如何做”;
原则2:要求使用面向处理的规格说明语言,讨论来自环境的各种刺激可能导致系统做出什么样的功能性反应,来定义一个行为模型,从而得到“做什么”的规格说明;
原则3:描述该目标软件与系统的其他系统元素交互的方式;
原则4:规格说明必须包括系统运行的环境;
原则5:系统规格说明必须是一个认识的模型,而不是设计和实现的模型;
原则6:规格说明必须是可操作的;
原则7:规格说明必须容许不完备性并允许扩充;
原则8:规格说明必须局部化和松散的耦合。它所包括的信息必须局部化,这样当信息被修改时,只要修改某个单个的段落。同时,规格说明应被松散的构造,以便容易加入和删去一些段落。

需求说明书的框架:

需求说明书评测规范:

2.概要设计说明书评测

评测内容:
①可追溯性:软件的每一成分是否可追溯到某一项需求;
②接口:确认内部接口与外部接口是否已经明确定义;
③风险:
④实用性;
⑤技术清晰度;
⑥可维护性;
⑦质量;
⑧各种选择方案;
⑨限制;
⑩其他具体问题:对于文档、可测试性、设计过程等进行评估。

3.详细设计说明书评测

与概要说明书基本相同,这里不再赘述。

4.软件编码规范评测

A.源程序文档化:①符号名的命名,这些名字应能反应它所代表的实际东西,应有一定的实际意义;②程序的注释;③标准的书写格式。
B.数据说明:①数据说明的次序应当规范化;②说明语句中变量安排有序化;③使用注释说明复杂数据结构。
C.语句结构:语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。
D.输入和输出:输入和输出的方式和格式应尽可能方便用户的使用。

(3)开发阶段

1.单元测试

①模块接口测试
A.调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;
B.所测模块调用子模块时,它输入给子模块的参数与子模块的形式参数在个数、属性、顺序上是否匹配;
C.是否修改了只作输入用的形式参数;
D.输出给标准函数的参数在个数、属性、顺序上是否正确;
E.全局量的定义在各模块中是否一致;
F.限制是否通过形式参数来传送;
G.文件属性是否正确;
H.OPEN语句与CLOSE语句是否正确;
I.规定的I/O格式说明与I/O语句是否匹配;
J.缓冲区容量与记录长度是否匹配;
K.在进行读写操作之前是否打开了文件;
L.在结束文件处理时是否关闭了文件;
M.正文书写/输入错误,以及I/O错误是否检查并做了处理。

②局部数据结构测试(最常见的错误来源,应设计测试用例来检查)
A.不正确或不一致的数据类型说明;
B.使用尚未赋值或尚未初始化的变量;
C.错误的初始值或错误的缺省值;
D.变量名拼写错或书写错;
E.不一致的数据类型。

③路径测试(对基本的执行路径和循环进行测试)
A.运算的优先次序不正确或误解了运算的优先次序;
B.运算的方式错,即运算的对象彼此在类型上不相容;
C.算法错;
D.初始化不正确;
E.运算精度不够;
F.表达式的符号表示不正确;
G.不同数据类型的相互比较;
H.不正确的逻辑运算符或优先次序;
I.因浮点数运算精度问题而造成的两值比较不等;
J.关系表达式中不正确的变量和比较符;
K.不正确的多循环一次或少循环一次;
L.错误的或不可能的循环中止条件;
M.当遇到发散的迭代时不能中止的循环;
N.不适当地修改了循环变量。

④错误处理测试。
若出现下列的情况之一,则表明模块的错误处理功能包含有错误或缺陷:
A.出错的描述难以理解;
B.出错的描述不足以对错误定位,不足以确定出错的原因;
C.显示的错误与实际的错误不符;
D.对错误条件的处理不正确;
E.在对错误进行处理之前,错误条件已经引起系统的干预。

⑤边界测试。

2.集成测试
①一次性组装方式

首先对每个模块分别进行模块测试,再把所有模块组装在一起进行测试,最终得到要求的软件系统。

②增殖式组装方式

A.自顶向下的增殖方式:将模块按系统程序结构,沿控制层次自顶向下进行组装;
B.自底向上的增殖方式:从程序模块的最底层模块开始组装和测试;
C.混合增殖式测试:把以上两种结合起来进行组装和测试。

集成测试完成的标志:
Ⅰ.成功地执行了测试计划中规定的所有集成测试;
Ⅱ.修正了所发现的错误;
Ⅲ.测试结果通过了专门小组的评审。

3.确认测试(一般由独立的第三方测试机构进行)
①进行有效性测试

在模拟的环境下,运用黑盒测试的方法,验证所测软件是否满足需求规格说明书列出的需求。需要制定测试计划、测试步骤以及具体的测试用例。

②软件配置复查

其目的是保证软件配置的所有成分都齐全,各方面的质量都符合要求,具有维护阶段所必须的细节,而且已经编排好分类的目录。

4.系统测试

将通过集成测试的软件与计算机的硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行的环境下,对计算机系统进行一系列测试。

5.验收测试

验收测试往往不是对系统的全覆盖测试,而是针对用户的核心业务流程进行的测试。同时,测试的执行人员也不是开发方的测试组成员,而是由用户方的使用人员完成。

(4)软件验证与确认(V&V)过程

V&V基本概念

①验证(Verification):通过检查和提供客观证据,证实规定的需求已满足;
②确认(Validation):通过检查和提供客观证据,证实预期用途的需求是否得到满足;
③独立验证和确认(Independent Verification and Validation):由在技术、管理和财务上与开发组织有规定程度独立性的组织执行的V&V过程。

四.软件失效分类与管理

1.软件失效分类

①软件错误:软件生存期内不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。可见软件错误是一种人为过程,相较于软件本身,是一种外部行为。
②软件缺陷:存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差,如少一逗点、多一语句等,其结果是软件运行于某一特定条件时出现软件故障,这时称软件缺陷被激活。
③软件故障:软件运行过程中出现的一些不希望或不可接受的内部状态,此时若没有适当措施加以及时处理,便产生软件失效。显然,软件故障是一种动态行为。
④软件失效:软件运行时产生的一种不希望或不可接受的外部行为结果。

综上所述,软件错误是一种人为错误,一个软件错误必定产生一个或多个软件缺陷,当一个软件缺陷被激活时,便产生一个软件故障(同一个软件缺陷在不同条件下被激活,可能产生不同的软件故障),软件故障如果没有及时的容错措施加以处理,便不可避免地导致软件失效(同一个软件故障在不同条件下可能产生不同的软件失效)。

2.缺陷与错误发布

分布情况:需求56%,设计27%,代码7%,其他10%。

3.缺陷与错误严重性与优先级

缺陷与错误划分严重性与优先级的通用原则是:
①表示软件缺陷所造成的危害的恶劣程度;
②优先级表示修复缺陷的重要程度和次序。

优先级:
①最高优先级:立即修复,停止进一步测试;
②次高优先级:在产品发布之前必须修复;
③中等优先级:如果时间允许应该修复;
④最低等优先级:可能会修复,但是也能发布。

五.白盒测试(将测试对象看作一个打开的盒子)

白盒测试也称结构测试或逻辑驱动测试,按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常运行,检测程序中的每条通路是否都能按预定要求正确工作。

六.黑盒测试(将测试对象看作一个不能打开的盒子)

黑盒测试也称功能测试,通过测试检测每个功能是否都能正常使用。着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试用例设计方法:
等价类划分法:将程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据作为测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其他值。
边界值分析法:不仅重视输入条件边界,而且也必须考虑输出域边界。
错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。
因果图法:从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表。
正交试验设计法:使用已经造好了的正交表格来安排试验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率。

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1561255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql数据库:故障分析与配置优化

目录 前言 一、Mysql逻辑架构图 二、Mysql单实例常见故障 1、无法通过套接字连接到本地MySQL服务器 2、用户rootlocalhost访问被拒绝 3、远程连接数据库时连接很慢 4、无法打开以MYI结尾的索引文件 5、超出最大连接错误数量限制 6、连接过多 7、配置文件/etc/my.cnf权…

全栈开发与测试定向培养班

Python全栈开发与测试 什么是软件测试? 对于测试行业来说,行业普遍会把职位分为测试工程师和测试开发工程师两个岗位。软件测试工程师就是常规意义上了解到的功能测试岗位,以功能测试为主,会有少量的自动化测试。测试能力要求:熟…

键盘输入与屏幕输出——单个字符的输入和输出

目录 字符常量 字符型变量 单个字符的输入输出 两种输入输出方法的比较 字符常量 字符常量是用单引号括起来的一个符号 *’3’表示一个数字字符,而3则表示一个整数数值 转义字符(Escape Character) *一些特殊字符(无法从键盘…

Dimitra:基于区块链、AI 等前沿技术重塑传统农业

根据 2023 年联合国粮食及农业组织(FAO)、国际农业发展基金(IFAD)等组织联合发布的《世界粮食安全和营养状况》报告显示,目前全球约有 7.35 亿饥饿人口,远高于 2019 年的 6.13 亿,这意味着农业仍…

【Linux C | 多线程编程】线程的连接、分离,资源销毁情况

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-04-01 1…

讲解pwngdb的用法,以csapp的bomb lab phase_1为例

参考资料 Guide to Faster, Less Frustrating Debugging 什么情况下会使用gbd 需要逆向ELF文件时(掌握gdb的使用,是二进制安全的基本功)开发程序时,程序执行结果不符合预期 动态调试ELF文件可以使用另外一种方法:IDA的远程linux动态调试。个…

探索 Redis 数据库:一款高性能的内存键值存储系统

目录 引言 一、非关系型数据库 (一)什么是非关系型数据库 (二)非关系型数据库的主要特征 (三)关系数据库与非关系型数据库的区别 二、Redis 简介 (一)基本信息 (…

栈————顺序栈和链式栈

目录 栈 顺序栈 1、初始化顺序栈 2、判栈空 3、进栈 4、出栈 5、读栈顶元素 6、遍历 链式栈 1、初始化链式栈 2、断链式栈是否为空判 3、入栈(插入) ​编辑​编辑 4、出栈(删除) 5、读取栈顶元素 6、输出链式栈中各个节点的值(遍历) 栈 …

LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】

LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】 题目描述:解题思路一:从左下角或者右上角元素出发,来寻找target。解题思路二:右上角元素,代码解题思路三:暴力也能过解题思路四:二分…

【小呆的力学笔记】弹塑性力学的初步认知六:后继屈服条件

文章目录 4. 后继屈服条件4.1 后继屈服条件4.2 强化模型4.2.1 等向强化模型4.2.2 随动强化模型4.2.3 两种强化模型的讨论 4. 后继屈服条件 4.1 后继屈服条件 上一章节的屈服条件是在当材料未经受任何塑性变形时且在载荷作用下材料第一次进入屈服应该满足的条件(也…

Vscode + PlatformIO + Arduino 搭建EPS32开发环境

Vscode PlatformIO Arduino 搭建EPS32开发环境 文章目录 Vscode PlatformIO Arduino 搭建EPS32开发环境1. Vscode插件安装2. 使用PlatformIO新建工程3.工程文件的基本结构4.一个基本的测试用例Reference 1. Vscode插件安装 如何下载vscode这里不再赘述,完成基本…

LeetCode-热题100:160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

异常,Lambda表达式

文章目录 异常介绍存在形式程序中异常发生后的第一反应体系JVM的默认处理方案处理方式声明 throws概述格式抛出 throw格式注意意义 throws和throw的区别 捕获 try,catch介绍格式执行方式多异常捕获处理意义 如何选择用哪个 Throwable类介绍常用方法 自定义异常概述实现步骤范例…

2_3.Linux系统中的日志管理

# 1.journald # 服务名称:systemd-journald.service journalctl 默认日志存放路径: /run/log (1) journalctl命令的用法 journalctl -n 3 ##日志的最新3条--since "2020-05-01 11:00:00" ##显示11:00后的日…

Mysql的高级语句3

目录 一、子查询 注意:子语句可以与主语句所查询的表相同,但是也可以是不同表。 1、select in 1.1 相同表查询 1.2 多表查询 2、not in 取反,就是将子查询结果,进行取反处理 3、insert into in 4、update…

LeetCode226:反转二叉树

题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 解题思想 使用前序遍历和后序遍历比较方便 代码 class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root nullptr) return root;swap(root->left, root…

vue 文件下载

1.返回路径下载 注: 针对一些浏览器无法识别的文件格式(如pdf、xls、ppt)。可以直接在地址栏上输入URL即可触发浏览器的下载功能。 情况1 //地址栏输入文件URLwindow.location.href URLwindow.open(URL) 注:该方式将下载逻辑放在后端处理&#xff0c…

Learning Discriminative Representations for Skeleton Based Action Recognition

标题:基于骨架的动作识别的学习判别性表示 原文链接:Learning Discriminative Representations for Skeleton Based Action Recognition (thecvf.com) 源码链接:https://github.com/zhysora/FR-Head 发表:CVPR 摘要 最近&…

后端返还二进制excl表格数据时候,如何实现在前端下载表格功能及出现表格打开失败的异常处理。

背景: 后端返还一个二进制流的excl表格数据,前端需要对其解析,然后可提供给客户进行下载。 思路:把二进制流数据转换给blob对象,然后利用a标签进行前端下载。 代码: 后端返还 类似如下的数据 前端代码…

OpenHarmony实战:Hilog组件在交互时应用指南

一、OpenHarmony hilog 组件工具概述 hilog 是 OpenHarmony 日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。适用于 OpenHarmony 应用、硬件开发及测试人员,是每个开发人员的必备、入门工具。 hilog 日志查看命令行工…