软件缺陷因素及基本常识

2024-08-26 18:28

本文主要是介绍软件缺陷因素及基本常识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

缺陷的因素

测试常见的基本常识

测试是不完全的(测试不完全) 

测试具有免疫性(软件缺陷免疫性) 

测试是 “ 泛型概念 ” (全程测试) 

80-20 原则 

为效益而测试 

缺陷的必然性 

软件测试必须有预期结果 

软件测试的意义 - 事后分析 

结论 


软件开发和使用的历史已经留给了我们很多由于软件缺陷而导致的巨大财力、物力损失的经验教训。这些经验教训迫使我们这些测试工程师们必须采取强有力的检测措施来检测未发现的隐藏的软件缺陷。 

缺陷的因素

生产软件的最终目的是为了满足客户需求,我们以客户需求作为评判软件质量的标准,认为软件缺陷( Software Bug )的具体含义包括下面几个因素: 

软件未达到客户需求的功能和性能; 

软件超出客户需求的范围; 

软件出现客户需求不能容忍的错误; 

软件的使用未能符合客户的习惯和工作环境。 

考虑到设计等方面的因素,我们还可以认为软件缺陷还可以包括软件设计不符合规范,未能在特定的条件(资金、范围等)达到最佳等。可惜的是,我们中的很多人更倾向于把软件缺陷看成运行时出现问题上来,认为软件测试仅限于程序提交之后。 

在目前的国内环境下,我们几乎看不到完整准确的客户需求说明书,加以客户的需求时时在变,追求完美的测试变得不太可能。因此作为一个优异的测试人员,追求软件质量的完美固然是我们的宗旨,但是明确软件测试现实与理想的差距,在软件测试中学会取舍和让步,对软件测试是有百益而无一弊的。 

测试常见的基本常识

下面是一些软件测试的常识,对这些常识的理解和运用将有助于我们在进行软件测试时能够更好的把握软件测试的尺度。 

测试是不完全的(测试不完全) 

很显然,由于软件需求的不完整性、软件逻辑路径的组合性、输入数据的大量性及结果多样性等因素,哪怕是一个极其简单的程序,要想穷尽所有逻辑路径,所有输入数据和验证所有结果是非常困难的一件事情。我们举一个简单的例子,比如说求两个整数的最大公约数。其输入信息为两个正整数。但是如果我们将整个正整数域的数字进行一番测试的话,从其数目的无限性我们便可证明是这样的测试在实际生活中是行不通的,即便某一天我们能够穷尽该程序,只怕我们乃至我们的子孙都早已作古了。为此作为软件测试,我们一般采用等价类和边界值分析等措施来进行实际的软件测试,寻找最小用例集合成为我们精简测试复杂性的一条必经之道。 

测试具有免疫性(软件缺陷免疫性) 

软件缺陷与病毒一样具有可怕的 “ 免疫性 ” ,测试人员对其采用的测试越多,其免疫能力就越强,寻找更多软件缺陷就更加困难。由数学上的概率论我们可以推出这一结论。假设一个 50000 行的程序中有 500 个软件缺陷并且这些软件错误分布时均匀的,则每 100 行可以找到一个软件缺陷。我们假设测试人员用某种方法花在查找软件缺陷的精力为 X 小时 /100 行。照此推算,软件存在 500 个缺陷时,我们查找一个软件缺陷需要 X 小时,当软件只存在 5 个错误时,我们每查找一个软件缺陷需要 100X 小时。实践证明,实际的测试过程比上面的假设更为苛刻,为此我们必须更换不同的测试方式和测试数据。该例子还说明了在软件测试中采用单一的方法不能高效和完全的针对所有软件缺陷,因此软件测试应该尽可能的多采用多种途径进行测试。 

测试是 “ 泛型概念 ” (全程测试) 

我一直反对软件测试仅存在于程序完成之后。如果单纯的只将程序设计阶段后的阶段称之为软件测试的话,需求阶段和设计阶段的缺陷产生的放大效应会加大。这非常不利于保证软件质量。需求缺陷、设计缺陷也是软件缺陷,记住 “ 软件缺陷具有生育能力 ” 。软件测试应该跨越整个软件开发流程。需求验证(自检)和设计验证(自检)也可以算作软件测试(建议称为:需求测试和设计测试)的一种。软件测试应该是一个泛型概念,涵盖整个软件生命周期,这样才能确保周期的每个阶段禁得起考验。同时测试本身也需要有第三者进行评估(信息系统审计和软件工程监理),即测试本身也应当被测试,从而确保测试自身的可靠性和高效性。否则自身不正,难以服人。 

另外还需指出的是软件测试是提高软件产品质量的必要条件而非充分条件,软件测试是提高产品质量最直接、最快捷的手段,但决不是一个根本手段。 

