5.5软件工程-系统测试

news2024/12/25 23:44:09

系统测试

  • 意义和目的
  • 原则
  • 测试过程
  • 测试策略
  • 测试方法
    • 练习题
  • 测试用例设计
    • 黑盒测试
      • 等价类划分
      • 边界值分析
      • 错误推测
      • 因果图
    • 白盒测试
      • 逻辑覆盖
      • 循环覆盖
      • 基本路径测试法
    • 练习题
  • 调试
  • 软件度量
    • 练习题

考点少,知识点多

意义和目的

  • 系统测试的意义:系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试
  • 系统测试的目的:就是希望能以最少的人力和时间发现潜在的各种错误和缺陷
  • 信息系统测试应包括软件测试、硬件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标进行,此处所说的测试更多的是指软件测试
  • 系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试时应遵循以下基本原则。

原则

根据测试的概念和目的,在进行信息系统测试时应遵循以下基本原则。

  1. 应尽早并不断地进行测试。测试不是在应用系统开发完之后才进行的,测试应贯穿在开发的各个阶段,应尽早纠正错误,消除隐患
  2. 测试工作应该避免由原开发软件的人或小组承担,测试工作应由专门人员来进行。
  3. 在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期输出结果
  4. 在设计测试用例时,不仅要设计有效、合理的输入条件,也要包含不合理、失效的输入条件
  5. 在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事
  6. 严格按照测试计划来进行,避免测试的随意性
  7. 妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便。
  8. 测试例子都是精心设计出来的,可以为重新测试或追加测试提供方便

测试过程

制订测试计划。在制订测试计划时,要充分考虑整个项目的开发时间和开发进度以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。
编制测试大纲。测试大纲是测试的依据,它明确、详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。
根据测试大纲设计和生成测试用例,产生测试设计说明文档。其内容主要有被测项目、输入数据、测试过程和预期输出结果等。
实施测试。测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例对被测软件或设备进行完整的测试。
生成测试报告。测试完成后要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误。

另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。

测试策略

单元测试。单元测试也称为模块测试。单元测试侧重于模块中的内部处理逻辑和数据结构。测试的对象是可独立编译或汇编的程序模块、软件构件或面向对象软件中的类(统称为模块),测试依据是软件详细设计说明书。
集成测试。目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档。
- 自顶向下集成测试。自顶向下集成测试是一种构造软件体系结构的增量方法。
- 自底向上集成测试。自底向上集成测试就是从原子模块(程序结构的最底层构件)开始进行构造和测侧试。
- 回归测试。回归测试有助于保证变更不引入无意识行为或额外的错误。回归测试可以手工进行,方法是重新执行所有测试用例的子集,或者利用捕捉/回放工具自动执行。
- 冒烟测试。冒烟测试是一种常用的集成测试方法,是时间关键项目的决定性机制,它让软件团队频繁地对项目进行评估。
确认测试。主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:
- 内确认测试:主要由软件开发组织内部按照SRS进行测试。
- α测试:由有代表性的最终用户在开发者的场所进行。用户在开发环境下进行测试,且在受控的环境下进行。
- β测试:用户在实际使用环境下进行测试,β测试是在不被开发者控制的环境下软件的“现场”应用。接到β测试的问题报告之后,开发人员对软件进行修改,然后准备向最终用户发布软件产品。
- 客户验收测试:针对需求规约,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件系统已通过系统测试。
系统测试。测试对象是完整的、集成的计算机系统:测试的目的是在真实系统工作环境下,验证完成的软件配置项是否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。主要内容包括:
- 恢复测试。恢复测试是一种系统测试,通过各种方式强制地让系统发生故障,并验证能否按照要求从故障中恢复过来,并在约定的时间内开始事勞处理,而且不对系统造成任何伤害
- 安全性测试。安全性测试验证建立在系统内的保护机制是否能够实际保护系统不受非法入侵。

  • 压力测试。压力测试要求以非正常的数量、频率或容量等方式执行系统。
  • 性能测试。性能测试用来测试软件在集成环境中的运行性能。在测试过程中的任何步骤都可以进行性能测试。
    • 部署测试也被称为配置项测试。测试对象是软件配置项。测试目的是检验软件配置项与SRS的一致性。测试的依据是SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。

测试方法

软件测试方法分为静态测试和动态测试

  • 静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测,包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试,包括桌面检查、代码审查、代码走查的方式。使用这种方式能够有效的发现30%-70%的逻辑设计和编码错误
    • 人工检测。人工检测不依靠计算机而是依靠人工审查程序或评审软件,包括代码检查、静态结构分析和代码质量度量等。
    • 计算机辅助静态分析。利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。
  • 动态测试是指通过运行程序发现错误。在对软件产品进行动态测试时可以采用黑盒测试法和白盒测试法
    • 黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。常用的黑盒测试技术有等价类划分、边界值分析、错误准测和因果图等。
    • 白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。白盒测试常用的技术是逻辑覆盖、循环覆盖和基本路径测试

