软件测试笔记

一、介绍

软件测试是为了尽可能多地发现软件系统中的错误而不是证明软件的正确性。

1、软件缺陷是什么?

软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug。

缺陷的判定标准
软件未实现需求说明书中明确要求的功能——少功能
软件出现了需求说明书中指明不应该出现的错误——功能错误
软件是现实的功能超出需求说明书指明的范围——多功能
软件未实现需求说明书中虽未明确指明但应该实现的要求——隐性功能错误
软件测试人员认为软件难以理解,不易使用,运行缓慢,用户体验不好——不易使用

缺陷的等级可以划分为:轻微、一般、严重、致命。

2、软件测试的定义

软件测试是为了发现错误而运行程序的过程。
测试是使用人工或自动的手段来运行或检测某个系统的过程,其目的在于检验它是否满足约定的需求或是比较预期结果与实际结果的差别。

3、软件测试的目的

为了发现软件中的错误。
以检验软件是否满足用户需求为目标。
一个成功的测试是发现了至今尚未发现的错误。

4、软件测试的原则

(1)要尽早并且不断地进行测试
(2)测试用例应由测试输入数据及与之对应的预期输出结果两部分组成
(3) 程序员应避免检查自己的程序
(4) 设计周密的测试用例
(5) 注意测试中错误集中的现象
(6) 严格执行测试计划,排除测试的随意性
(7) 对测试错误结果一定要有一个确认的过程
(8) 妥善保存测试计划、测试用例、出错统计和最终分析报告

二、软件测试生命周期(过程)

软件测试是由测试计划、单元测试、集成测试、系统测试、验收测试等组成的。
在这里插入图片描述

1、测试计划

软件测试伴随在如那件开发的整个生命周期。
软件生命周期:需求分析→系统设计→编码→软件测试→系统发布→软件运行使用→软件维护。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、单元测试:最基本的测试活动,多采用 白盒测试 技术

测试对象软件设计的最小单位——模块。
单元测试的依据是详细设计,主要用于验证各个独立模块的功能正确性。
系统中多个模块可以并行地进行测试。
在这里插入图片描述
驱动模块: 负责提供测试输入,调用被测模块,并接收输出以验证功能正确性。
被测模块: 是单元测试的核心,直接被测试的代码模块。
桩模块: 用于模拟被测模块依赖的其他模块,帮助实现测试的隔离性。

3、集成测试

在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。

集成测试策略最主要的有三种:
大爆炸集成,自顶向下集成方式,自底向上集成方式。

4、系统测试

对最终软件系统进行全面测试。
(1)功能测试:检查产品是否达到产品需求说明书中规定的功能。
(2)性能测试
负载测试: 通过不断增加负载的方式,关注系统在正常工作情况下的性能瓶颈和负载能力。
压力测试: 关注系统在高负载或超出最大负载时的表现。
(3)安全测试
(4)强度测试
(5)健壮性测试
(6)用户界面测试
(7)兼容测试
(8)安装测试
(9)回归测试:根据修复好了的缺陷再重新进行的测试。目的是一方面验证以前出现过但已经修复好的缺陷不再重新出现;另一方面验证再修复缺陷的同时没有引入新的错误。

5、验收测试

软件系统的功能和性能满足用户需求。
Alpha测试:就是指内测,是在开发者环境进行的测试,环境是可控的,用户少,时间集中。
Beta测试:就是指公测,是在用户环境下进行的测试,环境不可控,用户比较多,时间不集中。

三、测试技术

1、代码检查

(1)代码会审
一组人阅读、讨论和争议对程序进行静态分析的过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)走查
以小组为单位进行代码阅读,区别是使用了计算机把测试数据沿程序的逻辑结构走一遍。

2、黑盒测试(功能测试)

代码不可见,UI功能可见
主要依据:用户需求规格说明书和详细设计说明书。

(1)等价类划分
有效等价类:有意义的,合理的输入数据所构成的集合。
无效等价类:不合理的或无意义的输入数据所构成的集合。
使用场景:有数据输入(编辑框)的地方。

例1.注册邮箱
邮箱名要求6~18个字符,可使用字母、数字、下划线、需以字母开头。

等价类表

输入条件有效等价类编号无效等价类编号
6~18个字符1少于6个字符
多于18个字符
2
3
4
邮箱名包含字母、数字、下划线5除字母、数字、下划线外的特殊字符
非打印字符
中文字符
6
7
8
以字母开头9以数字或下划线开头10

