软件测试笔记

news2025/2/7 23:48:28

一、介绍

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

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.coloradmin.cn/o/1850911.html

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

相关文章

经典游戏案例:愤怒的小鸟

学习目标:愤怒的小鸟核心玩法 游戏画面 项目结构目录 部分核心代码 using System.Collections; using System.Collections.Generic; using birds; using utils; using UnityEngine;public class GameManager : MonoBehaviour {public static GameManager sInstanc…

【免费】中国电子学会2024年03月份青少年软件编程Python等级考试试卷一级真题(含答案)

2024-03 Python一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1. 下列哪个命令,可以将2024转换成2024 呢?( A)(2分) A.str(2024) B.int(2024) C.fl…

Flutter Android 调试桥 (adb)

客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。 守护程序adbd:用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。 服务器:用于管理客户端与守护程序之间的通信。服务器在开…

fastapi+vue3+primeflex前后端分离开发项目环境搭建

创建后端项目 创建文件夹: mkdir backend创建python虚拟环境: python -m venv venv使用Pycharm打开文件夹,然后配置python解释器为venv虚拟环境。 安装fastapi: pip install "fastapi[all]"编写第一个程序&#xf…

牛顿迭代法(求解整数的近似平方根)

情景再现 面试官:给你一个整数怎样最快求解他的近似平方根? 小白:可以用while循环呀! 面试官:有没有更好的方法? 小白:可以从这个数的左右两边开始迭代。 面试官:除了这个呢&#xf…

学会python——统计文件中文字出现次数(python实例九)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、统计文本文件中单词频率 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计…

使用 Python 进行测试(7)...until you make it

总结 我很懒,我想用最少的行动实现目标,例如生成测试数据。我们可以: 使用随机种子保证数据的一致性。 >>> random.seed(769876987698698) >>> [random.randint(0, 10) for _ in range(10)] [10, 9, 1, 9, 10, 6, 5, 10…

pytest测试框架pytest-sugar插件生成进度条

Pytest提供了丰富的插件来扩展其功能,介绍下插件pytest-sugar,可以帮助我们在控制台中显示彩色的测试结果和进度条,提供失败的堆栈回溯信息。 为了使用 pytest-sugar,需要满足以下条件: Python 3.8 或更高版本pytest…

Nominatim免费的地址解析,逆地址解析,OpenStreetMap开源地图数据【全网最全】

视频学习地址 国内的一些地址解析供应商的API都开始付费了,就想找个免费的地址解析和逆地址解析的应用,最终选择了Nominatim OpenStreetMap 文章目录 一、选型1-1、数据源1-2、地理编码引擎2-1、初尝Nominatim2-1-1、地址解析2-1-2、逆地址解析 2-2、OS…

【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…

平凉特色小吃,味蕾的诱惑之旅

平凉,这座历史悠久的城市,不仅拥有深厚的文化底蕴,更有着让人垂涎欲滴的特色小吃。每一种小吃都承载着当地人的情感与记忆,成为了平凉独特的饮食符号。平凉特色小吃酿皮更是别具风味。爽滑透明的凉皮,配上香辣可口的调…

动态规划——买卖股票的最佳时机含冷冻期

1、题目链接 leetcode 309. 买卖股票的最佳时机含冷冻期 2、题目分析 该题有我们可以定义三种状态,买入状态,可交易状态 ,冷冻期状态 我们可以建立一个n*3的二维数组来表示这三种状态: 根据这个图可以看出, 可以从…

JAVA同城服务场馆门店预约系统支持H5小程序APP源码

📱一键预约,畅享无忧体验🏢 🚀一、开启预约新纪元 在繁忙的都市生活中,我们常常因为时间紧张而错过心仪的门店或场馆服务。然而,有了“门店场馆预约小程序”,这些问题都将迎刃而解。这款小程序…

前端编程语言——JS语言结构、函数、数组、字符串、日期、对象、定时器(2)

0、前言: 这篇文章记录的是我自己的学习笔记。在python中通过input来获取输入,在JS中用prompt(),来获取输入。写JS代码要记得每个代码结束要加上分号。 1、JS编程语言结构: 顺序结构:从上往下依次执行分支结构&#…

2021-03-29:加密与解密

前段时间导师分配的任务主要是看《加密与解密》这本书,“书本写的很详细,认真看会看懂的!” 是的啊,书本写的很详细,可是作为一个没基础的小白看起来还是挺吃力的,概念一个接一个的出现,虽然看…

每日待办事项提醒用什么便签app比较好?

在快节奏的现代生活中,我们经常需要记住各种事项,如会议、预约、购物清单等。这时,一个高效的便签App就显得尤为重要,可以帮助我们有效地管理日常任务和待办事项。而每日待办事项提醒用什么便签app比较好?面对市场上众…

Vulnhub--AI: WEB: 2

渗透复现 平台框架存在目录穿越漏洞,利用该漏洞读取敏感信息 Ping功能点绕过,进行命令执行操作,反弹shell无果后,利用目录穿越漏洞遍历敏感API,读取到用户SSH登录凭证 SSH登录进行Linux lxd容器提权 知识扩展 目录…

【Proteus仿真】【Arduino单片机】汽车倒车报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduinno单片机控制器,使用LCD1602液晶、按键、继电器电机模块、DS18B20温度传感器、蜂鸣器LED、HCSR04超声波等。 主要功能: 系统运行后,LCD16…

【PyCUDA安装问题集锦:网站失效】

windows 下 pycuda 安装问题 问题一 安装不上的主要问题:pip默认安装最新版,导致pycuda版本和系统版本不对应。 1.先查看cuda版本 nvidia-smi2.查看需要安装的虚拟环境的python版本(如python3.8) 3.前往下载python扩展包&…