简单生活
努力工作 努力赚钱 努力开心 春夏秋冬眠通通不觉晓 牺牲=睡觉 安慰只会让彼此更累 坚强是一种自我保护 坚强是一种伪装 坚强是一种无奈
 
      摘要:随着软件程序量和复杂度在不停地增加,软件测试工作显得越加艰巨,现在无论怎样强调软件测试对软件质量的影响都不为过分。本文抛开具体的测试细节,提出要确立软件质量保证的观念,对软件内部测试的主要方法和它与软件质量的关系进行了分析,并对采用自动化工具进行测试进行了简要分析,最后介绍一种自动测试工具TestWorks。
关键词:软件内部测试 软件质量保证 自动测试工具
人们经常苦恼于软件产品中存在的质量问题,但又不得不花费精力和时间去一个一个地解决,接着是永无止境的贴打补丁或者干脆升级,甚至有时则停止使用这种软件而采用另外的软件,重新学习新软件的使用方法,给用户带来了许多麻烦。实际上诸多问题的原因,在很大程度上由于开发软件的过程中,缺乏高强度的内部测试,仅仅自己稍加测试,觉得差不多就立即形成一个版本,或者有些测试根本就没有进行,就立即交付使用,结果用户一使用就出错,所以推出的软件质量难以保证。重开发,轻测试是目前我国软件行业内的存在的问题之一。
一、确立软件质量保证的观念
软件质量保证(Quality Assure)贯穿于整个软件的开发过程,监督并改善软件的开发,以确保遵循统一标准和程序,保证问题被发现并被解决,它主要侧重于“预防”。
软件质量的管理为何难以保证?软件质量侧重于应用产品是否满足用户需求,其质量的提高依赖于精心设计、良好的软件开发过程和高强度的测试。解决软件中存在的问题是一个能见度高的进程,而防止软件中存在的问题能见度却很低。这可以用我国古代的一个寓言来形容:
古时候,有一从医世家,其中有一个很著名的医生,在一个大地主的家中作随身医师,有人问他们的家中谁的医技最高。他回答到:
我用那些烈性药去治疗那些垂死挣扎的病人,偶尔有人治愈了,所以地主们都知道了我;
我的二哥治病一般都是疾病有发作的迹象时就开始了,它的医技在当地的农夫和邻居中很出名;
我的大哥能够感觉到疾病的存在,往往在它发作之前就根除了,他的名字除了我们家的人谁也不知道。
所以,确立起软件质量保证的观念,将质量保证切实贯穿于软件开发的整个过程中,对排除隐患,提高软件的质量有着重要的意义。保证软件质量的一条重要途径就是高
Page 1
软件测试的方法与工具
强度的软件测试,通过测试,发现错误,并将错误反馈给调试员,使软件错误得到纠正。Windows 3.1的β测试员有15000人,而Windows NT 3.0的测试人员有75000人,到了1994年6月的Windows 95的β-1版本的β测试员的人数达到150000人。
二、软件内部测试的主要方法
软件BUG的存在迫使人们进行软件测试。软件测试实质上是为了发现程序中的错误而执行程序的过程。软件的内部测试狭义的概念是由软件开发部门自我组织的,在部门内部进行的软件测试;而广义上的软件的内部测试是指在向用户发布正式版本之前进行的软件测试。这个过程通常由单元测试,集成测试(系统测试)、验收测试、平行运行测试构成,通常需要设计完整的测试方案。本文不对软件的内部测试作严格定义。测试过程和过程中的参与对象由下图所示:
模块测试
子系统测试
系统测试
α测试
平行运行测试
程序员
程序员或测试员
测试员
测试员
终端用户
用户+测试员
β测试
图 软件内部测试过程
在设计完整的测试方案之后,每一步的测试都需要对结果进行分析,及早发现问题并纠正差错,如有可能,应尽量使测试题目小型化,尽可能地覆盖所有的测试情况。测试案例可以通过选择输入组合来进行。选择输入组合的一个有效途径是把计算机测试和人工检查代码结合起来。例如,通过代码检查发现程序中两个模块使用并修改某些共享的变量,如果一个模块对这些变量的修改不正确,则会引起另一个模块出错,因此,这是程序发生错误的一个可能原因。对于一个模块,局部数据结构是常见的错误来源。
软件测试的方法与工具
实际工作中,常用的测试方法有很多,列举如下表:
序号
测试类型
简述
1
黑盒法
亦称功能测试,完全基于软件的功能和需求的测试
2
白盒法
亦称结构测试,已知程序的内部逻辑,覆盖代码的测试
3
单元测试
最小函数或模块的测试
4
增量集成测试
增加新的功能后进行新的测试
5
集成测试
对由各部分组合起来的程序进行测试
6
功能测试
黑盒类测试,使软件适合应用程序的功能需求
7
系统测试
黑盒类测试,基于全部需求说明,覆盖系统所有组合部分
8
健全性测试
常作为初始测试,确定一个新的软件版本是否表现正常,以应付更强的测试
9
回归测试
修复或调整好的软件的环境之后重新测试,自动的测试工具适用于这种类型
10
认同测试
基于最终用户说明书,或者基于最终用户/消费者使用一段时间的最后测试
11
负载测试
测试应用程序在重负载之下的承受能力
12
压力测试
负载和性能测试.交替进行常用的测试术语,形容在重负载之下的功能测试结果
13
性能测试
负载和压力测试.交替进行常用的测试术语
14
可用性测试
测试该软件的用户界面是否友好
15
安装/卸载测试
测试软件的安装、卸载或升级过程
16
恢复能力测试
测试系统在崩溃,硬件失效,或者遇到其他灾难性的问题时是否能很好地恢复
17
安全性测试
测试系统自身保护并且防止非法的内部或外部的访问,故意的损害等等的能力
18
兼容性测试
测试软件在特别的硬件/软件/操作系统/网络/等等环境中是否能很好地执行
19
验收测试
获知消费者对该软件是否满意
20
比较测试
在同类产品中比较软件的优缺点
21
α测试
在软件开发将结束时进行该测试
22
β测试
当开发和测试工作实质上完成时进行该类测试
在实际操作的过程中,一般都是建立本地化的测试环境,结合以上测试方法,形成本地的内部测试方法。对于不同类型的软件,其测试方法可能存在差异,或者差异很大。
微软内部流行几种测试方式,一种是采用高度结构化的测试脚本,它是基于方案上进行测试,是白盒测试的一种;另一种是“大猩猩测试”,测试人员只是试验他们所能想到的每一种方法测试产品,使之出错。微软还定期举办“臭虫聚会”,各种各样的人聚到一起寻找程序错误。