80-20 原则 

80% 的软件缺陷常常生存在软件 20% 的空间里。这个原则告诉我们,如果你想使软件测试有效地话,记住常常光临其高危多发 “ 地段 ” 。在那里发现软件缺陷的可能性会大的多。这一原则对于软件测试人员提高测试效率及缺陷发现率有着重大的意义。聪明的测试人员会根据这个原则很快找出较多的缺陷而愚蠢的测试人员却仍在漫无目的地到处搜寻。 

80-20 原则的另外一种情况是,我们在系统分析、系统设计、系统实现阶段的复审,测试工作中能够发现和避免 80% 的软件缺陷,此后的系统测试能够帮助我们找出剩余缺陷中的 80% ,最后的 5% 的软件缺陷可能只有在系统交付使用后用户经过大范围、长时间使用后才会曝露出来。因为软件测试只能够保证尽可能多地发现软件缺陷,却无法保证能够发现所有的软件缺陷。 

80-20 原则还能反映到软件测试的自动化方面上来,实践证明 80% 的软件缺陷可以借助人工测试而发现, 20% 的软件缺陷可以借助自动化测试能够得以发现。由于这二者间具有交叉的部分,因此尚有 5% 左右的软件缺陷需要通过其他方式进行发现和修正。 

为效益而测试 

为什么我们要实施软件测试,是为了提高项目的质量效益最终以提高项目的总体效益。为此我们不难得出我们在实施软件测试应该掌握的度。软件测试应该在软件测试成本和软件质量效益两者间找到一个平衡点。这个平衡点就是我们在实施软件测试时应该遵守的度。单方面的追求都必然损害软件测试存在的价值和意义。一般说来,在软件测试中我们应该尽量地保持软件测试简单性,切勿将软件测试过度复杂化,拿物理学家爱因斯坦的话说就是: Keep it simple but not too simple 。 

缺陷的必然性 

软件测试中,由于错误的关联性,并不是所有的软件缺陷都能够得以修复。某些软件缺陷虽然能够得以修复但在修复的过程中我们会难免引入新的软件缺陷。很多软件缺陷之间是相互矛盾的,一个矛盾的消失必然会引发另外一个矛盾的产生。比如我们在解决通用性的缺陷后往往会带来执行效率上的缺陷。更何况在缺陷的修复过程中,我们常常还会受时间、成本等方面的限制因此无法有效、完整地修复所有的软件缺陷。因此评估软件缺陷的重要度、影响范围,选择一个折中的方案或是从非软件的因素(比如提升硬件性能)考虑软件缺陷成为我们在面对软件缺陷时一个必须直面的事实。 

软件测试必须有预期结果 

没有预期结果的测试是不可理喻的。软件缺陷是经过对比而得出来的。这正如没有标准无法进行度量一样。如果我们事先不知道或是无法肯定预期的结果,我们必然无法了解测试正确性。这很容易然人感觉如盲人摸象一般,不少测试人员常常凭借自身的感觉去评判软件缺陷的发生,其结果往往是把似是而非的东西作为正确的结果来判断,因此常常出现误测的现象。 

软件测试的意义 - 事后分析 

软件测试的目的单单是发现缺陷这么简单吗?如果是 “ 是 ” 的话,我敢保证,类似的软件缺陷在下一次新项目的软件测试中还会发生。古语说得好, “ 不知道历史的人必然会重蹈覆辙 ” 。没有对软件测试结果进行认真的分析,我们就无法了解缺陷发生的原因和应对措施,结果是我们不得不耗费的大量的人力和物力来再次查找软件缺陷。很可惜,目前大多测试团队都没有意识到这一点,测试报告中缺乏测试结果分析这一环节。 

结论 

软件测试是一个需要 “ 自觉 ” 的过程,作为一个测试人员,遇事沉着,把持尺度,从根本上应对软件测试有着正确的认识!,希望本文对读者对软件测试的认识有所帮助。             

这篇关于软件缺陷因素及基本常识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109336

相关文章

一个图形引擎的画面风格是由那些因素(技术)决定的?

可能很多人第一直覺會認為shader決定了視覺風格,但我認為可以從多個方面去考慮。 1. 幾何模型 一個畫面由多個成分組成,最基本的應該是其結構,在圖形學中通常稱為幾何模型。 一些引擎,如Quake/UE,有比較強的Brush建模功能(或應稱作CSG),製作建築比較方便。而CE則有較強的大型地表、植被、水體等功能,做室外自然環境十分出色。而另一些遊戲類型專用的引擎,例

影响时延抖动的因素

