二、模型驱动测试设计

如果能够提升抽象层级,测试设计师会更加有效和有效率。
完全改正软件是不可能到达的,其原因是可以以形式化的方式来表述的而且是富有哲理的。聪明的软件工程师不再追求软件的完全正确,而是试着评判软件的行为来决定其是否为可接受的。**包括可靠性、安全性、可维护性、安保性、还有效率。**这比验证软件是正确的要复杂的多。
模型驱动测试设计 MDTD过程把测试分成一系列的小任务,从而简化测试用例的生成。然后测试设计师在高层次的抽象等级上使用数学化的工程结构来设计测试用例,这样做可以独立于软件内部细节、独立于设计所基于的软件工件、也独立于测试自动化和测试执行。
MDTD中需要思考的关键一步是设计测试用例,测试用例设计是能否成功发现软件失败的决定性因素。我们可以使用一种基于人工的方法来设计测试用例,测试工程师使用软件应用领域的专业知识还有他们的经验来设计有效的能找到软件故障的测试用例。还有另一种方法就是使之满足具有明确定义的工程目标,比如覆盖准则。

2.1 软件测试基础

一个最重要的事实之一是,测试只能说明失败的存在,而不能说明已经找到了所有失败,这是基础理论上的限制。 具体来说,找到程序里的所有失败是一个不可判定的问题,测试者通常认为如果一个测试用例运行失败,那么这个测试用例就是成功的。
前面关于故障和失败的定义让我们发展出了可达性,影响,传播和揭示性模型(RIPR),首先区分一下测试和调试。
测试: 通过观察软件的执行以评估软件。
测试失败: 执行一个测试用例后给出软件失败的结果。
调试: 在软件失败的前提下找故障的过程。
这里的核心问题是给定一个故障,不是所有的输入都能够触发那个故障,从而导致不正确额输出。同样,将观察到的失败和软件内部对应的故障相关联也是非常困难的。从对这些问题的分析引导出了故障/失败模型。这四个条件一起被称为 故障/失败模型,或是RIPR模型 。也就是 测试 到达 有故障的程序位置影响 不正确的程序状态传播到 程序最终状态不正确的部分

2.2 软件测试活动

测试工程师是一名信息技术的专业人士,他负责一项或多项技术性的测试活动,包括设计测试输入、生成测试用例、执行测试脚本、分析测试结果、向开发人员和上级经理汇报结果。
测试经理管理一名或多名测试工程师,测试经理制定测试规章和进程与项目中别的经理进行交流,除此之外,还要帮助组内工程师有效地有效率的测试软件。
测试工程师最强有力的工具是形式化的覆盖准则。使用形式化的覆盖准则可以决定使用什么样的测试输入更有可能找到程序中的问题,这也就更好地保证了软件的质量及其可靠性。覆盖准则还为工程师提供了测试停止原则。

2.3 基于软件活动的测试级别

测试用例可以来自需求,规范,设计工件或是源代码。在传统的教科书中,不同的测试层级伴随着不同的软件开发活动。
验收测试: 根据需求和用户需要来评估软件。
系统测试: 根据体系结构的设计和系统整体的行为来评估软件。
集成测试: 根据子系统的设计来评估软件。
模块测试: 根据详细设计来评估软件。
单元测试: 根据代码实现来评估软件。
在这里插入图片描述
上图是v字模型,展示测试等级的一种典型划分,以及这些测试等级是如何分别和软件开发活动一一对应。每个测试等级的信息通常由相对应的软件开发活动推导出来。即使软件在代码实现之前都是不可执行的,这里也强烈建议设计测试用例应与相对应的软件开发活动对应。因为及早发现缺陷是降低成本的最好方式。
1、软件开发过程中的需求分析阶段需要抓住客户的需求。设计验收测试是检验全部完成软件是否在实际上满足这些要求。
2、软件开发过程中的体系结构设计阶段负责选取组件和用于组件间通信的连接器,二者结合起来完成系统的实现以保证系统的规范满足之前所确定的需求。系统测试是为了确认集成后的系统是否满足其规范。
3、软件开发过程中的子系统设计阶段指定了各个子系统的结构和行为,每个子系统负责整体体系结构中的一些功能,子系统通常会在以前软件的基础上继续开发。设计集成测试是为了评估子系统模块之间的接口是否一致,以及通信是否正确,其前提就是各个模块之间工作正常。
4、软件开发过程中详细设计阶段决定着单独模块的结构和行为,一个模块是相关单元的集合,这些集合组成一个文件,包,或是类。设计模块测试是为了单独评估各个独立的模块,包括单元之间的交互还有单元和相关数据结构之间的交互。又因为经常由开发人员负责的,通常又被称为开发人员测试。
5、软件开发过程中的实现阶段的内容就是生成代码。一个程序单元或一个过程是由一个或多个连续的语句外加一个名字构成的。单元测试是最低等级的测试,其目的是评估实现阶段产生的单元。

