软件质量与质量保证
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件质量与质量保证
一、软件质量的定义
软件质量反映了以下三方面的问题。
1.软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。
2.在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。
3.往往会有一些隐含的需求没有明确地提出来。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。
二、影响软件质量的因素
1.影响软件质量的主要因素
2.软件质量讨论评价应遵守的原则
三、软件质量保证策略
为了在软件开发过程中保证软件的质量,主要采取下述措施:
1.审查
2.复查和管理复审
3.测试
四、软件质量保证活动
1.验证与确认
2.开发时期的配置管理
五、软件评审
通常,把质量定义为用户的满意程度。为使得用户满意,有两个必要条件:
(1)设计的规格说明要符合用户的要求;
(2)程序要按照设计规格说明所规定的情况正确执行。
设计质量的评审内容
程序质量的评审内容
1.软件的结构
2.与运行环境的接口
六、软件质量保证的标准
1.ISO质量保证模型
2.ISO 9001标准
七、结构化的软件测试
软件测试在程序员对每一个模块的编码之后先做程序测试,再做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分己在编码阶段就开始了,测试横跨开发与测试两个阶段,又有不同的人员参加,测试工作本身是复杂的。
据统计测试工作量要占软件开发总成本的40%到50%以上。
测试的目的是确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。
测试的X围是整个软件的生存周期,而不限于程序编码阶段。
软件测试的概念和原则
1、测试的概念
(1)软件测试
软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动)。
(2)程序测试
程序测试是早已流行的概念。它是对编码阶段的语法错、语义错、运行错进行查找的编码执行活动。找出编码中错误的代码执行活动称程序测试。纠正编码中的错误的执行活动称程序调试。通过查找编码错与纠正编码错来保证算法的正确实现。
(3)软件确认与程序确认
软件确认是广义上的软件测试,它是企图证明程序软件在给定的外部环境中的逻辑正确性的一系列活动和过程,指需求说明书的确认,程序的确认。程序确认又分成静态确认与动态确认。静态确认包括,正确性证明,人工分析,静态分析。动态分析包括动态确认与动态测试。
①静态分析是不执行程序本身,分析程序正文可能导致错误的异常情况。可以人工的进行分析,也可以用测试工具静态分析程序来进行,被测试程序的正文做为输入,经静态分析程序分析得出分析结果。静态分析包括结构检查,流图分析,符
号执行。
②动态分析是执行被测程序,从执行结果分析程序可能出现的错误。可以人工设计程序测试用例,也可以由测试工具动态分析程序来做检测与分析。动态测试包括功能测试和结构测试。动态测试的内容包括:单元测试,也称逻辑测试,模块测试,功能测试。组装测试也称集成测试,综合测试,或结构测试,子系统测试。系统测试是软硬件或子系统的组装测试。
(4)各种软件错误的出现比例
①功能错,占整个软件错误27%,是需求分析设计不完整而引起的。
②系统错,占整个软件错误16%,是总体设计错误而引起的。
③数据错,占整个软件错误10%,由编码错误引起的。
④编码错,占整个软件错误4%,程序员编码错误引起的。
⑤其它错,占整个软件错误16%,由文档错和硬件错所引起的。
2、测试过程
3、测试的原则
测试的原则如下:
(1)测试前要认定被测试软件有错,不要认为软件设有错。
(2)要预先确定被测试软件的测试结果。
(3)要尽量避免测试自己编写的程序。
(4)测试要兼顾合理输入与不合理输入数据。
(5)测试要以软件需求规格说明书为标准。
(6)要明确找到的新错与已找到的旧错成正比。
(7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。
(8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。
软件测试技术
1. 软件测试的目标
测试的目标:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
2. 测试方法
按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。
测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。白盒法是通过分析程序内部的逻辑与执行路线来设计测试用例,进行测试的方法,白盒法也称逻辑驱动方法。黑盒法是功能驱动方法,仅根据I/O数据条件来设计测试用例,而不管程序的内部结构与路径如何。白盒法的具体设计程序测试用例的方法有:语句覆盖、分支(判定)覆盖、条件覆盖、路径覆盖(或条件组合覆盖),主要目的是提高测试的覆盖率。黑盒法的具体设计程序测试用例的方法有:等价类划分法,边界值分析法,错误推测法,主要目的是设法以最少测试数据子集来尽可能多的测试软件程序的错误。
(1)静态分析技术
不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
(2)动态测试技术
当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。这样动态测试的算法有:
①选取定义域中的有效值,或定义域外无效值。
②对已选取值决定预期的结果。
③用选取值执行程序。
④观察程序行为,记录执行结果。
⑤将④的结果与②的结果相比较,不吻合则程序有错。
动态测试既可以采用白盒法对模块进行逻辑结构的测试,又可以用黑盒法做功能结枸的测试,接口的测试,都是以执行程序并分析执行结果来查错的。
(3)黑盒测试和白盒测试
①黑盒测试法
黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。