什么是软件测试(摘录)

by:授客 QQ:1033553122

IEEE 标准的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。对软件测试还有一些不同的定义。

G.J.Myers给出的定义:“程序测试是为了发现错误而执行程序的过程”。这个定义被软件测试业界所认可,并经常被引用。但实际上,这样的定义还不能完全反映软件测试的内涵,它仍局限于“程序测试”。随后,G.J.Myers进一步提出了有关程序测试的3个重要观点,那就是:

(1)测试是为了证明程序有错,而不是证明程序无错误。

(2)一个好的测试用例在于它能发现至今未发现的错误。

(3)一个成功的测试是发现了至今未发现的错误的测试。

要完整地理解软件测试,就要从不同方面和视角去辨证地审视软件测试。概括起来,软件测试就是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中存在的各种问题—与用户需求、预先的定义不一致的地方。

1.软件测试的侠义观点和广义观点

G.J.Myers给出了测试定义—“程序测试是为了发现错误而执行程序的过程”,实际上这是一个狭义的概念,因为他认为测试是执行程序的过程,也就是传统意义上的测试—在代码完成后,通过运行程序来发现程序代码或软件系统中错误。但是,这种意义上的测试是不能在代码完成之前发现软件系统需求及设计上的问题的,把需求、发现设计上的问题遗留到后期—最 终在代码中体现出来,这样就可能会造成设计、编程的部分或全部返工。需求阶段和设计阶段的缺陷在开发过程中会产生扩大效应,缺陷的严重性随时间发展越来越 严重,其结果会大大增加软件开发的成本、延长开发的周期等。这种狭义的观点主要是受软件开发瀑布模型的影响,而且非常不利于保证软件质量。

延伸后的软件测试,被认为是软件测试的一种广义概念。这就引出了广义的软件测试的两个概念“静态测试”和“动态测试”。这样,静态测试和动态测试就构成了一个全过程的、完整的软件测试,而且静态测试显得更为重要。

说明:静态测试的主要活动是评审,即通过对需求、设计、配置、程序和其他各类文档的审查来检验相应的内容是否满足用户的需求。由于静态测试不需要运行程序,所以测试对象是属于静态的.

动态测试通过运行程序来发现软件系统中的问题,在程序运行过程中发现缺陷,它具有动态性。

2.软件测试的辨证观点

G.J.Myers的第2个观点是“测试是为了证明程序有错,而不是证明程序无错误”,引出了软件测试的另外一个争论:

软件测试究竟是证明所有软件的功能特性是正确的,还是相反—对软件系统进行各种试探和攻击,找出软件系统中不正常或不工作的地方,就我个人理解,这两个方面都有一定道理,前者(证明或验证所有软件的功能特性是正确的)是从质量保证的角度来思考软件测试,后者(证明程序有错)从软件测试的直接目标和测试效率来思考,两者应该相辅相成。在后者的思想背景下,可以认为测试不是为了证明所有的功能都能正常工作,恰恰相反,测试就是为了找出那些不能正常工作、不一致性的问题,也就是说,测试的工作就是发现缺陷(detect bug ),即在软件开发过程中,分析、设计与编码等工作都是建设性的,唯独测试带有“破坏性”, 它想方设法发现软件所存在的问题。软件测试就是在这两者之间获得平衡,但对于不同的应用领域,两者的比重是不一样的。例如,国防、航天、银行等软件系统, 承受不了系统的任何一次失效,因为任何失效都完全有可能导致灾难性的损失,所以强调前者,以保证非常高的软件质量。而一般的软件应用或服务,则可以强调后 者,质量目标设置在“用户可接受水平”,以降低软件开发成本,加快软件发布速度,有利于市场的扩张。

(1)验证软件是“工作的”,以正向思维方式,针对软件系统的所有功能点,逐个验证其正确性。

(2)证明软件是“不工作的”,以反向思维方式,不断思考开发人员理解的误区、不良的习惯、程序代码的边界、无效数据的输入及系统的弱点.试图破坏系统、摧毁系统,目标就是发现系统中各种各样的问题。其代表人物就是上面多次提到的G.J.Myers。他强调,一个成功的测试必须是发现缺陷的测试,不然就没有价值。

 

3.软件测试的风险观点

