选择黑盒测试用例设计方法的综合策略方案总结

前言

具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。这些方法都是比较实用的,但在具体工作中要采用什么方法,需要针对项目的特点加以适当的选择。在实际高水平的测试中,往往需要综合使用各种方法以有效地提高测试效率和测试覆盖度。

以下介绍的是各种测试用例设计方法选择的综合策略,供大家参考。

(1)首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。

(2)在任何情况下,都必须使用边界值分析法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。

(3)可以使用错误推测法追加一些测试用例,这需要依靠测试工程师的智慧和经验。

(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。

(5)如果程序的功能说明中含有输入条件的组合情况,则一开始就可以选用因果图法和判定表驱动法。

(6)对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。

(7)利用功能图法,我们可以通过不同时期条件的有效性设计不同的测试数据。

(8)对于业务流程清晰的系统,可以利用场景法贯穿整个测试案例设计过程,在案例中综合使用各种测试方法。

黑盒测试方法揭密

一、黑盒测试在快速应用开发(rad)环境中的重要作用

软件测试方法一般分为两种:白盒测试与黑盒测试。其中,白盒测试又称为结构测试、逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,通常不关心功能与性能指标。黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,实际上是站在最终用户的立场上,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需求的规定。

随着rad环境的发展,软件工程面临新的挑战,其中包括

  ●应用系统的规模越来越庞大,结构越来越复杂;

  ●开发团队人员越来越多,分工越来越细;

  ●项目投资日益提高,导致投资风险增大。

在这样一种背景下,软件质量面临着更大的危机,而解决问题的关键正是黑盒测试,可是由于传统的黑盒测试往往局限于手工测试,凭借工程人员的经验自发地进行,缺乏严格的测试管理机制,因而效果并不明显。

在分发一个应用系统之前,若没有经过科学、周密的黑盒测试,就相当于将大量隐含的缺陷(defect)交付到最终用户手中,这对于开发团队自身、项目投资方及最终用户来说都是不负责任的表现,也将严重损害三方的利益。

今天,软件的质量要求越来越受到重视,在对软件的质量监督中,黑盒测试起着重要的、不可替代的作用;而随着软件开发平台及软件设计思想的进步和发展,特别是rad技术的发展,对黑盒测试提出了更明确的要求,人们发现,必须遵循一定的测试理论,依赖于优秀的测试工具,才能进行科学、完备的测试。

二、黑盒测试的操作步骤

在传统的软件开发生命周期当中,测试工作往往被搁置到整个开发过程的后期进行,也就是说,当应用程序的编码工作已经基本完成,才开始进行测试,这样做的缺点在于:

a)由于应用程序庞大而复杂,测试工作千头万绪,测试人员难以组织科学、全面的测试用例,从而大幅度提高了测试成本,并严重影响测试的全面性和有效性;

b)由于缺陷所涉及的模块从开发到测试之间的时间间隔较长,使得程序员的修改和维护工作要付出更大的代价;

c)由于受到分发日期的限制,测试工作往往是在忙碌中结束的,而将大量的缺陷遗留给最终用户,也就是说,真正的测试工作实际上是由最终用户来完成的。

因此,为了保证测试工作科学、精确、全面、有序地进行,应该采取一边开发一边测试的策略,使得开发工作与测试工作平行进行,这也就是俗话所说的“越早测试越好”的概念。

一套完整的测试应该由五个阶段组成:

1.测试计划

首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。

2.测试设计

将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响到测试结果的有效性)。

3.测试开发

建立可重复使用的自动测试过程。

4.测试执行

执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。

5.测试评估

结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。

显然,黑盒测试只有严格按照步骤进行,才可能对应用程序的质量进行把关。然而,如果没有一种优秀的测试工具的帮助,单纯凭借手工测试,不但将耗费大量的人力、物力和财力,而且有很多测试工作是难以实现甚至是无法实现的。

三、手工测试与自动测试的比较

手工测试无法保证黑盒测试的科学性与严密性,这是因为:

 ●测试人员要负责大量文档、报表的制订和整理工作,会变得力不从心;

  ●受软件分发日期、开发成本及人员、资源等诸多方面因素的限制,难以进行全面的测试;

  ●如果修正缺陷所花费的时间相当长,回归测试将变得异常困难;

  ●对测试过程中发现的大量缺陷缺乏科学、有效的管理手段,责任变得含混不清,没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率;

  ●反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一,测试花费的时间越长,测试的严格性也就越低;

  ●难以对不可视对象或对象的不可视属性进行测试。

  因此,自动测试成为最佳的解决方案。所谓自动测试,实际上是将大量的重复性工作交给计算机去完成,一个优秀的自动测试工具,不但可以满足科学测试的基本要求,而且可以节约大量的时间、成本、人员和资源,并且测试脚本可以被重复利用(包括被不同的项目所利用)。

  另注:黑盒方面的自动化测试工具:

