软件测试综述

1.软件测试的目标、任务与策略

(1)软件测试的目标:发现程序中的错误,是为 了证明程序有错,而不是证明程序无错。保证软件质量,提高软件可靠 性的关键。
(2)软件测试的任务:软件测试是软件开发工作的最后一个环节。 由于人认识客观事物的主观性,难免在开发 的软件产品中产生错误。 为了给用户交付一个高质量的软件系统, 必须对开发的系统进行严格的测试,以便尽 可能多的发现错误。
(3)软件测试的策略:白盒测试、黑盒测试

2.白盒、黑盒测试方法的测试用例设计策略与方法

(1)、白盒测试方法
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,  "白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
(2)、白盒测试的测试用例设计
逻辑覆盖法:一系列测试方法总称,特 点是逐渐进行越来越完整的通路测试。
逻辑覆盖的准则:
(a)语句覆盖 :每条语句至少执行一次
(b)判定覆盖 :每个判定的每个分支至少执行一次
©条件覆盖 :每个判定的每个条件应取到各种可能的值
(d)判定/条件覆盖 :同时满足判定覆盖条件覆盖
(e)条件组合覆盖 :每个判定中各条件的每一种组合至少出现一次
(f)路径覆盖 :使程序中每一条可能的路径至少执行一次
(g)点覆盖
(h)边覆盖
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
(3)、黑盒测试:主要包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动发、正交试验设计法、功能图法等
(a)、等价类划分法是把程序的输入域分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。
(b)、边界值分析法
边界值分析法就是对输入火输出的边界值进行测试的一种黑盒测试方法.同城边界值分析法是作为对等价类划分法的补充.
使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或者刚刚小于边界的值作为测试数据.
通常情况下,软件测试所包含的边界检验有几种类型:数字,字符,位置,重量,大小,速度,方位,尺寸,空间等
相应地,以上类型的边界值应该在:最大/最小,首位/末位,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下,利用边界值作为测试数据.
(c)、错误推断法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.
(d)、因果图法
因果图法师一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法.
采用因果图法设计测试用例的步骤:
① 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符.
② 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图.
③ 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件.
④ 把因果图转换为判定表
⑤ 把判定表的每一列拿出来作为依据,设计测试用例.
(e)、判定表驱动法
判定表通常由4个部分组成
① 条件桩:列出了问题得所有条件.通常认为列出的条件的次序无关紧要
② 动作桩:列出了问题规定可能采取的操作.这些操作的排列顺序没有约束
③ 条件项:列出针对它左列条件的取值.在所有可能情况下的真假值.
④ 动作项:列出在条件项的各种取值情况下应该采取的动作.
判定表的建立步骤:
① 确定规则的个数.加入有n个条件.每个条件有两个取值(0,1),故有2n种规则.
② 列出所有的条件桩和动作桩
③ 填入条件项
④ 填入动作项.等到初始判定表
⑤ 简化.合并相似规则
(f)、正交试验法
依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.
(g)功能图法
功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同事要依靠判定表或因果图表示的逻辑功能.
(h)场景法
事件触发时的情景便形成了场景,二同一事件不同的触发顺序和处理结果就形成事件流.
(4)实用策略
a、在任何情况下都必须使用边界值分析方法;
b、必要时用等价类划分方法补充一些测试用例;
c、必要时再用错误推测法补充;
d、对照程序逻辑,检查测试方案。检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例;
e、如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法

3.软件测试步骤与方法