测试用例

编号输入数据覆盖等价类预期输出
1test_1231、5、9合法输入
2test2、5、9非法输入
3test_123456789_1234567893、5、9非法输入
4NULL4非法输入
5test&&1231、6、9非法输入
6test 1231、7、9非法输入
7test测试1231、8、9非法输入
8123_test1、5、10非法输入

(2)边界值分析
边界范围节点:选取正好等于、刚好大于、刚好小于边界的值作为测试数据
上点:边界上面的点(正好等于)
离点:离边界最近的点
内点:范围内的点
在这里插入图片描述

在这里插入图片描述

(3)错误推测法
根据经验,列举出程序中所有可能有的错误和容易发生错误的特殊情况,并根据它们设计测试用例。

(4)因果图法
因————原因,输入条件
果————结果,输出结果
因果图法就是通过画图的方法表达输入和输出的关系(因果关系)
在这里插入图片描述Ci表示原因,通常置于图的左部;Ei表示结果,通常在图的右部。

例 某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。
1) 根据题意,原因和结果如下:
原因:
1——第一列字符是A;
2——第一列字符是B;
3——第二列字符是一个数字。
结果:
21——修改文件;
22 ——给出信息L;
23——给出信息M。
2) 其对应的因果图如下:
11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。
在这里插入图片描述

(5)判定表驱动
解决什么问题?(多条件限制依赖关系如何测试)
实施——画表格——列出条件列出操作

在这里插入图片描述

3)根据以上因果图建立判定表。
在这里插入图片描述

(6)正交试验法
是研究多因素、多水平的一种实验方法,它利用正交表来对实验进行设计,通过少数实验代替全面的实验。

行数:正交表中的行的个数,即试验的次数,也是通过正交实验法设计的测试用例的个数。
因素:正交表中列的个数,即要测试的功能点。
水平数:任何单个因素能够取得的值的最大个数,即要测试功能点的输入值。
7因素,2水平,8行。
在这里插入图片描述

例 某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:
根据“性别”=“男,女”进行查询
根据“班级”=“1班,2班”查询
根据“成绩”=“及格,不及格”查询
按照传统设计——全部测试
分析上述测试需求,有3个被测元素,被测元素我们称为因素,每个因素有两个取值,我们称之为水平值(也就是2)。
如果是普通的全面测试,则如下(2^3=8次)
在这里插入图片描述
若采用正交测试
利用正交表设计测试用例,我们得到的测试用例个数是n=3*(2-1)+1=4(这个公司就是(因素数*(最大水平数-1)+1)),对于三因素两水平的刚好有L4(2^3)的正交表可以套用
于是用正交表试验法得出4个测试用例如下(正交测试表的类型一般都会给出来)
在这里插入图片描述

3、白盒测试(结构测试,单元测试):动态测试、静态测试

代码层面
在这里插入图片描述

(1)语句覆盖
设计测试用例,使得程序中每条语句至少被执行一次。
在这里插入图片描述

(2)判定覆盖
设计测试用例,使得程序中的每个判断的”真“和”假“都至少被执行一次。
在这里插入图片描述

(3)条件覆盖
设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值。
在这里插入图片描述

(4)判定/条件覆盖
设计测试用例,使得被测程序中的每个判断本身的判定结果(真假)至少满足一次,每个逻辑条件的可能值也至少被满足一次。就是既满足判定覆盖,也满足条件覆盖。
在这里插入图片描述

(5)条件组合覆盖
设计测试用例,使得被测程序中的每个判定中条件结果的所有可能组合至少执行一次。
在这里插入图片描述

(6)路径覆盖
设计测试用例,覆盖程序中所有可能的路径。
在这里插入图片描述

4、设计测试用例

测试用例包括两部分:测试输入数据、预期输出数据。

四、习题集

1、针对水杯,设计测试用例

①外观:是否与图片宣传一致,是否美观、有没有明显划痕、形变
②密封性:颠倒、倾斜是否会漏水
③容量:实际容量是否与包装标注的一致
④使用便捷性:设计的手柄是否合理,重量是否适中,喝水是否方便
⑤保温性/保冷性:保温/保冷时长可以达到预期时长否
⑥耐用性:抗摔否
⑦安全性:使用的材质是否对人体有害,是否符合国家标准
⑧清洁性:测试水杯是否容易清洗掉污渍,杯口和杯身连接处是否容易清洁
⑨环保性:使用的材质是否可回收,是否符合环保标准
⑩杯盖开启性:杯盖易于开启,且密封性要好