练习题

软件确认测试也称为有效性测试,主要验证()。确认测试计划通常是在需求分析阶段完成的。根据用户的参与程度不同,软件确认测试通常包括()。
A.系统中各个单元模块之间的协作性
B.软件与硬件在实际运行环境中能否有效集成
C.软件功能、性能及其它特性是否与用户需求一致
D.程序模块能否正确实现详细设计说明中的功能、性能和设计约束等要求

A.黑盒测试和白盒测试
B.一次性组装测试和增量式组装测试
C,内部测试、Alpha、Beta和验收测试
D.功能测试、性能测试、用户界面测试和安全性测试

答案C C

测试用例设计

黑盒测试

常用的黑盒测试技术有等价类划分、边界值分析、错误推测和因果图等。

等价类划分

等价类划分:将程序的输入域划分为若干等价类,然后从每个等价类中选取一个代表性数据作为测试用例。

  • 等价类划分有两种不同的情况:有效等价类和无效等价类
    • 有效等价类:满足需求的数据集合。
    • 无效等价类:不满足需求的数据集合。
  • 等价类测试用例的设计原则:
    • 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
    • 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

边界值分析

边界值分析:将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值。也就是选取正好等于、刚好大于、刚好小于边界的值作为测试数据

  • 上点:边界上的点(正好等于)
  • 离点:距离上点最近的点(刚好大于、刚好小于)
  • 内点:范围内的点(区间范围内的数据)

判断输入的数据是否小于-99或者大于99,如果小于-99或大于99给出错误提示
在这里插入图片描述

错误推测

错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方,作为测试用例进行测试。错误推测法的思想是根据经验列举出可能出现问题的清单,根据清单分享问题可能原因,推测发现缺陷。适合的场景:

  • 时间紧任务量大时,根据之前项目类似经验找出易出错的模块重点测试。
  • 时间宽裕通过该方法列出之前出现问题较多的模块再次复测。

因果图

因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法。

白盒测试

白盒测试常用的技术是逻辑覆盖、循环覆盖和基本路径测试

逻辑覆盖

逻辑覆盖:考察用测试数据运行被测程序时对程序逻辑的覆盖程度,主要的逻辑覆盖标准有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖6种

  1. 语句覆盖。是指选择足够的测试数据,使被测试程序中的每条语句至少执行一次。语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。
  2. 判定覆盖是指设计足够的测试用例,使得被测程序中的每个判定表达式条件的真假分支都要覆盖一次,因此判定覆盖也称为分支覆盖。判定覆盖要比语句覆盖更强一些。
  3. 条件覆盖。是指构造一组测试用例,使得每一判定语句中每个逻辑条件的各种可能的值至少满足一次
  4. 判定/条件覆盖。是指设计足够的测试用例,使得判定中每个条件的所有可能取值(真/假)至少出现一次,并使每个判定本身的判定结果(真/假)也至少出现一次。
  5. 条件组合覆盖。是指设计足够的测试用例,使得每个判定中条件的各种可能值的组合都至少出现一次。满足条件组合覆盖的测试用例是一定满足判定覆盖、条件覆盖和判定/条件覆盖的。
  6. 路径覆盖。是指覆盖被测试程序中所有可能的路径。

循环覆盖

循环覆盖:执行足够的测试用例,使得循环中的每个条件都得到验证。

基本路径测试法

基本路径测试法:是在程序控制流图的基础上通过分析控制流图的环路复杂性,导出基本可执行路径集合,从而设计测试用例。设计出的测试用例要保证在测试中程序的每一条独立路径都执行过,即程序中的每条可执行语句至少执行一次。此外,所有条件语句的真值状态和假值状态都测试过。路径测试的起点是程序控制流图。程序控制流图中的结点代表包含一个或多个无分支的语句序列,边代表控制流。

练习题

软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机辅助静态分析的手段对程序进行检测,包括()等方法。
A.边界值分析、逻辑覆盖、基本路径
B.桌面检查、逻辑覆盖、错误推测
C.桌面检查、代码审查、代码走查
D.错误推测、代码审查、基本路径

A.边界值分析、逻辑覆盖基本路径
B.桌面检查、逻辑覆盖、错误推测
C.桌面检查、代码审查、代码走查
D.错误推测、代码审查、基本路径

答案A C

针对月收入小于等于3500元免征个人所得税的需求,现分别输入3499,3500和3501进行测试,则采用的测试方法()
A,判定覆盖
B,边界值分析
C.路径覆盖
D.因果图

答案B

白盒测试技术的各种覆盖方法中,()具有最弱的错误发现能力。
A.判定覆盖
B.语句覆盖
C.条件覆盖
D.路径覆盖