测试被定义为“对软件系统中潜在的各种风险进行评估的活动”,这就引出软件测试的风险观点。软件测试自身的风险性是大家公认的,测试的覆盖率不能做到100%;另 外一方面,软件测试的标准有时不清楚,软件规格说明书是测试中的一个标准,但也不是唯一的标准。因为规格说明书本身的内容完全有可能是错误的,它所定义的 国内特性不是用户所需要的。所以,我们常常强调软件测试人员应该站在客户的角度去进行测试,除了发现程序中的错误,还要发现需求定义的错误、设计规格说明 书的缺陷。但是,测试在大多数时间/情况下是由工程师完成的,而不是客户自己来做,所以又怎么能保证工程师和客户想得一样呢?

有人把开发比作打靶,目标明确,就是按照设计规格说明书去实现系统的功能。而把测试比作捞鱼,目标不明确,自己判断哪些地方鱼多,就去哪些地方捞:如果只捞大鱼(严重缺陷),网眼就可以大些、撒网区域相对比较集中(测试点集中在主要功能上)。如果想把大大小小的鱼都捞上来,网眼就要小,普遍撒网,不放过任何一块区域(测试点遍及所有功能)。

在“风险”观点的框架下,软件测试可以被看作是一个动态的监控过程,对软件开发全过程进行检测,随时发现不健康的征兆,发现问题、报告问题,并重新评估新的风险,设置新的监控基准,不断地持续下去,包括回归测试。这时,软件测试完全可以看作是软件质量控制的过程。

对应这种观点,产生基于风险的测试策略,首先评估测试的风险,每个功能出问题的概率有多大?根据Pareto原则(也叫80/20原则),哪些功能是用户最常用的功能(约占20%)?如果某个功能出问题,其对用户的影响又有多大?然后根据风险大小确定测试的优先级。优先级高的功能特性,测试优先得到执行。一般来讲,针对用户最常用的这20%功能(优先级高)的测试会得到完全地、充分地执行,而低优先级功能的测试(用户不常用的功能,约占80% )就可能由于时间或经费的限制,降低测试的要求、减少测试工作最,这样做风险性并不是很大。

4.软件测试的经济学观点

一个好的测试用例在于它能发现至今未发现的错误”, 这体现了软件测试的经济学观点。实际上,软件测试经济学问题至今仍是业界关注的问题之一。经济学的核心就是要盈利,盈利的基础就是要有一个清楚的商业性目 标。同样,商业性目标是否正确,直接决定了企业是否盈利。在多数情况下,软件测试是在公司内执行的。正是公司的行为目的,决定了软件测试含义或定义经济性 的一面。正如对软件质最的定义不仅仅局限于“和客户需求的一致性、适用性”,而且要增加其他的要求—“开发成本控制在预算内、按时发布软件、系统易于维护”等。

软件测试也一样,要尽快尽早地发现更多的缺陷,并督促和帮助开发人员修正缺陷。原因很简单,缺陷发现得越早,所付出的代价就越低,例如在编程阶段发现一个需求定义上的错误,其代价将10倍于在需求阶段就发现该缺陷的代价。这就是从经济学的观点来说明测试进行得越早越好这样一个道理。

5.软件测试的标准观点

从标准观点来看,可以定义为“验证”和“有效性确认”活动够成的整体,即软件测试=V&V

验证”是检验软件是否已正确地实现了软件需求规格说明书所定义的系统功能和特性。验证过程提供证据表明软件相关产品与所有生命周期活动的要求(如正确性、完整性、一致性、准确性等)一致。相当于以软件产品设计规格说明书为标准进行软件测试的活动。

 “有效性确认”是确认所开发的软件是否满足用户真正需求的活动。一切从客户出发,理解客户的需求,并对软件需求定义和设计存疑,以发现需求定义和产品设计中的问题。主要通过各种软件评审活动来实现,保证让客户参加评审和测试活动。

当然,软件测试的对象是产品(包括阶段性产品,如市场需求说明书、产品规格说明书、技术设计文档、数据字典、程序包、用户文档等),而质量保证和管理的对象集中于软件开发的标准、流程和方法等上。

转载于:https://www.cnblogs.com/shouke/p/10158347.html