2、输入三个数a、b、c分别作为三边的边长构成三角形。程序判断所构成的三角形类型。请为该程序 设计测试用例,满足判断覆盖。

三角形类型abc
等边三角形777
等腰三角形775
一般三角形345
非三角形341

3、C/S:客户端/服务器
B/S:浏览器/服务器

4、冒烟测试

冒烟测试就是用较少的人,在较短的时间内,测试程序的主要功能,如果通过再进行正式的测试。

5、静态和动态测试

静态测试不运行被测程序本身而寻找程序中可能存在的错误或评估程序代码的过程。通过分析或者检查源程序的语法、结构、过程、借口等来检查程序的正确性,找出问题。这些问题包括:参数不匹配、不适当的分支嵌套和循环嵌套、未使用过的变量、空指针的引用等。
文档的测试一般也是用静态测试。
静态测试可以用手工,也可以用工具实现。静态测试工具一般是对代码进行语法检查,找出不符合编码规范的地方,根据某种模型评价代码的质量,生成系统的调用关系图等,常见的工具有Telelogic公司的Logiscope、PR公司的PRQA等。

动态测试运行被测试程序,输入相应的测试数据,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。

6、黑盒测试、灰盒测试和白盒测试

黑盒测试又称为功能测试、数据驱动测试或者基于规格说明书的测试,注重测试软件的功能需求。测试人员不关心程序具体如何实现,根据软件的规格对软件进行各种输入,观察软件的各种输出结果,发现软件的缺陷。因为这类测试不考虑软件的内部运作原理,因此软件对用户来说就像一个黑盒子。

灰盒测试是介于黑盒测试与白盒测试之间的测试方法,在执行白盒测试的时候考虑使用黑盒测试的方法。

白盒测试又称结构测试、逻辑驱动测试或基于程序代码的测试。根据软件内部的工作原理分析来进行测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量。

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

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

相关文章

已解决java.rmi.activation.ActivationException异常的正确解决方法,亲测有效!!!

已解决java.rmi.activation.ActivationException异常的正确解决方法,亲测有效!!! 问题分析 java.rmi.activation.ActivationException 是与Java RMI(远程方法调用)的激活机制相关的一种已检查异常。这个异…

遍历二叉树和线索二叉树

目录 一、*遍历二叉树 1.1遍历定义 1.2遍历目的 1.3遍历用途 1.4遍历方法 1.4.1先序遍历(DLR) 1.4.2中序遍历(LDR) 1.4.3后序遍历(LRD) 1.5根据遍历序列确定二叉树 1.6遍历算法的实现 1.6.1先序遍…

PDF转成清晰长图

打开一个宝藏网址在线PDF转换器/处理工具 - 在线工具系列 点击图下所示位置 按照图下所示先上传文件,设置转换参数后点击转换,等待 等待转换完成后,可以在转换结果处选择下载地址,点击即可进行下载使用了。对比了其他几个网站的转…

Django 循环模板标签

1&#xff0c;循环模板标签 Django 模板系统中提供了多种循环模板标签来迭代数据并显示列表、字典或其他可迭代对象。 1.2 {% for %} 标签 用于迭代列表或可迭代对象&#xff0c;并为每个元素提供上下文变量。 {% for item in items %}{{ item }} <!-- 渲染当前迭代项 -…

SpringBoot 搭建sftp服务 实现远程上传和下载文件

maven依赖&#xff1a; <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>application.yml sftp:protocol: sftphost: port: 22username: rootpassword: sp…

java中的日志

springboot自带slf4j框架和logback&#xff0c;我们可以移除spring的logging&#xff0c;然后再带入自己的日志框架。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusio…

【MMSegmentation 环境配置】

MMSegmentation 环境配置 1. 创建python 环境2. 安装pytorch3. 安装MMCV4. 安装 MMSegmentation.5. 测试是否安装成功 1. 创建python 环境 conda create --name openmmlab python3.8 -y conda activate openmmlab2. 安装pytorch On GPU platforms: conda install pytorch tor…

如何混淆 net core 8 架构 C# 编译程序