答案B

调试

  • 测试是发现错误,调试是根据测试时所发现的错误找出原因和具体的位置,进行改正
  • 调试需要确定错误的准确位置,确定问题的原因并设法改正;改正后要进行回归测试
    – 调试的方法有:试探法、回溯法、原因排除法(对分查找法、归纳法、演绎法)
    • 试探法:调试人员分析错误的症状,猜测问题所在的位置,利用在程序中设置输出语句,分析寄存器、存储器的内容等手段获得错误的线索,一步步地试探和分析出错误所在。这种方法效率很低,适合于结构比较简单的程序
    • 回溯法:从发现错误症状的位置开始,人工沿着程序的控制流程往回跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序,由于其需要回溯的路径太多而变得不可操作
    • 对分查找法:这种方法主要用来缩小错误的范围。
    • 归纳法:就是从测试所暴瑶的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在。
    • 演绎法:演绎法根据测试结果,列出所有可能的错误原因;分析已有的数据,排除不可能和彼此矛盾的原因;对其余的原因,选择可能性最大的,利用已有的数据完善该假设,使假设更具体:用假设来解释所有的原始测试结果,如果能解释这一切,则假设得以证实,也就找出错误,否则,要么是假设不完备或不成立,要么有多个错误同时存在,需要重新分析,提出新的假设,直到发现错误为止。

软件度量

  • 软件的两种属性:外部属性指面向管理者和用户的属性,可直接测量,一般为性能指标。内部屈性指软件产品本身的压性,如可靠性,只能间接测量
  • McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2.
  • 注意m和n点的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支变(连线)就有一条有向边,每一条语句(语句框)就是一个顶点。

练习题

根据McCabe度量法,以下程序图的复杂性度量值为()。
在这里插入图片描述

A.4
B.5
C.6
D.7

答案A
根据公式V(G)=m-n+2p,其中m、n和p分别表示图G中的弧的个数、顶点的个数和强联通分量数。根据上述公式可得,右图的复杂性为9-7+2=4

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

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

相关文章

浅谈Redis集群架构与主从架构

目录 1. Redis集群1.1 集群概念1.2 集群分片1.3 重新分片 2. 集群的主从模型2.1 主从模型2.2 主节点选举 1. Redis集群 1.1 集群概念 面试官:我看你简历写了Redis集群,你说一说? Redis主从架构和Redis集群架构是两种不同的概念,大…

【Spring成神之路】从源码角度深度刨析Spring循环依赖

文章目录 一、引言二、循环依赖出现的场景2.1 有参构造导致的循环依赖问题2.2 属性注入出现的依赖问题2.3 Spring IOC创建Bean的流程2.4 有参构造为何失败2.5 属性注入为何能成功2.6 AOP导致的循环依赖 三、Spring循环依赖源码刨析四、Spring循环依赖案例刨析 一、引言 循环依…

【MATLAB源码】数学建模基础教程---初步认识数学建模

系列文章目录在最后面,各位同仁感兴趣可以看看! 什么是数学建模 含义1.区分数学模型和数学建模2. 建立数学模型的注意事项3.数学建模流程图解4.数学建模模型分类5.论文常用套路6.最后:总结系列文章目录 含义 所谓数学建模,简言…

Python 中实现聊天客户端库

在 Python 中实现一个简单的聊天客户端库可以通过使用 socket 模块来处理网络通信。我们可以构建一个基于 TCP 的简单聊天系统,其中包括一个服务器和一个客户端。 1、问题背景 假设您正在尝试编写一个 Python 库,用于实现某个聊天协议的客户端。在连接…

c++入门基础(下篇)————引用、inline、nullptr

引用 引用的概念和定义 引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。 类型& 引用别名 引用对象; 就像孙悟空也叫齐天大圣 猪八戒也叫天蓬元帅。…

正点原子imx6ull-mini-Linux驱动之Linux 自带的 LED 灯驱动实验(16)

前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动,Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可,本章我们就来学习如…

Level3答案

突然发现,忘记公布了Level3答案: 1、 (1)heker.h HeiKe.h (2)Make_Text() (3)3 (4)heker.h 2、 (1)ArtText.h Maker_World.h (Maker_Game头文件组) (2)5.0 附加题、 我把标题截了张图! 这是我们 Cookie Maker工作室 新出来的 “无标题技术”…

JavaScript基础——JavaScript数据及数据类型

JavaScript中数据的分类 数据是指设备、浏览器可以识别的内容。在JavaScript中,数据可分为基本数据类型(值数据类型)和引用数据类型。 console.log()函数 浏览器中按下F12或者右击检查,可以打开控制台。 在JavaScript中&#xff0…

微服务通过X-Forwarded-For获取客户端最原始的IP地址

