思步网

查看: 73653|回复: 20
打印 上一主题 下一主题

[测试理论] 软件测试与评价在整个软件生命周期中的作用

[复制链接]
测试是一种基于机器的对代码执行、确认的活动。评价则是对软件开发过程中产生的各种系统规格和模型进行的验证活动。大部分组织对评价和测试的定义都相对狭义,一般是指对代码执行物理测试用例的活动。事实上,很多公司甚至直到编码已经开始时才指定或安排测试人员。更有甚者,他们将这一活动的范围仅仅限于功能测试,也许有时做一下性能测试。这种观点在目前的CMM有关评价与测试的描述中被进一步强调,这就是SPE,软件产品工程KPA。在SPE KPA活动中,活动5、6、7,仅仅用了基于代码的测试作为例子,只明确地提到了功能测试。其他类型的测试只是用一句非常含糊的话来指代:“保证软件满足软件需求 ”。

  另一方面,建造摩天大厦的人们,则远在砌第一块砖之前就将评价和测试集成到了开发过程之中。通过建模来验证稳定性、防水性、照明布置以及电源的需求等等,从而实施评价。而目前,组织所使用软件评价和测试方法就像是设计师一直等到大楼已经建成才进行测试,而此时的测试只是能保证给水和照明可以工作而已。

  CMM只是进一步将评价和测试的部分思想进行融合,用一个特殊的评价技术来代替,这个技术就是CMM中的一个KPA,同行评审。这也意味着,在提交代码之前,唯一可干的评价就是同行评审,且已经足够了。事实上,对于一件事情的评价和测试的步骤包括:(1)定义成功准则;(2)涉及覆盖这些准则的用例;(3)执行用例;(4)验证结果,验证所有的内容都已覆盖。同行评审只是提供了一个基于纸面的测试机制。它既不能从根本上提供成功准则,也不能提供任何正式的机制以支持用例定义以用于同行评审中。同行评审本质是主观的,因此,基于误解使程序员将缺陷引入产品,而到同行评审时,基于同样的误解,也使得人们无法发现这些缺陷。

  评价和测试的一个相对坚固的内涵范围必须包括项目在开发周期每一个阶段的每一个交付产品。它也必须考虑每个交付产品的每一个预期特性。而且必须包括每一个评价/测试步骤。下面我们看两个例子:评价需求和对一个设计的评价。

  一个需求文档必须是完备的、一致的、正确的和清晰的。那么第一步就是基于项目/产品目标(即为什么要做这个项目的说明)对需求进行确认。这能够保证我们定义了正确的功能集。下一步评价就是遍历use-case脚本走查各功能规则,如果可能的话,最好用一些原型工具(screen prototype)作为辅助工具。第三步评价是有领域专家进行的对文档的同行评审。第四步是由非领域专家进行的正式的含糊性评审(他们无法读懂文档里的功能知识,这将帮助确保各种规则是明确定义的,而不是隐含定义)。第五步评价是将需求转换为布尔逻辑图。这可以鉴别规则之间的顺序问题,同时也能发现漏掉的用例(cases)。第五步评价是在CASE工具的辅助下进行的逻辑一致性检查。第七步评价是由领域专家进行的对测试脚本的评审,这些脚本是从需求导出来的。

  对设计的评价一样可以进行一系列补救。一个是对照需求对设计文档进行走查。另一评价是构建一个模型来验证设计的完整性(例如构造一个操作系统的资源分配模式来保证不会发生死锁)。第三种评价是建立模型来验证性能特征。第四种是将形成的设计与其他公司的现成系统进行对比,以确保所设计的配置能够处理预期的处理规模和数据规模。

  上面的评价只有一部分可以用同行评审来完成,没有一个是基于代码的。而且上边的例子中没有一个评价是穷尽的,必要时我们可以进行的其他评价。关键是我们输出一个交付产品(如需求文档),在我们能够正式称它是完备的并可被下一开发步骤使用之前,我们必须基于预期的特征对之进行评价。而进行这些评价需要比进行同行评审更加复杂的技术。   

  这就是评价和测试的关键所在。一个特征的预定义集合,尽可能被明确定义,用来对一个交付产品来进行确认。例如,当你在学校,进行了数学测验,老师会拿你的回答与预期答案相对比。老师不会仅仅说他们看上去也是合理的,或者他们更加准确。答案是9.87652,要么它对,要么不对。同时,老师也不会等到学期结束才将在课程早期交上来的进行判卷,在他们做出来之际就得到了测试。目前我们软件开发承担更加大风险,难道我们还可以有任何的不严格和不及时吗?

  这些应当进行评价和测试的交付产品应当包括需求规格说明书,设计规格说明书、数据转换规格和数据转换代码、数据库设计说明书、培训资料、硬件/软件安装规格、用户手册和应用程序代码等等。当然这并不是一个完整的列表。问题的关键是,在你的项目生命周期中的每一个交付产品都必须被测试。

  对于一个给定交付产品的评价和测试可能会延续项目生命周期的多个阶段。越来越多的软件组织开始从瀑布式模型向迭代式模型转变。例如,设计规格可能会经过三个迭代才能产生。第一个迭代定义体系结构—它是人工的还是自动的,是集中的还是分散的,是在线的还是批命令式的,是直接文件存储还是通过关系性数据库等等。第二个迭代则可能继续推动设计,来鉴别所有的模块和模块间的数据交换机制。第三个迭代则定义模块内部的伪代码。每个迭代都应当基于适当的特性来进行评价与测试。

  评价和测试的类型必须是鲁棒的、坚固的。这包括对功能、性能、可靠性-可用性/实用性-可服务性、易用性、可移植性、可维护性和可扩展性等的验证,但绝不仅限于此。

  总之,每个阶段的每个交付产品必须通过正式的、训练有素的技术来对适当的属性进行评价和测试。





上一篇:游戏软件的测试方法简述
下一篇:软件测试的资质如何认证
[发帖际遇]: 蝴蝶 捡了钱没交公 金币 降了 3 (金) . 幸运榜 / 衰神榜
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

很有见地的探讨,先收藏着~
其实,很多情况下都是这样的,习惯就好。
其实,很多情况下都是这样的,习惯就好。
很有借鉴意义,先收藏了,谢谢楼主。
看起来不错
看起来好像不错的样子
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
very good.
路过的帮顶
其实,很多情况下都是这样的,习惯就好。
其实,很多情况下都是这样的,习惯就好。
看了LZ的帖子,我只想说一句很好很强大!
很有借鉴意义,先收藏了,谢谢楼主。
众里寻他千百度,蓦然回首在这里!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部