WinRunner,LoadRunner,Rational Robot,SilkTest,SilkPerformer等等。工具用下来觉得功能测试用Quick Test Pro,性能测试用Load Runner最好.

● 计算机的用途不同,对其部件的性能指标要求也有所不同。以科学计算为主的计算机,对(1) 要求较高,而且应该重点考虑 (2) 。

(1)A.外存储器的读写速度 B.主机的运算速度

C. I/O设备的速度 D.显示分辨率

(2)A. CPU的主频和字长,以及内存容量

B.硬盘读写速度和字长

C. CPU的主频和显示分辨率

D.硬盘读写速度和显示分辨率

●(3是指按内容访问的存储器。

(3)A.虚拟存储器 B.相联存储器

C.高速缓存(Cache) D.随机访问存储器

● 处理机主要由处理器、存储器和总线组成,总线包括 (4) 。

(4)A.数据总线、地址总线、控制总线 B.并行总线、串行总线、逻辑总线

C.单工总线、双工总线、外部总线 D.逻辑总线、物理总线、内部总线

下面关于加密的说法中,错误的是 (5) 。

A. 数据加密的目的是保护数据的机密性

B.加密过程是利用密钥和加密算法将明文转换成密文的过程

C.选择密钥和加密算法的原则是保证密文不可能被破解

D.加密技术通常分为非对称加密技术和对称密钥加密技术

● 下面关于防火墙功能的说法中,不正确的是(6) 。

(6)A.防火墙能有效防范病毒的入侵

B.防火墙能控制对特殊站点的访问

C.防火墙能对进出的数据包进行过滤

D.防火墙能对部分网络攻击行为进行检测和报警

● 下面关于漏洞扫描系统的叙述,错误的是 (7) 。

(7)A.漏洞扫描系统是一种自动检测目标主机安全弱点的程序

B.黑客利用漏洞扫描系统可以发现目标主机的安全漏洞

C.漏洞扫描系统可以用于发现网络入侵者

D.漏洞扫描系统的实现依赖于系统漏洞库的完善

● 软件工程每一个阶段结束前,应该着重对可维护性进行复审。在系统设计阶段的复审期间,应该从 (8)出发,评价软件的结构和过程。

(8)A.指出可移植性问题以及可能影响软件维护的系统界面

B.容易修改、模块化和功能独立的目的

C.强调编码风格和内部说明文档

D.可测试性

● 计算机感染特洛伊木马后的典型现象是 (9) 。

(9)A.程序异常退出 B.有未知程序试图建立网络连接

C.邮箱被垃圾邮件填满 D. Windows系统黑屏

● 关于软件著作权产生的时间,下面表述正确的是 (10) 。

(10)A.自作品首次公开发表时

B.自作者有创作意图时

C.自作品得到国家著作权行政管理部门认可时

D.自作品完成创作之日

● 程序员甲与同事乙在乙家探讨甲近期编写的程序,甲表示对该程序极不满意,说要弃之重写,并将程序手稿扔到乙家垃圾筒。后来乙将甲这一程序稍加修改,并署乙名发表。以下说法正确的是(11) 。

(11)A.乙的行为侵犯了甲的软件著作权

B.乙的行为没有侵犯甲的软件著作权,因为甲已将程序手稿丢弃

C.乙的行为没有侵犯甲的著作权,因为乙已将程序修改

D.甲没有发表该程序并弃之,而乙将程序修改后发表,故乙应享有著作权

● 零件关系P(零件名,条形码,供应商,产地,价格)中的 (12) 属性可以作为该关系的主键。查询产于西安且名称为“P2”的零件,结果以零件名、供应商及零件价格分列表示,对应的SQL语句为:

SELECT零件名,供应商,价格

FROM P

WHERE零件名='P2' AND (13);

(12)A.零件名 B.条形码 C.产地 D.供应商

(13)A.条形码=西安 B.条形码='西安'

C.产地=西安 D.产地='西安'

● 软件风险一般包含 (14) 两个特性。

(14)A.救火和危机管理 B.已知风险和未知风险

C.不确定性和损失 D.员工和预算

● 在采用面向对象技术构建软件系统时,很多敏捷方法都建议的一种重要的设计活动是 (15),它是一种重新组织的技术,可以简化构件的设计而无需改变其功能或行为。

(15)A.精化 B.设计类 C.重构 D.抽象

● 一个软件开发过程描述了“谁做” 、 “做什么” 、 “怎么做”和“什么时候做” ,RUP用(16) 来表述“谁做” 。

(16)A.角色 B.活动 C.制品 D.工作流

● 瀑布模型表达了一种系统的、顺序的软件开发方法。以下关于瀑布模型的叙述中,正确的是 (17)。

(17)A.瀑布模型能够非常快速地开发大规模软件项目

B.只有很大的开发团队才使用瀑布模型

C.瀑布模型已不再适合于现今的软件开发环境

D.瀑布模型适用于软件需求确定,开发过程能够采用线性方式完成的项目

● 一个软件系统的生存周期包含可行性分析和项目开发计划、需求分析、设计(概要设计和详细设计)、编码、测试和维护等活动,其中 (18) 是软件工程的技术核心,其任务是确定如何实现软件系统。

(18)A.可行性分析和项目开发计划 B.需求分析

C.设计 D.编码

● 程序中常采用变量表示数据,变量具有名、地址、值、作用域、生存期等属性。关于变量的叙述, (19)是错误的。

(19)A.根据作用域规则,在函数中定义的变量只能在函数中引用

B.在函数中定义的变量,其生存期为整个程序执行期间

C.在函数中定义的变量不能与其所在函数的形参同名

D.在函数中定义的变量,其存储单元在内存的栈区

● 函数调用时,基本的参数传递方式有传值与传地址两种, (20) 。

(20)A.在传值方式下,形参将值传给实参

B.在传值方式下,实参不能是数组元素

C.在传地址方式下,形参和实参间可以实现数据的双向传递

D.在传地址方式下,实参可以是任意的变量和表达式

● 已知某高级语言源程序A经编译后得到机器C上的目标程序B,则 (21) 。

(21)A.对B进行反编译,一般不能还原出源程序A

B.对B进行反汇编,不能得到与源程序A等价的汇编程序代码

C.对B进行反编译,得到的是源程序A的变量声明和算法流程

D.对A和B进行交叉编译,可以产生在机器C上运行的动态链接库

● 下面关于程序语言的叙述,错误的是 (22) 。

(22)A.脚本语言属于动态语言,其程序结构可以在运行中改变

B.脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序

C. php、JavaScript属于静态语言,其所有成分可在编译时确定

D. C语言属于静态语言,其所有成分可在编译时确定

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

在 Windows 桌面的redis中远程连接到 VMware 中运行的 Linux 上的 Redis

先修改一下docker容器中的redis(一会连上之后看效果) 我使用的是VMware的虚拟机 选择的网络设置为桥接模式 查到虚拟机独立的ip是如下 允许 Linux 虚拟机上的 Redis 监听外部连接: 打开 Linux 虚拟机上的 Redis 配置文件。在大多数系统上,配置文件位于…

java设计模式学习之【桥接模式】

文章目录 引言桥接模式简介定义与用途:实现方式 使用场景优势与劣势桥接模式在Spring中的应用绘图示例代码地址 引言 想象你正在开发一个图形界面应用程序,需要支持多种不同的窗口操作系统。如果每个系统都需要写一套代码,那将是多么繁琐&am…

Pytorch进阶教学——训练一个图像分类模型(GPU)

目录 1、前言 2、数据集介绍 3、获取数据 4、创建网络 5、训练模型 6、测试模型 6.1、测试整个模型准确率 6.2、测试单张图片 1、前言 编写一个可以分类蚂蚁和蜜蜂图片的模型,使用数据集对卷积神经网络进行训练。训练后的模型可以对蚂蚁或蜜蜂的图片进行…

添加cpack install功能

修改最外层的CMakeLists.txt, 添加几行代码: # If GNUInstallDirs is not included, CMAKE_INSTALL_BINDIR is empty. include(GNUInstallDirs)# it must go before project in order to work set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}" CACHE …

Android平板还能编程?Ubuntu本地安装code-server远程编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

Vector Quantized Diffusion Model for Text-to-Image Synthesis

Vector Quantized Diffusion Model for Text-to-Image Synthesis Shuyang Gu, University of Science and Technology of China, Microsoft, CVPR2022, Cited: 340, Code, Paper 1. 前言 我们提出了用于文本到图像生成的矢量量化扩散(Vector Quantized Diffusion Model&…

5G入门到精通 - 5G的十大关键技术

文章目录 一、网络切片二、自组织网络三、D2D技术四、低时延技术五、MIMO技术六、毫米波七、内容分发网络八、M2M技术九、频谱共享十、信息中心网络 一、网络切片 5G中的网络切片是一项关键技术,它允许将整个5G网络分割成多个独立的虚拟网络,每个虚拟网络…

vue2+typescript使用高德地图2.0版本

高德地图 webjs api 2.0官网教程 AMap.Driving使用说明 <div class"mmp"><div id"map" ref"mapcontainer"></div></div><script lang"ts"> //安全密钥 window._AMapSecurityConfig{securityJsCode: &qu…

添加新公司代码的配置步骤-Part1

原文地址&#xff1a;配置公司代码 概述 我们生活在一个充满活力的时代&#xff0c;公司经常买卖子公司。对于已经使用 SAP 的公司来说&#xff0c;增加收购就成为一个项目。我开发了一个电子表格&#xff0c;其中包含向您的结构添加新公司代码所需的所有配置更改。当然&…

Linux安全配置

进入ssh配置文件 vim /etc/ssh/sshd_config将port 22中的端口号改为5001 重启ssh服务 systemctl restart sshd拓展 sh与bash iptable与firewall ssh与sshd vps与ssh 参考&#xff1a; 【安全-SSH】SSH安全设置 - CSDN AppLinux VPS服务器SSH端口一键修改脚本​Linux脚本…

「Swift」取消UITableView起始位置在状态栏下方开始

前言&#xff1a;在写页面UI时发现&#xff0c;当隐藏了NavigationBar时&#xff0c;即使UITableView是从(0,0)进行布局&#xff0c;也会一直在手机状态栏下方进行展示布局&#xff0c;而我的想法是希望UITableView可以从状态栏处就进行展示布局 当前页面展示&#xff1a; 问题…

java设计模式学习之【装饰器模式】

文章目录 引言装饰器模式简介定义与用途实现方式 使用场景优势与劣势装饰器模式在Spring中的应用画图示例代码地址 引言 在日常生活中&#xff0c;我们常常对基本事物添加额外的装饰以增强其功能或美观。例如&#xff0c;给手机加一个保护壳来提升其防护能力&#xff0c;或者在…

JAVA网络编程——BIO、NIO、AIO深度解析

I/O 一直是很多Java同学难以理解的一个知识点&#xff0c;这篇帖子将会从底层原理上带你理解I/O&#xff0c;让你看清I/O相关问题的本质。 1、I/O的概念 I/O 的全称是Input/Output。虽常谈及I/O&#xff0c;但想必你也一时不能给出一个完整的定义。搜索了谷哥欠&#xff0c;发…

【UE5】使用场系统炸毁一堵墙

效果 步骤 1. 新建一个空白项目 2. 新建一个Basic关卡&#xff0c;然后添加一个第三人称游戏和初学者内容包到内容浏览器 3. 在场景中添加一堵墙 4. 选项模式选择“破裂” 点击新建 新建一个文件夹用于存储几何体集 点击“统一” 最小和最大Voronoi点数都设置为100 点击“破…

c++11计时器chrono库

去实现一下开始说的高精度计时器&#xff1a; #ifndef _TimerClock_hpp_ #define _TimerClock_hpp_#include <iostream> #include <chrono>using namespace std; using namespace std::chrono;class TimerClock { public:TimerClock(){update();}~TimerClock(){}v…

C语言指针详解上

1 野指针 int main01(){//野指针就是没有初始化的指针,指针的指向是随机的,不可以 操作野指针//int a 0;//指针p保存的地址一定是定义过的(向系统申请过的)int *p;//野指针*p 200;printf("%d\n",*p);system("pause");return 0;}2 空指针 空指针的作用…

力扣78. 子集(java 回溯解法)

Problem: 78. 子集 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们易知&#xff0c;本题目涉及到对元素的穷举&#xff0c;即我们可以使用回溯来实现。对于本题目我们应该较为注重回溯中的决策阶段&#xff1a; 由于涉及到对数组中元素的穷举&#xff0c;即在每…

Java网络编程 *TCP与UDP协议*

网络编程 什么是计算机网络? 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统 简单来说就是把不同地区的计算机通过设备连接起来,实现不同地区之前的数据传输 网络编程是干什么的? 网络…

Docker快速理解及简介

docker快速理解及简介 1.Docker为什么出现&#xff1f; 迁移一个项目时&#xff0c;运行文档、配置环境、运行环境、运行依赖包、操作系统发行版、内核等都需要重新安装配置&#xff0c;比较麻烦。 2.Docker是什么&#xff1f; Docker是基于Go语言实现的云开源项目。解决了运行…