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

软件测试笔记

一、介绍

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

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、黑盒测试、灰盒测试和白盒测试

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

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

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

相关文章:

软件测试笔记

一、介绍 软件测试是为了尽可能多地发现软件系统中的错误而不是证明软件的正确性。 1、软件缺陷是什么? 软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug。 缺陷的判定标准 软件未实现需求说明书中明确要求的功能——少功能 软件出现了需求说…...

Elasticseach RestClient Api

Elasticsearch RestclientApi基础用法 查询 索引库 初始化 添加依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>创建链接 package com…...

【网络安全学习】漏洞扫描:-04- ZAP漏洞扫描工具

**ZAP(Zed Attack Proxy)**是一款由OWASP组织开发的免费且开源的安全测试工具。 ZAP支持认证、AJAX爬取、自动化扫描、强制浏览和动态SSL证书等功能。 1️⃣ 安装zap工具 现在的kali版本不一定会预装zap&#xff0c;我们可以自行安装&#xff0c;安装也十分简单。 apt-get …...

fffdddd

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;entity GJL isport(clk, reset: in std_logic;btn_green, btn_red: in std_logic; -- 新增控制按键r1, r2, y1, y2, g1, g2: out std_logic;ledag: out std_logic_…...

SpringSecurity实战入门——授权

权限系统的作用 例如一个学校图书馆的管理系统,如果是普通学生登录就能看到借书还书相关的功能,不可能让他看到并且去使用添加书籍信息,删除书籍信息等功能。但是如果是一个图书馆管理员的账号登录了,应该就能看到并使用添加书籍信息,删除书籍信息等功能。 总结起来就是…...

Linux 网络请求工具:curl

文章目录 Linux 网络请求&#xff1a;curl1. 安装2. 常规用法3. 传输速率4. FTP5. 代理 Linux 网络请求&#xff1a;curl 1. 安装 若系统没有 curl 命令&#xff0c;可以直接通过 yum 或者 dnf 安装&#xff1a; yum -y install curl # 查看版本&#xff0c;确认安装结果 cu…...

leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II

题目&#xff1a; 题解&#xff1a; 本题比普通的寻找旋转排序数组中的最小值多了一个数组中的元素可以重复这一点。 这会时原来的思路出现一个漏洞&#xff08;大家感兴趣可以看看我做普通版寻找旋转排序数组最小值的思路&#xff09;&#xff0c;就是旋转后的数组中的第二个…...

Flink 容错

Apache Flink 的容错机制是确保数据流应用程序在出现故障时能够恢复一致状态的关键机制。这一机制主要通过创建分布式数据流和操作符状态的一致快照来实现&#xff0c;这些快照被称为检查点&#xff08;Checkpoint&#xff09;。以下是 Flink 容错机制的主要特点和关键点&#…...

OpenAI策略:指令层级系统让大模型免于恶意攻击

现代的大模型&#xff08;LLMs&#xff09;不再仅仅是简单的自动完成系统&#xff0c;它们有潜力赋能各种代理应用&#xff0c;如网页代理、电子邮件秘书、虚拟助手等。然而&#xff0c;这些应用广泛部署的一个主要风险是敌手可能诱使模型执行不安全或灾难性的行动&#xff0c;…...

芝麻清单助力提升学习工作效率 专注时间完成有效的待办事项

芝麻清单助力提升学习&工作效率 专注时间完成有效的工作。今天我们给大家带来一个专注清单&#xff0c;一个更高效的学习和工作的方法&#xff01; 我们都知道&#xff0c;专注做一个事情&#xff0c;会有效的提升效率&#xff0c;让事情更高效的完成。如果是学习的话&…...

Docker 容器操作命令

文章目录 前言1. 创建并运行容器2. 列出容器3. 停止容器4. 启动已停止的容器5. 重启容器6. 进入容器7. 删除容器8. 查看容器日志9. 导出和导入容器10. 管理网络11. 数据卷操作12. 设置容器自启动 前言 Docker 容器操作是 Docker 使用过程中非常重要的一部分。以下是一些常见的…...

华为配置创建vlan及划接口,trunk干道,DHCP池塘配置

1、创建 vlan [SWA]vlan 10 [SWA-vlan10]quit [SWA]vlan batch2to3510 批量创建vlan2-3&#xff0c;5.10 2、 接口划入 vlan 单个接口修改接口模式为 access [SWA]interface GigabitEthernet 0/0/5 [SWA-GigabitEthernet0/0/5]port link-type access 批修改为 access [H…...

vue3 computed与watch,watchEffect比较

相同点 都是要根据一个或多个响应式数据进行监听 不同点 computed 如要return回来一个新的响应式值&#xff0c;且这个值不允许直接修改&#xff0c;想要修改的话可以设置set函数&#xff0c;在函数里面去修改所依赖的响应式数据&#xff0c;然后计算属性值会基于其响应式依…...

论文:R语言数据分析之机器学习论文

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 一、研究背景 全球范围内&#xff0c;乳腺癌是导致癌症发病率和死亡率的主要疾病之一。根据2018年…...

【C++】STL中优先级队列的使用与模拟实现

前言&#xff1a;在前面我们学习了栈和队列的使用与模拟实现&#xff0c;今天我们来进一步的学习优先级队列使用与模拟实现 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&#xff23;学习 &#x1f448; &#x1f4af;代码仓库:卫…...

C#开发-集合使用和技巧(二)Lambda 表达式介绍和应用

C#开发-集合使用和技巧 Lambda 表达式介绍和应用 C#开发-集合使用和技巧介绍简单的示例&#xff1a;集合查询示例&#xff1a; 1. 基本语法从主体语句上区分&#xff1a;1. 主体为单一表达式2. 主体是代码块&#xff08;多个表达式语句&#xff09; 从参数上区分1. 带输入参数的…...

Qt底层原理:深入解析QWidget的绘制技术细节(2)

&#xff08;本文续上一篇《Qt底层原理&#xff1a;深入解析QWidget的绘制技术细节(1)》&#xff09; QWidget绘制体系为什么这么设计【重点】 在传统的C图形界面框架中&#xff0c;例如DUILib等&#xff0c;控件的绘制逻辑往往直接在控件的类的内部&#xff0c;例如PushButt…...

【Gradio】表格数据科学与图表-连接到数据库

简介 本指南解释了如何使用 Gradio 将您的应用程序连接到数据库。我们将连接到托管在 AWS 上的 PostgreSQL 数据库&#xff0c;但 gradio 对您连接到的数据库类型及其托管位置完全不可知。因此&#xff0c;只要您能够编写 Python 代码来连接到您的数据&#xff0c;您就可以使用…...

艾多美用“艾”为生命加油,献血活动回顾

用艾为生命加油 6月10日~16日&#xff0c;艾多美中国开启献血周活动&#xff0c;已经陆续收到来自烟台总部、山东、广东、河南、四川、重庆、贵阳&#xff0c;乌鲁木齐&#xff0c;吉林&#xff0c;等地区的艾多美员工、会员、经销商发来的爱心助力&#xff0c;截止到目前&…...

人工智能在气象预报领域的崛起:GraphCast引领新纪元

最近&#xff0c;谷歌推出的天气预测大模型GraphCast在全球范围内引起了广泛关注&#xff0c;其卓越的表现不仅刷新了人们对AI能力的认知&#xff0c;更预示着传统天气预报工作模式的深刻变革。 GraphCast是一款基于机器学习技术的天气预测工具&#xff0c;它通过深度学习和大数…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...