可靠性定义为在特定环境中指定时间段内无故障软件运行的概率。
执行可靠性测试是为了确保软件是可靠的,它满足其目的,在给定的环境中指定的时间量,并能够呈现无故障运行。
在这个机械化的世界里,现在人们盲目地相信任何软件。无论软件系统显示出什么结果,人们都相信该软件将永远是正确的。事实上,这是我们所有人都犯的一个常见错误。
用户认为显示的数据是正确的,软件将始终正确运行。这就是需要进行可靠性测试的地方。
根据 ANSI,软件可靠性定义为在特定环境中指定时间段内软件无故障运行的概率。
如果软件产品在特定环境中以无故障方式运行特定时间段,则称为可靠软件。
软件可靠性将减少软件开发过程中的故障。在电子设备或机械仪器中,软件不可能有“磨损”,这里的“磨损”只是由于软件系统中的“缺陷”或“错误”而发生。
在当今世界,软件应用程序正被用于我们生活的方方面面,包括医疗保健、政府部门、电信等。
因此,我们需要有用户可以依赖的准确数据。可靠性测试涉及软件的质量和产品的标准化。如果我们能够重复测试用例,并且如果我们始终获得相同的输出,那么我们就说该产品是“可靠的”。
执行可靠性测试是为了确保软件在给定环境中的指定时间内是可靠的,满足其目的,并且能够呈现无故障运行。
以下是我们使用此测试的场景:
找出系统中存在的故障及其背后的原因。
确保系统质量。
测试用例的设计方式应确保软件的全面覆盖。测试用例应该定期执行,以便我们可以交叉检查当前结果和以前的结果,并验证它们之间是否有任何差异。如果它显示相同或相似的结果,则可以认为该软件是可靠的。
此外,我们可以通过在特定时间段内执行测试用例来测试可靠性,并检查它是否在该特定时间段后正确显示结果而没有任何故障。在进行可靠性测试时,我们必须检查内存泄漏、电池电量不足、网络不足、数据库错误等环境限制。
下面列出了一些衡量软件可靠性的基本类型。
考虑以下我们正在测试功能的情况,比如说在上午 9:30 并在下午 1 点再次测试相同的功能。稍后,我们比较两个结果。我们在结果中得到了高度的相关性。然后我们可以说测试是“可靠的”。通常,0.8 或更高的可靠性意味着系统可以被认为是高度可靠的产品。
在这里,非常重要的是要注意,如果我们在一个测试用例中有 10 个步骤,则测试的长度保持不变,那么下次执行测试的步骤数将保持不变。

考虑参加“智商测试”并获得 144 分的人的特定示例。6 个月后,他参加了同样的“智商测试”,得到 68 分。在这种情况下,他不能被视为“可靠”的来源。
之所以这样称呼,是因为测试人员同时以两种形式进行测试。

Inter-Rater Reliability 也称为 Inter-Observer 或 Inter-Coder Reliability。它是一种特殊类型的可靠性,由多个评估者或法官组成。它处理不同评级者/观察者提出的评级的一致性。

例如,考虑参加歌唱比赛并从多个评委那里获得 9、8、9(满分 10)分的参赛者。这个分数可以被认为是“可靠的”,因为它们相当一致。但是,如果他的得分是 9、3、7(满分 10),那么它就不能被认为是“可靠的”。
注意:这些评分将在很大程度上取决于不同评委/评分者之间的普遍共识。一旦你完成了一系列观察,那么你就可以确定分数之间存在某种稳定性,并且在那段时间之后,我们可以说它们是一致的。
因此,评分稳定性是对多个观察者的衡量。值得注意的是,在讨论评估者间的可靠性时,观察者的技能也起着重要作用。为了提高评估者间的可靠性,评估者需要培训或适当的指导。

