1.软件质量
1)定义:
反应软件实体 满足明确的和隐含的需求 的能力特性的综合。
国家标准:
(1)软件产品能满足 给定需要的性质和特性的总体 如:符合规格说明书
(2)软件具有所期望的各种属性的组合程度
(3)顾客和用户觉得软件满足其综合期望的程度
(4)确定软件在使用过程中满足顾客预期要求的程度
2)软件质量的属性
软件能够符合各种精确的功能以及性能需求,符合文档化的开发标准,则这个软件质量就是高的。
软件能够处理例外和异常的情况,具有足够的容错性和纠错能力,则这个软件质量就是高的。
因此,软件的质量实际上是各种复杂属性的组合,定义一个软件的质量其实就是为这个软件定义一些列的质量属性。
质量属性可以理解为软件能不能。。。有没有。。。
人们通常用软件质量模型来描述软件的质量属性
国家标准:
软件质量模型分为外部质量模型,内部质量模型,使用质量模型
外部质量模型:软件的功能型,可靠性,符合开发标准等(从用户的观点看软件有没有符合某些东西)
内部质量模型;软件的效率性等(从专业的角度看软件的执行效率怎样等)
使用质量模型:软件在规定的环境下进行规定的操纵是否能完成
3)软件的度量
软件生命周期大致可分为三个阶段(测试角度):定义软件质量的要求,实现软件质量的要求,测试软件是否达到了要求
外部度量:在使用和测试软件的过程中,通过观察软件的行为,执行等导出软件的度量,从而评价软件的质量
内部度量:在设计和编码的过程中,通过规格说明书等中间产品测量内部的质量特性
4)影响软件质量的主要因素
主要因素有三个:开发软件的组织,开发过程以及开发过程中使用的方法和技术
2.软件测试的概念
1)软件测试的定义:
(1)在规定条件下运行系统或构件的过程,观察并记录结果做出评价
(2)分析软件项目的过程,检测bug并评估软件项目的特性
2)软件测试的目的:
(1)测试的目的是证伪----发现程序中各种各样的错误
(2)测试就是建立一种信心,确信程序能够按预期的设想运行---在规定的环境中运行软件的所有功能
软件测试是为了保证软件质量
一个好的测试用例在于它能发现至今未发现的错误
一个成功的测试用例是发现了至今未发现的错误的测试
3)软件测试的原则:
(1)应当把 今早的和不断的进行软件测试 作为座右铭
(2)测试用例应由输入数据和对应的预期输出数据组成
(3)程序员应避免测试自己的程序
(4)在设计测试用例时,应包括合理的和不合理的输入条件
(5)充分注意测试中的集群现象
(6)严格执行测试计划,排除测试的随意性
(7)应当对每一个测试结果做全面的检查
(8)妥善保管相关文档
3.软件的缺陷和错误
1)软件的缺陷(bug)主要有几种
(1)没有实现规格说明书要求的内容
(2)实现了规格说明书没有要求的内容
(3)出现了规格说明书指明不应该出现的错误
(4)没有实现规格说明书中没有明确指出但是应该实现的目标
(5)软件难以理解,不易使用
以开发一个计算器为例子:
(1)说明书规定必须准确无误的实现加减乘除,而软件按下+号却反应或计算结果错误
(2)说明书中没有要求实现取余运算,而软件实现了
(3)说明书规定永远不会出现死机等情况,如果随意乱敲键盘软件无法接受输入的数字
(4)计算器不会随着电池的电量出现计算结果偏差,说明书中虽然没有明确说明,但是这是默认的,也是必须实现的功能
(5)布局位置不好或者难以看清等
2)软件缺陷的级别:
致命的
严重的
一般的
微小的
3)软件缺陷的状态:
活动状态:问题未解决
已修正状态:通过了单元测试等
非活动状态:确认了缺陷不复存在
保留状态:由第三方产品引起的缺陷
不一致状态:不需要解决或者在下一版本将会解决
4)软件缺陷的产生原因:
技术问题,团队工作,软件本身等
5)软件缺陷的构成:
功能缺陷
系统缺陷
加工缺陷
数据缺陷
代码缺陷
4.软件测试的心理学和经济学
1)心理学
软件测试更适合被看做一个视图发现程序中错误的破坏性的过程
测试人员应该有良好的测试心态和明确的测试目标
2)经济学
(1)黑盒测试
又称为数据驱动测试 输入/输出驱动测试
测试目标与程序的内部机制无关
测试数据完全来源于规格说明书
(2)白盒测试
又称逻辑驱动测试
检测程序内部的逻辑结构等
3)选择测试用例的时候要遵守的经济型准则
根据程序的重要性和发生故障产生的后果来确定测试等级
尽可能做到用少的测试用例来发现更多的错误
5.软件质量保证
质量保证是一个有组织,有计划的活动,他向人们提供证据说明程序正在按质量要求运行
软件质量保证是通过对软件有计划的进行 各种评审和审核 来 验证和确认 软件是否符合标准
软件的验证和确认:
验证是用数据证明人们是否在争取的制造产品
确认是用数据证明人们时候制造了正确的产品