黑盒测试方法揭密

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

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

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

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

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

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

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

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

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

  二、黑盒测试的操作步骤

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

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

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

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

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

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

  1.测试计划

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

  2.测试设计

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

  3.测试开发

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

  4.测试执行

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

  5.测试评估

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

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

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

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

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/junzhongxu/archive/2008/07/07/1237296.html

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

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

相关文章

mybatis学习(39):动态sql片段

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

自定义Flume拦截器,并将收集的日志存储到Kafka中(案例)

1.引入POM文件 如果想调用Flume&#xff0c;需要引入flume相关的jar包依赖&#xff0c;jar包依赖如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://…

中国古代十三美男

一、潘安    潘岳&#xff0c;就是人所周知的潘安&#xff0c;西晋时河南人氏&#xff0c;表字安仁&#xff0c;小字檀奴。其人“姿容既好&#xff0c;神情亦佳”。潘岳年轻时&#xff0c;坐车到洛阳城外游玩&#xff0c;当时不少妙龄姑娘见了他&#xff0c;都会怦然心动给他…

名诗

一&#xff0c;《江城子》 苏轼十年生死两茫茫&#xff0c;不思量&#xff0c;自难忘。千里孤坟&#xff0c;无处话凄凉。纵使相逢应不识&#xff0c;尘满面&#xff0c;鬓如霜。夜来幽梦忽还乡&#xff0c;小轩窗&#xff0c;正梳妆。相顾无言&#xff0c;惟有泪千行。料得年年…

mybatis学习(40):逆向工程的创建

目录 首先导入我们的jar包 链接&#xff1a;https://pan.baidu.com/s/1Ent3kAwOagOZLT0XxDLEeA 提取码&#xff1a;zqpu 建立一个com.geyao.generator的包 generator的java类 package com.geyao.generator; import java.io.File; import java.util.*;import org.mybatis.ge…

SpringBoot中Tomcat配置(学习SpringBoot实战)

1、Tomcat配置 Spring Boot默认内嵌的Tomcat为Servlet容器&#xff0c;所以本节只讲对Tomcat配置&#xff0c;其实本节的配置对Tomcat、Jetty和Undertow都是通用的。 1.1 配置Tomcat 关于Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties配…

axios的数据请求方式及跨域

express 的三大功能&#xff1a;静态资源、路由、模板引擎 app.use(express.static(www));  只要是创建这个静态的目录&#xff0c;这个 www 的静态目录里面的文件就可以被访问 数据的请求方式 axios get 的 请求方式    axios.get(url地址).then(function(success){  //…

WIN server 2003 下无法安装adobe cs3 终极解决方法。

WIN server 2003 下无法安装adobe cs3 当试变了网上的方法还是无法解决时&#xff0c;终极解决方法首先在微软下载一个工具ApplicationVerifier 下载地址在&#xff1a;http://www.microsoft.com/downloads/details.aspx?FamilyIDbd02c19c-1250-433c-8c1b-2619bd93b3a2&Di…

mybatis学习(41):使用逆向工程

新建一个项目&#xff0c;将逆向工程的生成的拷贝进来 配置文件 log4j.properties ### \u914D\u7F6E\u6839 ### log4j.rootLogger debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE### \u8BBE\u7F6E\u8F93\u51FAsql\u7684\u7EA7\u522B\uFF0C\u5176…

CentOS 7.2.1511 x64下载地址

CentOS 7.2.1511 x64下载地址 http://kuai.xunlei.com/d/5P9QCQKLGABYmIJW510 #快传关闭&#xff0c;下载链接已经失效 #百度网盘下载 http://pan.baidu.com/s/1jItqJ8y http://pan.baidu.com/s/1kVS08Ph CentOS-7-x86_64-DVD-1511.iso CentOS-7-x86_64-Everything-1…

[Alg] 二叉树的非递归遍历

1. 非递归遍历二叉树算法 (使用stack) 以非递归方式对二叉树进行遍历的算法需要借助一个栈来存放访问过得节点。 (1) 前序遍历 从整棵树的根节点开始&#xff0c;对于任意节点V&#xff0c;访问节点V并将节点V入栈&#xff0c;并判断节点V的左子节点L是否为空。若L不为空&#…

[c++]访MSN浮出窗口的示例

【声明】严格来讲&#xff0c;这篇文章不属于我的原创。我在这里参考了codeproject上的国外作者的模仿MSN浮出窗口的C#代码。换句话说&#xff0c;可以认为我把C#代码翻译成了C代码。另外&#xff0c;为了简化代码&#xff0c;CloseButton我没有采用自己绘制&#xff0c;而是用…

python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib

python 读取文件时报错UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 205: illegal multibyte sequence python读取文件时提示"UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 205: illegal multibyte sequence" 解决办法1. …

mybatis学习(42):mybatis的一级缓存

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

linux的nohup命令的用法。

linux的nohup命令的用法。 在应用Unix/Linux时&#xff0c;我们一般想让某个程序在后台运行&#xff0c;于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台&#xff1a; /usr/local/mysql/bin/mysqld_safe –usermysql &。可是有很多程序并不…

防止ASP.NET按钮多次提交的办法

方法一<asp:Button ID"btnSumbit" runat"server" UseSubmitBehavior"false" OnClientClick"this.valueSumbit;this.disabledtrue; " Text"Sumbit" OnClick"btnSumbit_Click" /> 方法二1<html xmlns"…

mybatis学习(43):一级缓存被刷新情况

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

liunx系统不能登陆的问题

第一装这系统&#xff0c;啥都不懂&#xff0c;设置了密码&#xff0c;好不容易安装完成&#xff0c;竟然不能登陆 有很多人怀疑用户名不是 root&#xff0c; 其实问题是在分配的user 文件夹的空间不足导致的 我在第一次给了3.2G给他&#xff0c;后来我没有自定义了&#xff0c…

提取字典的子集

有时候&#xff0c;需要根据已知的字典对象构造一个新的字典对象。这种场景可以使用字典生成式(dictionary comprehension)。如下&#xff1a; prices {ACME: 45.23,AAPL: 612.78,IBM: 205.55,HPQ: 37.20,FB: 10.75 }# Make a dictionary of all prices over 200 p1 {key: va…

python文件读写小结

读文件 打开一个文件用open()方法(open()返回一个文件对象&#xff0c;它是可迭代的)&#xff1a; >>> f open(test.txt, r) r表示是文本文件&#xff0c;rb是二进制文件。&#xff08;这个mode参数默认值就是r&#xff09; 如果文件不存在&#xff0c;open()函数就会…