考虑上面的 Excel 表,查看两个不同的评分者 Rater1 和 Rater2 对 12 个不同项目的评分。评分者 1 已在评分板上独立评分。在这里,使用记分板,我们现在将计算两个评分者之间的一致性百分比。这称为两个评分者之间的评分者间可靠性或评分者间一致性。
在第三列中,如果评分者给出的分数匹配,我们将输入“1”。如果分数匹配,我们将给出“0”。之后,我们将在列中找到数字“1”和“0”。这里是 8。
‘1’的数量=8
项目总数=12
同意百分比 = (8/12) *100 =67%。67% 不算多。评分者需要有更多的共识,以便他们可以相应地讨论和改进结果。
下面讨论了各种类型的可靠性测试以供您参考:
此测试确定适用性,即它测试应用程序是否按预期用途执行。在这里,它将检查应用程序的互操作性,以测试它与其他组件以及与应用程序交互的系统。
它确保了系统在 Beta 测试期间检查是否没有发现错误的准确性。
除此之外,它还测试某种安全性和合规性。安全测试与防止有意或无意地未经授权访问应用程序有关。在合规性方面,我们将检查应用程序是否遵循某些标准,例如标准、规则等。
负载测试将检查系统与竞争系统或性能相比的性能。它还基于正在使用系统的并发用户数以及系统对用户的行为。
系统必须以更短的响应时间(例如 5 秒)响应用户命令并满足用户的期望。
在回归测试中,我们将检查系统是否运行良好,以及是否没有由于在软件中添加新功能而引入错误。当错误已修复并且测试人员需要再次测试时,也会执行此操作。
在 SDLC(软件开发生命周期)的不同阶段,用户可能会提出许多关于产品未来的问题,例如“它们是否可靠”。对于这些问题,我们需要有一个明确的解决方案。通过适当的模型,我们可以预测产品。
两种类型的模型包括:
预测模型
估计模型
在预测测试中,我们使用历史数据、统计数据以及机器和学习来预测结果。我们只需要写一份报告。在预测模型中,我们只能得到一些历史信息。使用此信息,我们可以构建散点图并绘制现有历史数据的外推线,我们可以预测即将到来的数据。
这种类型的模型在开发或测试阶段本身之前执行。在 Estimation Testing 中,除了使用历史数据外,我们还会使用当前数据。在这里,我们可以预测产品在当前或未来时间的可靠性。这种类型的测试在软件开发生命周期的最后阶段执行。
测试人员需要确定软件的可靠性估计。这将导致在软件可靠性中使用各种工具。
检测故障信息。
选择正确的模型来对软件进行预测。
生成有关故障的报告。
市场上有各种用于测量软件可靠性的工具,其中一些工具如下所述:
CASRE(计算机辅助软件可靠性评估工具):这不是免费软件,我们需要购买它。
CASRE 可靠性测量工具基于现有的可靠性模型构建,有助于更好地估计软件产品的可靠性。该工具的 GUI 提供了对软件可靠性的更好理解,并且非常易于使用。
在测试过程中,它可以帮助用户在使用一组故障数据时了解系统的可靠性是在增加还是减少。Carse 通过绘制失败次数与测试间隔时间的关系来提供 2D 视图,因此用户可以获得表示系统的图表,如下图所示。

用户可以选择故障数据。
指定未来多远,我们想要预测产品的可靠性。
选择可靠性模型。
为结果选择合适的模型。
打印失败结果。
将结果保存到磁盘。
其他用于测试可靠性的工具包括 SOFTREL、SoRel(软件可靠性分析和预测)、WEIBULL++ 等。
与其他形式的测试相比,可靠性测试的成本很高。因此,为了经济高效地进行测试,我们需要有一个适当的测试计划和测试管理。
在 SDLC 中,可靠性测试起着重要的作用。如上所述,使用可靠性指标将为软件带来可靠性并预测软件的未来。很多时候,如果软件的复杂度很高,软件的可靠性就很难获得。
| 本文 | https://www.jiagoushi.pro/what-reliability-testing-definition-method-and-tools | |
| 讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】 | ||
| 公众号 | 【jiagoushipro】 【超级架构师】 精彩图文详解架构方法论,架构实践,技术原理,技术趋势。 我们在等你,赶快扫描关注吧。 | ![]() |
| 微信小号 | 【ca_cea】 50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化. |
|
| QQ群 | 【792862318】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。 加QQ群,有珍贵的报告和干货资料分享。 |
|
| 视频号 | 【超级架构师】 1分钟快速了解架构相关的基本概念,模型,方法,经验。 每天1分钟,架构心中熟。 |
|
| 知识星球 | 【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。 |
|
| 喜马拉雅 | 【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。 | 【智能时刻,架构君和你聊黑科技】 |
| 知识星球 | 认识更多朋友,职场和技术闲聊。 | 知识星球【职场和技术】 |
| 微博 | 【超级架构师】 | 智能时刻 |
| 哔哩哔哩 | 【超级架构师】 |
|
| 抖音 | 【cea_cio】超级架构师 |
|
| 快手 | 【cea_cio_cto】超级架构师 |
|
| 小红书 | 【cea_csa_cto】超级架构师 |
|
| 网站 | CIO(首席信息官) | https://cio.ceo |
| CIO,CTO和CDO | https://cioctocdo.com | |
| 应用开发和开发平台 | https://apaas.dev | |
| 开发信息网 | https://xinxi.dev | |
| 首席架构师社区 | https://jiagoushi.pro | |
| 超级架构师 | https://jiagou.dev | |
| 企业技术培训 | https://peixun.dev | |
谢谢大家关注,转发,点赞和点在看。
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返