软件测试的方法与工具
三、软件内部测试的自动工具
软件的自动测试对于降低人工测试的强度有重要的意义,保证软件的持续开发质量有着重要作用。但是,采用自动测试工具是否能降低测试难度?
有可能的,对于小型项目,自动测试工具可能用处不大,不值得再花时间学习一种测试工具的使用方法。但对于大型工程,或者持续的长期的工程,采用自动测试工具则是有用的。对于一项工程,其功能部件可能很多,而且部件之间的关系也比较复杂,要采用人工的测试就需要投入很大的精力,而且当需要进行反复测试的时候,自动测试工具的需求就逐渐明显。因为是长期的工程,学习一种测试工具的使用方法的时间相对于工程建设的时间比例就很下,因此,在工程性软件的开发中采用自动测试工具是很有意义的。
现在很多的自动工具是基于“记录/回放”的方式。例如,测试员在应用程序的GUI中可以通过单击组合的菜单选择,对话框选择,按钮,等等,把他们的行为用工具记录下来并将结果存入日志文件。记录通常为文本格式,是基于测试工具的脚本语言。如果新增了按钮,或者一段重要代码被修改了,等等,然后只要“回放”记录的动作,再比较LOG结果,检查有哪些变化。这些工具的问题是,如果测试系统时变化很频繁,就可能不得不大量改变记录方式,以致耗费大量的时间更新脚本。而且,对结果(如SCREENS,DATA,LOGS等等)的分析也是一项很沉重的任务。但是如果对脚本的结构、格式很熟悉,那么脚本的更新的任务就会轻松很多。目前,有许多基于文本接口的“记录/回放”工具,支持各种平台。
人工测试通常很难进行,而且很不可靠,也不奏效。事实上,面对很复杂的程序,我们有时不得不进行自动化测试。有一些不可能人工进行的测试,如代码覆盖测试,只有使用自动工具才能进行。程序量和复杂度在不停地增加,传统的测试方法显得力不从心,直到九十年代后期,除了测试自动化之外再也没有任何选择,除非不想作任何测试。
目前流行的软件测试工具的类型可以分为以下几类:
序号
测试的类型
简述
1
代码分析器
监督程序代码复杂度,是否遵循标准等等
2
覆盖分析器
校检哪一部分的代码已经被测试,面向代码语句覆盖、条件覆盖、路径覆盖等等
3
内存分析器
边界检查和漏洞检测等等
4
装载/性能测试工具
测试在不同的负载级别之下客户/服务器和WEB应用程序等等
5
WEB测试工具
检验链接是否有效,客户和服务器端的代码、WEB站点的交互是否正常工作
6
其他工具
测试实例管理,文件管理,BUG报告,配置管理工具
一种名为Testworks的自动测试系统,代表现代软件质量控制和软件测试的水平。它搜集了很多测试工具,并把它们捆绑在一起,支持大多数软件测试工程的主要功能,包括静态分析,METRICS,测试文件的生成,GUI测试,测试管理,测试的确认,分支和CALL-PAIR覆盖分析等等。之所以把许多测试工具捆绑在一起,一是为了节省用户的开销,二是将一些类似的工具组织在一起,使用户使用方便。它们经由TestWorks捆绑之后,有统一的用户界面,并具有许多公共特性;另外一个特点是它还支持多平台。

软件测试的方法与工具
TestWorks能够应用于Y2K的测试,集成测试、嵌入和交叉测试、WEB站点的测试和远程测试。
四、结束语
软件内部测试作为软件工程的一个必不可少的环节,对于提高软件的质量有着极其重要的意义,采用不同形式的测试,对软件进行广泛的测试,提高内部测试强度,及时发现问题,并将问题解决,避免问题积累,可以防微杜渐,创造强壮的软件产品,争取市场,以质量取胜。
posted on 2008-05-17 11:05  simplife  阅读(791)  评论(0编辑  收藏  举报