测试思想 什么是软件测试(摘录)相关推荐

  1. 软件测试工程师进阶之路|分析测试现状、测试知识、测试思想

    注:本文来源: 方水泉  <  软件测试工程师进阶之路|分析测试现状.测试知识.测试思想  > 目前,很多机构天天吹嘘测试多么好,工资多么高,但从我多年的从业经历来看,测试这条路的瓶颈非常 ...

  2. 测试软件测试赢在测试2:中国软件测试专家访谈录

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 赢在测试2:中国软件测试专家访谈录(品专家脚印悟测试真理本书已在台湾发行) 蔡为东著 ISBN 978-7-121-20066-3 ...

  3. 刚入行的测试工程师如何自学软件测试【下篇】-- 软实力

    子曾经曰过:"这个bug在测试环境中没有啊!" 大家好,我是Dzreal,工作三年的测试开发工程师.曾经在作业帮.贝壳找房工作. 上篇谈到了测试开发具备的一些硬实力:测试思想 . ...

  4. 最全APP测试思想及流程要点,高薪测试人员一定要看

    App已经渗透到每个人的生活.娱乐.学习.工作当中,APP作为现如今几乎最广泛的应用程序,在所有的移动平台上都有应用,并且以极高的速度增长.但是作为程序而言,出现的时间并不是非常久.很多原有的软件测试 ...

  5. 赢在测试2:中国软件测试专家访谈录

    赢在测试2:中国软件测试专家访谈录(品专家足迹 悟测试真谛 本书已在台湾发行) 蔡为东 著 ISBN 978-7-121-20066-3 2013年5月出版 定价:59.00元 280页 16开 编辑 ...

  6. 华为6年经验测试工程师,做软件测试的一些感悟

    不知不觉已经从事软件测试六年了,从毕业到进入外包公司外包给微软做软件测试, 到现在加入著名的外企.六年的时间过得真快.长期的测试工作也让我对软件测试有了比较深入的认识.我就跟大家分享一下我做测试的心得 ...

  7. BDD课题研究之测试思想和方法总结(一)

    BDD课题研究之测试思想和方法总结 前段时间和文朗做了BDD课题的研究,现将部分总结报告发出来与大家共享,欢迎指正批评,欢迎交流经验. 此次研究的课题是BDD,主要涉及两个方面:测试的思想和方法.技术 ...

  8. 一组经典测试思想观点

    一组经典测试思想观点    测试是不可能穷尽的,当测试出口条件满足时就可以停止测试     有测试大师说测试是为了发现错误,一个好的测试是发现以前没有发现的错误.但是这个要求可能会使人走入极端.其实, ...

  9. 【软件质量保证与测试】2.4软件测试与软件开发的关系

    文章目录 1. 软件测试与软件开发过程关系概述 2. 软件测试在软件开发生命周期中的位置 2.1 软件开发生命周期 2.1.1 软件规划阶段测试 2.1.2 软件设计阶段测试 2.1.3 软件开发阶段 ...

最新文章

  1. Linux性能挖潜的隐藏招数:内核CPU亲和性参数调整
  2. php注册程序,[PHP初级]手把手教你写注册程序 1
  3. 综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)
  4. react中axios的二次封装
  5. 腾达W303R v3 无线路由器使用移动光纤无法打开视频的设置方法
  6. JdbcTemplate(操作数据库-添加功能)
  7. HTML网页使用CDN的jquery.qrcode.min.js生成页面二维码(直接可以复制使用)
  8. python 人数取整_在python中如何取整到10的最高倍数?
  9. HDU 4278 卡特兰,区间DP
  10. 大学英语综合教程三 Unit 3 课文内容英译中 中英翻译
  11. linux正则表达式大全,正则表达式,正则表达式语法大全
  12. 蔡学镛 java,Java该何去何从思考
  13. redis集群scan_RedisCluster的scan命令
  14. 打造一款可靠的WAF(Web应用防火墙)
  15. 透过全球首个知识增强千亿大模型,看到中国AI差异化发展之路
  16. python-图片颜色转换-将红绿两色互换
  17. Transactional(事务)
  18. 【MySQL】格式化时间戳以及时间格式
  19. 锐捷设备设置console和enable密码
  20. 画论22 韩拙《山水纯全集》

热门文章

  1. usr share里没有mysql_无法在ubuntu 12.04上安装mysql,找不到消息文件’/usr/share/mysql/errmsg.sys’...
  2. 参加java培训,要避免这几个误区!
  3. 学Python的好处有哪些?
  4. 深入解析:TRUNCATE TABLE 的内部原理解析与恢复思路
  5. 移动应用AI化成新战场?详解苹果最新Core ML模型构建基于机器学习的智能应用...
  6. 34补1-2_3 HA Cluster基础及heartbeat实现HA
  7. 开源 免费 java CMS - FreeCMS1.9 全文检索
  8. DIY强大的虚拟化环境-技术可行性部分
  9. 【物联网中间件平台-01】真正面向物联网的组态软件 YFIOs和YFHMI的前生今世
  10. HP c3000/c7000 blade switch GBE2c 初始配置