(1)软件测试的步骤:单元测试、集成测试、确认测试、系统测试
单元测试: 要对模块的五个基本特性进行评价
集成测试: 检验概要设计中模块接口设计问题
确认测试: 以需求规格说明书为检验尺度
系统测试: 综合检验,平行运行:新旧两套系统并行运行,对照检验,测试可视为分析、设计、编码三个阶段的最终复审,以保证软件质量。
(2)单元测试
主要测试以下五个方面:
a、模块接口:
内部检查:传输参数的数目、属性、单位、 次序是否匹配;全程变量的定义是否一致; 只做输入的变元有无被修改,等等。 
外部检查:打开、结束、关闭文件的操作; 文件和属性;I\O错误处理;输出拼写,等。
b、局部数据结构
数据说明(declaration);初始化与缺省 值的设置;变量名拼写;数据类型的相容性; 上\下溢出及地址异常,等等。
c、重要的执行通路:
由于穷尽测试不可能,故通常针对最常见 的错误设计测试方案。较常见的错误有:
计算次序问题;
不同类型混合运算(如比较类型不同的量);
初值设置错误;
精度问题(例:精度不够导致两变量不可能 相等,而程序中等待相等条件的出现;
表达式错误;
循环终止条件错误(例:次数差1,或陷入 死循环)。
d、出错处理通路
预见出现错误的条件,设置处理。较常见的问题有
输出的错误信息难以理解,不能确定错误位置 
描述的错误与实际错误不符 
处理之前系统已经干预 
处理不正确
e、边界条件
单元测试中最后,也可能是 最重要的任务,因为软件常在其边界失效。
(3)软件测试的方法:
(1):静态测试方法:人工测试方法 计算机辅助静态分析方法
(2):动态测试方法:白盒测试方法 黑盒测试方法 穷举测试方法
静态测试:
基本特征是在对软件进行分析、检 查和测试,不实际运行被测试的软件.
静态测试约可找出30~70%的逻辑 设计错误. 对需求规格说明书、软件设计说明 书、源程序做结构分析、流程图分析 、符号执行来找错。
动态测试:
通过运行软件来检验软件的动 态行为和运行结果的正确性.
动态测试的两个基本要素:被测试程序测试数据(测试用例)

4.常用软件测试工具

(1)测试工具的分类
自动化软件测试工具:通过计算机运行测试工具自动地进行脚本测试
测试管理工具:通过数据库共享测试用例,管理软件缺陷
两者相结合提高会让软件测试效率
(2)自动化软件测试工具:提高测试效率,用软件 来代替人工输入。
适应于的场合:软件需求变化不频繁、项目 周期长、测试脚本重复使用的情况
提高执行速度,缩短测试周期,多次运行;
自动化测试只能发现15%-30%的缺陷;
软件功能测试、验收测试等不适合自动化测试;
单元测试、集成测试、负载性能测试、回归测试适合进行自动化测试;
短期项目、需求变化频繁时,不适合自动 化测试
(3)测试管理工具:通常对测试需求、测试计划、测试用例和测试实施管理,并跟踪和管理软件缺陷。
测试管理工具的测试人员、开发人员及 其他人员共享一个数据库,相互交换信息,提高回归测试效率、提升测试质量 、用例复用等。
(4)按照功能分类
代码测试覆盖率分析器;
内存泄露检测工具;
测试数据生成器;
网络测试工具;
GUI测试工具;
负载、性能和强度测试工具。
(5)按照测试技术分类
黑盒测试工具
功能测试工具
性能测试工具
白盒测试工具
静态测试工具
动态测试工具
测试管理工具

5.软件质量评估方法

1、软件质量评估的定义
软件质量评估技术是软件工程中非常重要的研究领域,由于软件本身的复杂性和软件技术发展迅速等原因,软件质量评估技术在理论上和技术上都很不成熟,对软件质量更科学、更客观的评估。 可以促使得到更加可靠、高效的软件。
2、软件质量评估的原则
A、针对性
具体表现就是功能性与高可靠性。
B、可测性
即能够定量表示,可以通过数学计算、平台测试、经验统计等方法得到具体数据。
C、简明性
即易于被各方理解和接受。
D、完备性
即选择的指标应覆盖分析目标所涉及的范围。
E、客观性
即客观反映软件本质特征,不能因人而异。
3、注意点
选择的评估指标不是越多越好,关键在于指标在评估中所起的作用的大小。如果评估时指标太多,不仅增加结果的复杂性,有时甚至会影响评估的客观性。
4、软件质量评估指标体系:
通常,我们在软件的测试与评估时,主要侧重于功能特征、可靠特征、易用特征和效率特征等几个方面。
A、功能性指标:是软件最重要的质量特征之一,可以细化成完备性和正确性。对软件的功能性评价主要采用定性评价方法。
a.完备性
完备性是与软件功能完整、齐全有关的软件属性。如果软件实际完成的功能少于或不符合研制任务书所规定的明确或隐含的那些功能,则不能说该软件的功能是完备的。
b.正确性
正确性是与能否得到正确或相符的结果或效果有关的软件属性。软件的正确性在很大程度上与软件模块的工程模型(直接影响辅助计算的精度与辅助决策方案的优劣)和软件编制人员的编程水平有关。
B、可靠性指标
a.可用度:可用度指软件运行后在任一随机时刻需要执行规定任务或完成规定功能时,软件处于可使用状态的概率。
b.初期故障率:初期故障率指软件在初期故障期(一般以软件交付给用户后的三个月内为初期故障期)内单位时间的故障数。
c.偶然故障率:指软件在偶然故障期(一般以软件交付给用户后的四个月以后为偶然故障期)内单位时间的故障数。
d.平均失效前时间(MTTF):指软件在失效前正常工作的平均统计时间。
e.平均失效间隔时间(MTBF):指软件在相继两次失效之间正常工作的平均统计时间。
f.缺陷密度(FD):指软件单位源代码中隐藏的缺陷数量。
g.平均失效恢复时间(MTTR):指软件失效后恢复正常工作所需的平均统计时间。
易用性指标:可以细化为易理解性、易学习性和易操作性等。这三个特征主要是针对用户而言的。对软件的易用性评价主要采用定性评价方法。
a.易理解性:与用户认识软件的逻辑概念及其应用范围所花的努力有关的软件属性。b.易学习性:与用户为学习软件应用(例如运行控制、输入、输出)所花的努力有关的软件属性。
c.易操作性:与用户为操作和运行控制所花的努力有关的软件属性。
效率特征指标
a.输出结果更新周期:软件相邻两次输出结果的间隔时间。
b.处理时间:软件完成某项功能(辅助计算或辅助决策)所用的处理时间(注意:不应包含人机交互的时间)。
c.吞吐率:单位时间软件的信息处理能力(即各种目标的处理批数)。
d.代码规模:软件源程序的行数(不包括注释),属于软件的静态属性。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值