前面没有提到回归测试,这是软件开发过程维护阶段中必不可少的。当更新软件时,执行回归测试来确保软件更新后和更新前保持相同的功能。
虽然大多数文献强调什么时候应用这些测试级别,但更重要的区别是不同测试级别所能检测到的故障类型。故障存在于待测的软件工件中,而能否找到故障取决于推到出测试用例的软件工件。

面向对象的软件改变着测试层级,面向对象的软件使得单元和模块的界限变得模糊,随意面向对象软件的测试研究发展出了上述测试等级的一些变种。
方法内测试评估单个的方法,方法间测试评估的是一个类的一组方法,类间测试检测的是一个完整的类。通常是一个类中一系列方法调用。最后类间测试同时检测多个类。前2个是单元测试和模块测试的变种,而类间测试时集成测试的一种。

2.4 覆盖准则

测试的核心问题是数字,甚至一个很小的程序都会由非常多的输入,所以无论是做什么测试,我们都不可能用所有可能的输入值来进行测试。从任何一个实用的角度来说,输入空间都是无限的。使用覆盖准则让我们以结构化和实用化的方法来搜索输入空间。满足一个覆盖准则能在两个关键目标上给予测试者一定的信心:
1、已经检查了输入空间的很多角落
2、测试用例之间只有很小的重叠。
覆盖准则在提高质量和减少测试数据生成成本方面有很大的优势,覆盖准则能够最大化投入产出,即用更少的测试用例来有效的找出更多的故障。

2.5 模型驱动测试设计

开发测试用例的工作可以划分成四个不相重叠的步骤:测试设计,测试自动化,测试执行和测试评估。

测试设计
测试设计是一个生成输入值以有效的测试软件的过程,实际上工程师通过两种通用的方法来设计测试用例。
在基于准则和测试设计中,要求测试值满足工程上的目标,比如覆盖准则。
在基于人工的测试设计中,我们基于程序应用领域的专业知识和对测试的人为理解来设计测试值。

测试自动化
测试设计的最终结果是软件的测试输入值。测试自动化是把测试值加载到可执行脚本中的过程。注意支持测试设计的自动化工具不被认为是测试自动化。测试自动化对有效和高频率地执行测试用例是很有必要的。

测试执行
测试执行是在软件上运行测试用例并记录测试结果的过程。这只需要测试者具备基本的计算机技术。

测试评估
测试评估是评价测试结果然后汇报给开发者的过程。实际上这个比看起来要难得多。

测试者和抽象
前面四个任务关注设计、实现和执行测试用例。这样的分类忽略了一些重要的任务,比如测试管理,维护和文档。MDTD让测试设计师提升了抽象的级别,以至于只需要很少的测试者就可以完成设计和开发测试用例中数学应用的部分。在测试设计创建之后,传统的测试者和开发者完成他们的任务:生成测试值、自动化测试用例、执行和评估测试用例。

2.6 MDTD为什么重要

MDTD代表的软件测试含义,是测试准测的定义和应用是独立与测试级别(单元、集成、系统和其他级别的)。
将测试设计和测试用例构建与执行分离开的好处。
第一、在多个方面测试活动。
第二、同时将这些活动组合成一个有效率的过程。

故障与失败和测试与调试的联系是:

故障一般不是测试到的,而且发生故障一定是某个最根本的功能首先失败,然后引发后续反应。而失败专指某一次目标未达成的情况。测试的目的是在不知道有问题存在的情况下来寻找和发现问题,而调试是在已经知道问题存在的情况下来定位问题根源

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

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

相关文章

人工智能的优势:使用 GPT 和扩散模型生成图像

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 世界被人工智能 (AI) 所吸引,尤其是自然语言处理 (NLP) 和生成 AI 的最新进展,这是有充分理由的。这些突破性技术有可能提高各种任务的日常生产力。…