影响时延抖动的因素主要包括排队时延、可变的分组大小和IP网络路由状态频繁变化。‌ ‌排队时延‌:当数据包通过路由器或交换机等网络设备时,如果设备处理能力不足,数据包需要在队列中等待处理,这会消耗一定的时间,从而导致排队时延。这种时延的不确定性是时延抖动的一个重要来源。   ‌可变的分组大小‌:数据包的传输时间不仅与数据包的大小有关,还与网络设备的处理能力、传输介质的特性等因素有关。当数据包大

用于资产定价的FAFA三因素模型的案例实现

一:FAFA三因素模型的介绍 FAFA三因素模型,即Fama-French三因子模型,是在1992年提出的资产定价模型。该模型是对传统的资本资产定价模型(CAPM)的扩展,它认为除了市场风险之外,还有其他两个因素对股票的预期收益率有重要影响,这两个因素是公司规模(Size)和账面市值比(Book-to-Market Ratio)。 Fama-French三因子模型的核心观点是,投资者在承担额外

影响关键词排名稳定的因素有哪些?

网站上线了很久关键词还是没有出现排名,很多站长都非常关心这个问题,为什么我正常优化的网站就是没有排名呢?下面,曾庆平SEO为大家分析一下影响关键词排名的因素有哪些,快看一下自己的网站是不是出现了以下问题。 一、网站内部结构 首先网站一定要充分考虑两个方面,一个是用户,一个就是搜索引擎。 (1)用户喜欢什么样的网站?网站主题是不是够明确?用户在进入网站后如果在几秒内看不懂网站的主题就会退

当生产力不再是决定因素之后

大家好,我是阿赵。   我的父亲今年已经70岁了,按道理早就到了退休的年龄。但他到现在,还在工作,他在一个偏僻的山区租了一个农场,在种树。这个工作他是在50多岁的时候开始做的,一干就是十几年。他总和我说,他出产的产品,各方面的质量都很好,肯定能赚钱。结果十几年过去了,基本上也没赚到什么钱。   我父亲那一代人,正是生长于改革开放的春风。当时只要你有生产力,敢脱离国有单位下海创业,基本上都能赚到

话费充值API接口的关键步骤与考虑因素

话费充值API接口通常是由电信运营商或第三方支付平台提供的一种服务,允许开发者将话费充值功能集成到自己的应用程序或网站中。通过这种接口,用户可以方便地为他们的手机账户充值。以下是实现话费充值API接口可能涉及的一些关键步骤和考虑因素: 关键步骤: 选择服务提供商:选择一个可靠的话费充值API服务提供商,这可能是电信运营商本身或是一个信誉良好的第三方服务提供商。注册和认证:在选定的服务提供商

影响金融市场主要因素总结

影响我国金融市场运行的主要因素有很多,主要可以从经济因素、法律因素、市场因素、技术因素、心理因素、体制和管理因素以及其他因素等几个方面进行总结 1. 经济因素(最重要) 影响机制: 经济因素是影响金融市场运行的最重要因素,主要包括宏观经济运行状况、宏观经济政策以及国际经济环境。 宏观经济运行: 如国内生产总值(GDP)、经济周期(复苏、繁荣、衰退、萧条)、通货膨胀与利率、汇率和国际资本流动等

V---机器视觉图像误判产生的因素

1.环境光 (1)图像传感器周围的光照产生的影响; (2)外接的强光产生的影响,造成图像的差异; 2.产品的个体差异 (1)产品批次变更; (2)测试时使用的样品和实际生产的产品的制作环境不同,实际生产产品有细微差异,造成干扰。 3.产品来料位置不同造成的差异 (1)假如产品移动到图像传感器视野的角落时,可能会产生形变,形变的差异造成误判。 (2)假如产品移动到图像传感器视野的不同

初学者深度学习搭建网络容易出错的‘大因素’

1.网络输出与监督信号的尺寸应该匹配 如果你的输出是128*128*10的结果,那么你的监督信号也应该是128*128*10 如果你的监督信号是128*128*1,但是最后一个维度是整数,比如[1,10,2,3,1,1,1...]但是你的输出是128*128*10,那你可以考虑使用sparse 损失函数。categorical_sparse_crossentropy   2.监督信号应注意

叶斯神经网络(BNN)在训练过程中损失函数不收敛或跳动剧烈可能是由多种因素

贝叶斯神经网络(BNN)在训练过程中损失函数不收敛或跳动剧烈可能是由多种因素引起的,以下是一些可能的原因和相应的解决方案: 学习率设置不当:过高的学习率可能导致损失函数在优化过程中震荡不收敛,而过低的学习率则可能导致收敛速度过慢。可以尝试使用学习率衰减策略,或者根据任务和数据集的特点设置合适的学习率。 数据问题:数据集中的噪声、异常值或不均匀的分布可能会导致模型的损失函数上升。此外,如果训练