文章目录 引言I 通过转发IP列表获取用户的IP地址II 存储真实IP字段到MDC中2.1 自己存储真实IP字段,方便获取。2.2 feign 传递MDC数据(将MDC中数据传入header)III 处理真实IP(应用)3.1 从MDC获取存储到日志系统中3.2 logback获取MDC数据(IP、追踪码)3.3 打印接口的请求IP引…

教你用python代码写一个中国象棋游戏

编写一个完整的中国象棋游戏是一个复杂的项目,因为它涉及到图形用户界面(GUI)的设计、游戏规则的实现、AI对手的开发等多个方面。不过,我可以提供一个简化的框架和一些基本思路,帮助你开始这个项目。 由于这里不能完整地实现一个图形化的象棋…

三十六、MyBatis-Plus(2)

🌻🌻 目录 一、CRUD 扩展(1)1.1 Insert1.2 主键生成策略1.2.1 源码解释1.2.2 Twitter的snowflake算法 (雪花算法)1.2.3 主键自增:AUTO 我们需要配置主键自增1.2.4 手动输入:INPUT 就需要自己写 id 1.3 Update1.4 自动填…

2024杭电多校第五场

第一题&#xff1a;开关灯 直接暴力找规律。 发现如果n2&#xff08;mod3&#xff09;那么就是2的n-1次方。否则直接是2的n次方。 暴力代码 #include<bits/stdc.h> using namespace std; #define int long longsigned main() {int temp[100];temp[0] 1;for (int i …

SOMEIP_ETS_001:数组长度超过消息长度允许的范围

测试目的&#xff1a; 验证DUT&#xff08;Device Under Test&#xff0c;被测设备&#xff09;在接收到数组长度超过SOME/IP协议允许的最大长度时&#xff0c;是否能够返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个SOME/IP消息时&#xff0c;如果该消息中的数组长…

Java学习:今日成果,明日挑战

阅读指南&#xff1a;[题目] - 精选摘要 题目1.面向对象编程意味着2.以下哪项不是 Java 关键字&#xff1f;3.基础数据类型在堆栈上分配&#xff1f;4.以下代码将导致&#xff1a;5.以下输出是什么 &#xff1f;6.如果我们声明&#xff1a;7.Java 使用按值调用。 以下方法调用传…

S7-1200PLC 和8块欧姆龙温控表MODBUS通信(完整SCL代码)

1、如何提升MODBUS-RTU通信数据的刷新速度 提升MODBUS-RTU通信数据刷新速度的常用方法_modbus rtu通讯慢-CSDN博客文章浏览阅读1.2k次。SMART PLC的MODBUS-RTU通信请参考下面文章链接:【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客MODBU…

MATLAB预测模型(1)

一、前言 在MATLAB中&#xff0c;解决和预测微分方程通常涉及到使用数值方法&#xff0c;因为许多微分方程的解析解是难以找到的。MATLAB提供了多种函数和工具箱来处理这类问题&#xff0c;其中ode45是最常用的一个&#xff0c;用于求解非刚性微分方程的初值问题。 二、实现 以…

Linux中DHCP服务器配置和管理

文章目录 一、DHCP服务1.1、DHCP的工作流程1.2、DHCP的工作模式1.3、dhcp的主要配置文件 二、安装DHCP服务2.1、更新yum源2.2、安装DHCP服务软件包2.3、配置DHCP服务2.4、启用DHCP服务&#xff08;解决报错&#xff09;2.4.1、查看dhcpd服务的状态和最近的日志条目2.4.2、查看与…

代码随想录27天|贪心

455.分发饼干 代码随想录 第一想法 将孩子胃口值g[i] 按从小到达的顺序排列&#xff0c;饼干尺寸也按照从小到大的顺序去排列。 优先将大尺寸喂给大胃口孩子。如果满足不了胃口那么久试着分给下一个孩子。 要尽量满足更多的孩子&#xff0c;那么大尺寸的饼干就不能喂给小胃口…

PMP–知识卡片--燃起图

燃起图用两条曲线分别绘制随时间的推移、完成的工作量和总工作量的变化情况。它不仅能清晰地展示项目进度&#xff0c;还是对团队成员的一种激励形式。 使用燃起图可以更好地了解进度、范围变更和预期完成时间&#xff0c;它为所有相关方提供了更清晰的进度状态。 燃起图根据工…

抖音豆包大模型AI写作教程

简数采集器支持调用字节跳动抖音的豆包AI大模型API接口&#xff0c;用于对采集的数据进行研究分析&#xff0c;内容写作等。 抖音豆包大模型AI写作使用教程&#xff1a; 目录 1.启用豆包AI大模型API功能 2.设置豆包API处理规则 3.应用API规则处理数据 4.获取AI处理结果 1…