如何混淆 net core 8 架构 C# 编译程序 一、使用混淆工具 .NET Reactor V6.9二、net core 8 架构 C# 编译程序&#xff08;发布的单文件&#xff09;1、通过发布的单文件程序&#xff0c;可以直接在 .NET Reactor 拖入或打开 &#xff0c;勾选自己需要的保护功能。2、勾选自己需…

迈向百亿亿次人工智能数据基础设施

对我来说&#xff0c;在MinIO已经一个多星期了。沉浸在白板会议、架构审查和客户电话中的最大收获是&#xff0c;产品的简单性既是其显着特征&#xff0c;也是其最具决定性的价值驱动因素之一。在规模上尤其如此。由于人工智能的进步&#xff0c;计算能力的爆炸性增长对数据格局…

ArkUI 开发学习随记——登陆界面,正圆头像,主页顶部,列表项案例源码

目录 案例一&#xff1a;登录界面 案例二&#xff1a;正圆头像&#xff0c;胶囊按钮 案例三&#xff1a;主页顶部 案例四&#xff1a;列表项 案例一&#xff1a;登录界面 代码&#xff1a; build() {Column({space:10}){Image($r("app.media.naxida")).width(100)…

什么是N卡和A卡?有什么区别?

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是N卡和A卡&#xff1f;有什么区别&#xff1f;…

福州大学 2022~2023 学年第 1 学期考试 A 卷压轴题参考答案

题目&#xff1a; 定义一个抽象类Structure&#xff08;含有纯虚函数type函数&#xff0c;用以显示当前结构的类型&#xff1b; 含有show函数&#xff09;&#xff0c; 在此基础上派生出Building类, 用来存储一座楼房的层数、房间数以及它的总平方米数。 建立派生 类House&am…

已解决java.security.acl.AclNotFoundException异常的正确解决方法,亲测有效!!!

已解决java.security.acl.AclNotFoundException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 分析错误日志 检查ACL文件路径和名称 确认系统权限 修改代码逻辑 确保ACL文…

现在这个行情,又又又要开始准备面试了~~

亲爱的程序员朋友们: 这些资料曾经帮助过许多有志之士顺利拿下抖音、快手、阿里等大厂的Offer&#xff0c;现在也希望它们能为你的面试旅程助力&#xff01; 关注【程序员世杰】回复【1024】惊喜等你来拿&#xff01; 截图 关注【程序员世杰】回复【1024】惊喜等你来拿&#xf…

python入门基础知识(错误和异常)

本文部分内容来自菜鸟教程Python 基础教程 | 菜鸟教程 (runoob.com) 本人负责概括总结代码实现。 以此达到快速复习目的 目录 语法错误 异常 异常处理 try/except try/except...else try-finally 语句 抛出异常 用户自定义异常 内置异常类型 常见的标准异常类型 语法…

数据结构---二叉树前中后序遍历

1. 某完全二叉树按层次输出&#xff08;同一层从左到右&#xff09;的序列为 ABCDEFGH 。该完全二叉树的前序序列为() A: ABDHECFG B: ABCDEFGH C: HDBEAFCG D: HDEBFGCA 2. 二叉树的先序遍历和中序遍历如下&#xff1a;先序遍历: EFHIGJK; 中序遍历: HFIEJKG. 则二叉…

Unit redis-server.service could not be found.

我的报错如下Unit redis-server.service could not be found. 关键是刷新后台服务 sudo systemctl daemon-reload启动redis-server sudo systemctl start redis-server查看redis-Server服务状态 sudo systemctl status redis-server

MySQL数据库中的索引知识

MySQL数据库中索引的作用是用来加快数据的查询速度。 索引 index&#xff08;表的层面&#xff09; 在数据库中使用select来查询数据的时候会一条一条得去查询符合要求的数据&#xff0c;而索引就相当于在这张表中依据某一个字段的数值给这张表的数据创建了一个目录。目录帮…

江协科技51单片机学习- p11 静态数码管显示

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…

35.简易远程数据框架的实现

上一个内容&#xff1a;34.构建核心注入代码 34.构建核心注入代码它的调用LoadLibrary函数的代码写到游戏进程中之后无法调用&#xff0c;动态链接库的路径是一个内存地址&#xff0c;写到游戏进程中只把内存地址写过去了&#xff0c;内存地址里的内容没写过去&#xff0c;导致…