【软件测试】软件测试的基本概念及⽅法
1. 软件质量和软件测试的含义
1.1 软件质量的内涵
软件质量是客户满意度的体现
质量是系统、部件或过程满⾜
1. 明确需求
2. 客户或⽤户需要或期望的程度不同      IEEE <<Standard Glossary of Software Engineering Terminology>>
软件质量:软件产品具有满⾜规定的或隐含要求能⼒要求有关的特征与特征总和(ISO 8492) 
软件质量:软件产品满⾜使⽤要求的程度
1.2  软件测试的概念
是为了发现错误⽽执⾏程序的过程。
应关⼼程序的效率和鲁棒性等因素。
检验软件是否满⾜规定的需求。
弄清预期与实际结果之间的差别。
备注:所谓“鲁棒性”,是英⽂“robust”的译⾳,指强壮、健壮的意思。软件的“鲁棒性”,是指系统在⼀定条件下维持某些性能的特性,简单地说,就是适应各种各样的变化的能⼒。鲁棒性越强,系统精确度就愈⾼,性能越好。
定义:
使⽤⼈⼯或⾃动⼿段,来运⾏或测试某个系统的过程。其⽬的在于检验它是否满⾜规定的需求或弄清预期结果与实际结果之间的差别。
软件测试活动⼀般包含:
制订测试计划
设计测试⽤例
实施测试
提交缺陷报告
测试总结
1.3  软件质量范围-3A
Accountability (可说明性) – ⽤户可以基于产品或服务的描述和定义进⾏使⽤. (例如: 市场需求说明书, 功能设计说明书.)
Availability (有效性) – 产品或服务对于99.999% 客户总是有效的  (例如: 性能测试和恢复测试)
Accessibility (易⽤性) – 对于⽤户, 产品或服务⾮常容易使⽤并且⼀定是⾮常有⽤的功能 . (例如: 确认测试和⽤户可⽤性测试)
1.4  ⾼质量软件
应该是相对的⽆产品缺陷(Bug Free)或只有极少量的缺陷, 它能够准时递交给⽤户并且所⽤的费⽤都是在预算内的并且满⾜客户需求,是可维护的。但是, 有关质量的好坏最终评价依赖于⽤户的反馈。
“客户”⼴义定义 :
内在的定义 : 下⼀个环节/⼯序的接收者,更⼴的 服务的对象,周围有任何联系或影响的团队、⼈。
软件的设计者,程序的检测者,项⽬管理者,品质管理⼈员 …
⼴泛的定义 : 最终⽤户,客户管理
1.5  软件质量的不同的视点
先验论观点:质量是产品⼀种可以认识但不可定义的性质
⽤户观点:质量是产品满⾜使⽤⽬的之程度;
制造者的观点:质量是产品性能和规格要求的符合度
产品观点:质量是联结产品固有性能的纽带;
基于价值观点:质量依赖于顾客愿意付给产品报酬的数量
1.6  ⾼质量软件标准体系
产品质量
是⼈们实践产物的属性和⾏为,是可以认识,可以科学地描述的。并且可以通过⼀些⽅法和⼈类活动,来改进质量.
质量模型:  McCall 模型, Boehm 模型, ISO 9126 模型
过程质量:
软件能⼒成熟度模型 CMM ( Capability Maturity Model).
国际标准过程模型 ISO 9000
软件过程改进和能⼒决断  SPICE ( Software Process Improvement and  Capability dEtermination)
在商业过程中有关的质量内容:
培训、成品制作、宣传、发布⽇起、客户、风险、成本、业务等
1.7  产品质量的标准
- 功能性 Functionality
- 可⽤性 Usability (简单安装; 轻松使⽤; 友好界⾯)
- 可靠性 Reliability (⽤户使⽤的根本)
- 性能 Performance
- 容量 Capacity
- 可测量性 Scalability
- 可维护性 Service manageability
- 兼容性 Compatibility
- 可扩展性 Extensibility
1.8  软件质量特征(ISO9126)
功能:与⼀组功能及其指定性质有关的⼀组属性,这⾥的功能是满⾜明确或隐含的需求的那些功能。
可靠:在规定的⼀段时间和条件下,与软件维持其性能⽔平的能⼒有关的⼀组属性。
易⽤:由⼀组规定或潜在的⽤户为使⽤软件所需作的努⼒和所作的评价有关的⼀组属性。
效率:与在规定条件下软件的性能⽔平与所使⽤资源量之间关系有关的⼀组属性。
可维护:与进⾏指定的修改所需的努⼒有关的⼀组属性。
可移植:与软件从⼀个环境转移到另⼀个环境的能⼒有关的⼀组属性。其中每⼀个质量特征都分别与若⼲⼦特征相对应。
1.9  软件过程质量
软件能⼒成熟度模型 CMM ( Capability Maturity Model).
国际标准过程模型 ISO 9000
软件过程改进和能⼒决断 SPICE ( Software Process Improvement and Capability dEtermination)
1.9.1    质量保证的策略
主要分三个阶段:
1. 以检测为重:产品制成之后进⾏检测,只能判断产品质量,不能提⾼产品质量。
2. 以过程管理为重:把质量的保证⼯作重点放在过程管理上,对制造过程中的每⼀道⼯序都要进⾏质量控制。
3. 以新产品开发为重:在新产品的开发设计阶段,采取强有⼒的措施来消灭由于设计原因⽽产⽣的质量隐患。
1.9.2  全⾯质量管理
TQM = Total Quality Management 全⾯质量管理
TQM是为了能够在最经济的⽔平上,并考虑到充分满⾜⽤户要求的条件下进⾏市场研究、设计、⽣产和服务,把企业内各部门研制质量、维持质量和提⾼质量的活动构成为⼀体的⼀种有效体系
TQM内容:
1. 全员参与质量管理
2. 全过程质量管理。
TQM的4个关键要素:
1. 关注客户
2. 过程改进
3. 质量的⼈性化因素
4. 度量(即模型的测量和分析)
1.9.3  质量管理发展五个阶段
2.软件缺陷(Bug)是什么?
2.1  软件缺陷的含义
任何程序、系统中的问题,和产品设计书的不⼀致性,不能满⾜⽤户的需求
2.2  问题出在哪?软件测试项目流程
项⽬没有被很好地理解;计划不周,最终导致进度拖延。
没有充分的⽂档资料。
⼈与⼈的交流⽐写程序困难得多。
软件可靠性缺少度量的标准,质量⽆法保证。
软件难以维护、不易升级。
2.3  解决问题的想法
Better management 管理
Different team organizations 组织
Better languages & tools 语⾔和⼯具
Uniform coding conventions 编程惯例
必须意识到:“软件” ≠ 编程,它有⾃⼰的⽣命周期 (life cycle)。⼤型软件系统的开发与其它⼯程项⽬如建造桥梁、制造飞机、轮船等的开发是同理的。
实践证明:对软件进⾏充分的测试
才能够有效的保证软件质量
对软件产品进⾏充分测试,出其中的缺陷(Bug),并进⾏修复(Fix)。
2.4  软件缺陷--Bug
缺点(defect)偏差(variance)
谬误(fault)失败(failure)
问题(problem)⽭盾(inconsistency)
错误(error )⽑病(incident )
异常(anomy)
IEEE (1983) 729 软件缺陷⼀个标准的定义:
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、⽑病等各种问题;
从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
软件缺陷的主要类型/现象:
功能、特性没有实现或部分实现
设计不合理,存在缺陷
实际结果和预期结果不⼀致
运⾏出错,包括运⾏中断、系统崩溃、界⾯混乱
数据结果不正确、精度不够
⽤户不能接受的其他问题,如存取时间过长、界⾯不美观
2.5  软件缺陷的产⽣
技术问题
算法错误,语法错误,计算和精度问题,接⼝参数传递不匹配
团队⼯作
误解、沟通不充分
软件本⾝
⽂档错误、⽤户使⽤场合(user scenario),
时间上不协调、或不⼀致性所带来的问题
系统的⾃我恢复或数据的异地备份、灾难性恢复等问题
2.6  软件缺陷构成

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。