C++之生成key-value键值三种方式(一百九十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

将目标检测项目移植到linux上出现OSERROR

在windows上运行项目正常,但是在centos9上运行出现找到资源,第一次遇到这个问题,通过代码回找,一步一步发现,读取数据没问题,但是在预测的时候无法读取,查到的资料 说明显示字体问题&#xff0c…

IIR滤波器

IIR滤波器原理 IIR的特点是:非线性相位、消耗资源少。 IIR滤波器的系统函数与差分方程如下所示: 由差分方程可知IIR滤波器存在反馈,因此在FPGA设计时要考虑到有限字长效应带来的影响。差分方程中包括两个部分:输入信号x(n)的M节…

uniapp对接支付宝出现的问题

支付逻辑没问题却出现商家订单参数异常,请重新发起付款 检查发现后端传回来根本没什么问题,检查很久发现需要下载证书放在服务器上 小程序文档 - 支付宝文档中心

谷歌收录网页最快需要多久?

答案是:谷歌收录网页最快是24小时内。 当我们建立新的网站或者为现有网站添加新内容时,都希望这些内容能够尽快被谷歌收录。 但实际上,谷歌的收录时间可能会因各种因素而异。 这篇文章将为您详解相关的知识点。 网站收录的基本过程 如何…

Centos7离线安装ALISQL5.6.32-8

由于公司设备对数据需要大量的读取和查询,开始使用的mysql8,但是未优化的mysql插入和查询及其缓慢,因此我与同事分开研究,优化方案。我负责寻找可替代高效的数据库,然后问同学,发现alisql性能不错&#xff…

软件工程概述

软件工程概述 软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产效率、提高软件质量、降低软件成本。 1. 计算机软件 计算机软件指的是计算机系统中的程序及其文档。程序是计算任务的…

测试阶段之冒烟测试

冒烟测试 一般建议1-2个小时完成冒烟测试。 注意冒烟用例不是P1P2,而是其中的部分用例

redis集群架构详解

一、集群架构搭建 1、配置 在一台机器上模拟多台机器搭建redis集群,一个集群代表一台物理机 集群1路径: /usr/local/redis/redis-cluster/cluster1/9001/redis.conf/usr/local/redis/redis-cluster/cluster1/9004/redis.conf/usr/local/redis/redis-…

qt使用QCustomplot绘制cpu和内存使用率图

一、QCustomPlot介绍 QCustomPlot是一个开源的Qt C图表库,用于可视化数据。该库提供了多种类型的可定制的图表,包括散点图、线图、柱状图和等高线图等。它还支持自定义绘制,可以创建任意形状和大小的元素,并使其与其他元素交互。Q…

2023年高教社杯数学建模国赛 赛题浅析

2023年国赛如期而至,为了方便大家尽快确定选题,这里将对赛题进行浅析,以分析赛题的主要难点、出题思路以及选择之后可能遇到的难点进行说明,方便大家尽快确定选题。 难度排序 B>A>C 选题人数 C>A>B (预估结果&…

matlab 计算点云中值

目录 一、概述1、算法概述2、主要函数二、代码示例三、结果展示四、参数解析输入参数输出参数五、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述

网络编程套接字 | UDP套接字

前面的文章中我们叙述了网络编程套接字的一些预备知识点,从本文开始我们就将开始UDP套接字的编写。本文中的服务端与客户端都是在阿里云的云服务器进行编写与测试的。 udp_v1 在v1的版本中我们先来使用一下前面讲过得一些接口,简单的构建一个udp服务器…

HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(一)连续识别

组合手势由多种单一手势组合而成,通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型,支持连续识别、并行识别和互斥识别三种类型。 .GestureGroup(mode:GestureMode, …gesture:GestureType[]) mode:必选参数,为G…

MP中的字段还可以利用函数来查询拼接sql

//根据value查询GetMapping("getTest")public List<HashMap> getTest() {QueryWrapper<TTest> queryWrapper new QueryWrapper<>();queryWrapper.eq("substr(name,1,2)","99999");List<TTest> list1 testService.list…

【网络通信 -- WebRTC】Open WebRTC Toolkit 环境搭建指南

【网络通信 -- WebRTC】Open WebRTC Toolkit -- OWT-Server 编译安装指南 【1】OWT Server 与 Web Demo 视频会议环境搭建 【1.1】编译 OWT Server 安装依赖 ./scripts/installDepsUnattended.sh编译 scripts/build.js -t all --check 注意若不支持硬件加速则采用如下命令 s…

[CISCN 2019华北Day1]Web1

文章目录 涉及知识点解题过程 涉及知识点 phar反序列化文件读取 解题过程 打开题目&#xff0c;注册用户为admin 进去发现有文件上传的功能&#xff0c;我们随便上传个图片 然后就有下载和删除两个功能 我们尝试抓包下载文件的功能 发现参数可控&#xff0c;我们尝试读取一下…

Navicat15工具连接PostgreSQL15失败

1.错误现象及原因 错误现象&#xff1a; 错误原因&#xff1a; postgresql 15版本中 pg_database 系统表把 datlastsysoid 列删除了&#xff0c;所以造成了此错误。 2.解决方法 &#xff08;1&#xff09;将Navicat工具更新到官网最新版本。 &#xff08;2&#xff09;更换…

划片机实现装片、对准、切割、清洗到卸片的自动化操作

划片机是一种用于切割和分离材料的设备&#xff0c;通常用于光学和医疗、IC、QFN、DFN、半导体集成电路、GPP/LED氮化镓等芯片分立器件、LED封装、光通讯器件、声表器件、MEMS等行业。划片机可以实现从装片、对准、切割、清洗到卸片的自动化操作。 以下是划片机实现这些操作的步…