测试的基本理论和方法
-
【转】浅谈软件测试的基本理论与方法
p>
随着软件应用领域越来越广泛,
其质量的优劣也日益受到人们的重视
。
质量保证
能力的强弱直接影响着软件业的发展与生存。
软件测试是一个成熟软件企业的重
要组成部分,
它是软件生命周期中一项非常重要且非常复杂的工作,
对软件
可靠
性保证
具有极其重要的意义。
在软件的测试过程中,
应该应用各种
测试方法,
以保证产品有一个较高较稳定的
质量。根据不同的<
/p>
生产过程
进行不同的测试,包括
黑盒测试
、
cc
霜白盒测试、
携程网酒店预定功
能测试、系统测试、压力测试、安装
/
卸载测试、兼容性测试、
α
测试、
β
测试
等
。
软件测
试是整个软件开发过程中一段非常重要的阶段,
在测试过程中如能按照测
试的
基本过程
来进行测试,软件的
质量
能有所保障。
我做了一个半月的测试,
就现在的感觉而言,
其实
做测试必开发却是是轻松了一
点,不是那么的累脑子,但是测试也是很深的一门学问,针
对于不同的公司,产
品不一样,
所要求的测试的技术也不一样。
有的公司测试很轻松,
但是有的公司
测
试也是经常加班熬通宵的
1
软件测试基础
信息技术的飞速发展,
使软件产品应
用到社会的各个领域,
软件产品的质量自然
成为人们共同关注的
焦点。
不论软件的生产者还是软件的使用者,
均生存在竞争
p>
的环境中,
软件开发商为了占有市场,
必须
把
产品质量
作为企业的
重要目标
之一,
以免在激烈的竞争中被淘汰出局。
用户
为了保证自己业务的顺利完成,
当然希看
选用
< br>优质
的软件。
质量不佳的软件产品不仅会使开发商的
p>
维护难度
和用户的
使用
本钱
大幅增加,
还可能产生其他的
责任风险
,
造成公司
信誉
下降,
继而冲击股票
市场。在一些
< br>关键应用
(
如民航订票系统、
银行结算系统、证券交易系统、自动
飞行控制软件、军事防御、核电站安全控制系统等<
/p>
)
中使用质量有问题的软件,
还可能造
成
灾难性
的后果。
软件危机
曾经是软件界甚至整个计算
机界最热门的话题。
为了解决这场危机,
软
件从业职员、
专家和学者做出了大量的努力。
现在人们已经
逐步熟悉到所谓的软
件危机实际上仅是一种状况,
那就是软件中
有错误,
正是这些错误导致了软件开
发在
本钱
、
进度
和
质量
上的失控。有错是软件的属性,而且是无法改变的,由于
软件是由人来完成的,
所有由人做的工作都不会是完美无缺的。
问题在于我们如
何
避免
错误的
产生
和
消除
已经产生的
错误
,
使程序中的
错误密度
达到尽可能低的
程度。
1.1
软件测试的概念
软件测试是为了
发现错误
而
执行程序
的过程。
或者
说,
软件测试是根据软件开发
各阶段的
规格说明
和程序的
内部结构
而精心设计
一批测试用例
(即
输进数据
及其
预期的
输出结果
),并利用这些
测试用例去运行程序
,以发现程序错误的过程。
软件测试就是在软件投进运行前,
对
软件
需求分析
、
设计规格说明
和编码的终极
复审,是
软件质量保证
的关键步骤。
1.2
软件测试的目的
基于不同的态度,存在着
两种
完全不同的测试目的。
1.
从
用户
的角度出发,普遍
希望通过软件测试,
暴露
软件中隐躲的
错误和缺陷
,以考虑是否可接受该产品。
2.
从
软件开发者
的角度出发,则希望
测试
成为
表明
软件产品中
不存在错误
的过
程,验证该软件已正确地实现了
用户的要
求
,确立人们对
软件质量
的
信心
。
2
测试用例
2.1
测试用例的概念
测试用例
是指对一项特定的软件产品
进行
测试任务
的描述,
体现测试
方案、
方法、
技术
和
策略
。
内容
包括:
测试目标、
测试环境、
输进数据、
测试步骤、
预期结果、
测试脚本
等,
并形成
文档<
/p>
。
2.2
测试用例的分类
根据测试过程中具体涉及到
问题类型
及
测试需求
,可将测试用例分为如下:
1.
功能
性
测试用例
2.
界面
测试用例:适用于所有测试阶段中的界面测试
3.
数据处理
测试用例:适用于所有测试阶段
中的数据处理测试
4.
流程
测试用例:适用于所有流程性的测试
5.
p>
安装
测试用例:适用于所有安装测试
2.3
测试用例的治理
1.
编写用例
:测试工程师根据需求规约、概要设计、具体设计等文档编写测试用
例。
2.
用例评审
:原则上用
例象程序一样,要经过多次的修改才可以通过,实际工作
中通常进行一次。
3.
用例修改
:评审结束
后,您需要根据评审意见进行修改,修改后通常不再进行
评审。
4.
使用用例
:执行测试用例,并记录
到测试用例执行报告中。
5.
用例升
级
/
维护
:随着软件产品不断修改、升
级,对应的用例也需要升级维护。
针对同一个项目,
可以根据需
求的变更不断进行维护;
假如是产品,
用例的维护
更加重要,要达到用例和产品的版本逐一对应。
2.4
测试用例的编制及使用
1
设计测试用例
每个具体测试用例都将包括下列具体信息:
< br>编制人、审定人、编制日期、版本、
用例类型、设计说明书编号、用例编号、用例
名称、输进说明、期望结果(含判
定标准)、环境要求、备注
等
。
1.
“
测试用例名称
”
可以是不涉及到具体
模块的功能描述,如
“
日期格式
”
p>
,
“
非空
检验
p>
”
等。
2. “
输进说明
”
是功能模块
接受的数据
或各种
操纵描述
,
如
“
输进非法的日期格式
”
等。
3. “
期望结果
”
是模块接受
输进
后应有的正常
输出描述
,如
“
提示用户修改
”
等
,期
看结果应与输进说明逐一对应。
4.
测试用例用于
指导执行操纵
p>
,但某些意外操纵也可导致程序错误,这些操纵
称为
非预期性操纵
,可以先有执行报告,再后补用例。
5.
测试用例的设计应考虑
通用性<
/p>
和
简洁明了
。
测试需求
软件测试需求是开发
测试用例
的依据,
测试需求
分解的越具体精准,
表明对所
测
软件的了解越深,
对所要进行的
任务
内容
就越清楚,
对测试用例的
设计质量
的帮
助越大。
具体的测试需求还是衡量
测试
覆盖率
的重要指标,
测试需求是计
算测试
覆盖的分母,没有具体的测试需求就无法有效的进行测试覆盖计算。
软件测试
执行阶段
p>
是由一系列不同的
测试类型
的
执行过程
组成的,
每种测试类型
都有其具体的
测试目标
和
支持技术
,
每种
测试类型
都只侧重于对测试
目标
的一个
或多个
特征或属性
进行测试,正确的测试类型可以给软件测试带事半功
倍的效
果。
现有的软件
测试分析技术
不太成熟,
对
测试需求
和
测试类型
的分析,
所采用的方
法主要是根据经验进行收集、
p>
整理,
该方法依靠于测试设计职员的测试经验,
由
此方法得出的测试需求、
测试类型往往导致
测试用例设计不充分
,
测试覆盖度低
,
测试目的性
不强,
轻易遗漏
等缺陷。
可见,
如何对
测试需求
进行细致的整理
分析,
明确测试执行时的
测试类型
,<
/p>
是一
个亟待解决的题目。
有鉴于此,
本方法的主要目的在于提
供一种软件
测试需求
的
分析方法
,
可以方便、
详尽的获取
测试需求
,明确测试
执行
时需要实
施的
测试类型
。
1
测试需求
分析的方法
a
)
列出软件开发
需求
中具有可测试
性的
开发需求
;
b
)
对步骤
a
)列出的每一条
开发需求
,形成可测试的
< br>分层描述
的
测试需求
;
c
)
对步骤
b
)形成的每一条
测试需求
,从
GB/T
.1-2006
《软件工程
产品质量
第
1
部分:
质量模型》
中定义的软件
p>
内部
/
外部质量模型
来确定软件产品的
质量需求
;
p>
d
)
对步骤
c
p>
)所确定的
质量需求
,分析测试执行时需要
实施的
测试类型
;
< br>e
)
建立测试需求
跟踪矩阵
p>
,对测试需求进行
治理
。
< br>
3
软件生命周期
软件生命周期
(SDLC
,
Systems Development Life Cycle)<
/p>
是软件的
产生
直到
报废
的
生命周期,周期内有
题目定义
、可行性分析、总体描述、系统设计、编码、调试
和测试、
验收
与运行、
维护升级
到
废弃
等阶段,
这种按
时间
分程的
思想方法是软
件工程中的一种思想原则,
即按部就班、
逐步推进,
每个阶段都要有定义、
工作、
审查、形成文档以供交流或备查,以进步软件的
质量
< br>。
3.1
问题的定义及规划
此阶段是软件开发方与需求方共同讨论,主要确定软件的
p>
开发目标
及其
可行性
。
3.2
需求分析
在确定软件开发可行的情况下,
对软
件需要实现的各个功能进行具体分析。
需求
分析
阶段是一个很重要的阶段,
这一阶段做得好,
将为整个
软件开发项目的成功
打下良好的基础。
唯一不变的是变化本身。
,同样需求也是在整个软件开发过
p>
程中不断
变化
和
深
进
的,
因此我们必须制定
需求变更计划
来应付这种变化,
以保
护整个项目的顺
利进行。
3.3
软件设计
此阶段主要根据
需求分析
的结果,对整个软件系统进行设计,如
系统框架设计
,
数据库设计
等等。
软件设计一般分
为
总体设计
和
具体设计
。
好的软件设计将为软
件程序编写打下良好的基础。<
/p>
3.4
程序编码
此阶段是将
软件设计
的结果转换成计算机可运行的
程序代码
。
在程序编码中必须
要制定统一,符合标准的
编写规范
。以保证程序的
可读性,易维护性
,提
高程序
的
运行效率
。
< br>
3.5
软件测试
在软件设计完成后要经过
严密
的测试,
以
发现
软件
在整个
设计过程
中存在的
问题
并加以
纠正
。整个
测试
过程
分:
单元测试、组装测试、系统测试
三个阶段进行。
测试的方法主要有:
白盒测试
和
黑盒测试
两种。
在测试过程
中需要建立具体的
测
试计划
并严格按照
测试计划
进行测试,以
减少
测试的
随意性
。
3.6
运行维护