软件可靠性与安全性是一回事吗?
软件的可靠性和安全性不是一个概念。
可靠性是指:软件在开发过后,经过严格的各种软件测试之后,尽量、最大限度地保证其运行的稳定性(例如:不会动不动就产生崩溃现象),而安全性是指你的软件在使用上是绝对保证安全、没有带有任何病毒代码(例如:蠕虫等)的程序。
如果你的软件被病毒感染了,那么它就不是一个具有安全性的软件,因为病毒具有扩散性。
延伸阅读
怎么保证软件测试的可靠性和全面性?
我们在做一个开始实施测试之前,我们就需要尽量的要考虑到:
1.我们测试的对象是什么?
2.在什么环境下实施我们的测试工作?
3.我们的测试所要花费的时间、经费和资源(最好还是不要超出预算的为好,不然可能老板不支持我们的工作,反倒是个麻烦了!嘿嘿)?
4.制定的实施方案是否可行性?
5.制定的实施方案所担当的风险系数有多高?
6.是否还有更好的可降低风险的实施方案?
7.我们的测试工作以什么样的来衡量我们的工作成绩?(甚至是对工作的奖惩办法等)
8.是否有对于工作风险的控制方案。
9.工作中,任务交代的是否够清楚?以免让执行者随意瞎搞,导致对其测试工作不可控。10.项目成员对这个要测试的对象的理解程度有多深? 11.测试人员的组织和管理方案是否可靠? 等等… 而要验证我们的测试是否有较高的可靠性,我所想到有两点: 1.测试结果的可信性 2.测试后的软件可靠性 而对与软件测试的全面性这个问题,很容易让人想到从测试用例的覆盖率来表现。
信息的可靠性指的是什么?
软件信息的可靠有哪些内容?
一、对软件可靠性测试的认识 1。有关术语 (1)软件可靠性 在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故障。
(2)软件可靠性估计 应用统计技术处理在系统测试和运行期间采集、观察到的失效数据,以评估该软件的可靠性。 (3)软件可靠性测试 在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的功能测试。
需要说明的是,”使用代表性”指的是在统计意义下该环境能反映出软件的使用环境特性 。 2。软件可靠性测试的目的 软件可靠性测试的主要目的有: (1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。
(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。 3。软件可靠性测试的特点 软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它们的正常运行时间。
正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不断重复,不能用来估计软件可靠性。
软件可靠性测试强调按实际使用的概率分布随机选择输入,并强调测试需求的覆盖面。软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期识别。
测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。 此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要大于普通软件功能测试的要求。
对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。 4。软件可靠性测试的效果 软件可靠性测试是软件可靠性保证过程中非常关键的一步。
经过软件可靠性测试的软件并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失效,由此所造成的危害也小。
一个大型的工程软件没有错误是不可能的,至少理论上还不能证明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的错误。
这正是软件可靠性测试的目的之一。 软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更有效,所花的时间也更少。
另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性估计。 总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也不宜用于软件可靠性估计。
二、软件可靠性测试中需注意的问题 软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测试结果,编写测试报告。 制定测试方案时需要特别注意被测功能的识别和失效等级的定义。
制定测试计划时需设计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆盖问题。 1。功能识别 软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分布。
为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构策略等对软件运行方式有较大影响的因素。
第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分布应包括合法数据的概率分布和非法数据的概率分布两部分。
有时为了更好地反映实际使用状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。 2。定义换效等级 定义失效等级主要是为了解决下面两个问题: ·对发生概率小但失效后危害严重的功能需求的识别。
·对可不查找失效原因、并不做统计的功能需求的识别。 在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成协议。一般的等级定义如表所示。 @@16115000。GIF;表1 失效等级定义@@ 如果存在1级和2级失效可能性,那么就应该进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域、外部条件和发生的可能性。
对引起1级和2级失效的功能需求及其相关的输入域必须进行严格的强化测试。对引起3级失效的功能可按其发生概率选择测试实例。第4级失效可不查找原因,可在以后的版本中处理。 3。可靠性测试覆盖 可靠性测试必须保证输入覆盖和环境覆盖,这是准确估计软件可靠性的基础。
输入覆盖包括下面几个内容: ·输入域覆盖,即所有被测输入值域的发生概率之和必须大于软件可靠度的要求。 ·重要输入变量值的覆盖。 ·相关输入变量可能组合的覆盖,以确保相关输入变量的相互影响不会导致软件失效。
·设计输入空间与实际输入空间之间区域的覆盖,即不合法输入域的覆盖。 ·各种使用功能的覆盖。 环境覆盖是指测试时必须覆盖所有可能影响程序运行方式的条件。 三、软件可靠性测试的步骤 软件可靠性测试分为四个阶段: 1。
制订测试方案 本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率分布及需强化测试的功能。 以下是我们推荐的步骤。在一些特定的应用中,有的步骤并不是必须的。 (1)分析功能需求 分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法与不合法的两部分)。
分析时要注意下述问题: ·该软件是否存在不同的运行模式?如果存在,那么应列出所有的系统运行模式。 ·是否存在影响程序运行方式的外部条件?如果存在,那么有多少?它们的影响程度如何 ·各种功能需求之间是相互独立的还是相关的?如果相关,是密切相关还是部分相关?如果两种功能密切相关,那么可将两种功能合并为一种功能。
如果功能之间为部分相关,则需列出相应输入变量的合法组合。 (2)定义失效等级 判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域。
(3)确定概率分布 ·确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。 如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。 ·判断是否需要强化测试某些功能。
(4)整理概率分布的信息 将这些信息编码送入数据库。 2。制订测试计划 本阶段的目标是: (1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例预期的软件输出结果。
本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。 (2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测试实例。
另外,有时预测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。 总之,具体实施与被测应用软件的实际功能类型有关。 本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如嵌入式软件)则应完全一致。
测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和时间,以备以后核对。 4。编写测试报告 按软件可靠性估计的要求整理测试记录,并将结果写成报告。
笔者认为,软件可靠性测试的关键在于: ·对需求、输入、数据域的识别及相关概率分布的确定。 ·按照概率分布随机生成测试实例,并确定测试顺序。 据国外有关文献报导,这种测试方法已成功应用于大量应用软件的可靠性测试,包括一些商用软件和航空、航天电子设备中嵌入式软件的测试,其效果很好。
因此,我们有必要投入一定的人力、物力,针对我们的实际需要,有目的地对各类应用软件进行软件可靠性测试,从实践中逐步积累经验。同时需要软件开发方和使用方共同合作,进行软件可靠性测试方法的研究和有关支持工具的开发,促进我国软件可靠性水平的提高。
什么是软件的可靠性和可用性,二者有什么区别和联系?
通俗来说,可靠性是软件多长时间不出问题,可用性是出了问题BUG时能否继续使用功能
软件质量可靠性是什么因素影响的?
软件可靠性是关于软件能够够满足需求功能的性质,软件不能满足需求是因为软件中的差错引起了软件故障。软件中有哪些可能的差错呢? 软件差错是软件开发各阶段潜入的人为错误:
1.需求分析定义错误。如用户提出的需求不完整,用户需求的变更未及时消化,软件开发者和用户对需求的理解不同等等。
2.设计错误。如处理的结构和算法错误,缺乏对特殊情况和错误处理的考虑等。
3.编码错误。如语法错误,变量初始化错误等。
4.测试错误。如数据准备错误,测试用例错误等。
5.文档错误。如文档不齐全,文档相关内容不一致,文档版本不一致,缺乏完整性等。 从上游到下游,错误的影响是发散的,所以要尽量把错误消除在开发前期阶段。 错误引入软件的方式可归纳为两种特性:程序代码特性,开发过程特性。 程序代码一个最直观的特性是长度,另外还有算法和语句结构等,程序代码越长,结构越复杂,其可靠性越难保证。 开发过程特性包括采用的工程技术和使用的工具,也包括开发者个人的业务经历水平等。 除了软件可靠性外,影响可靠性的另一个重要因素是健壮性,对非法输入的容错能力。 所以提高可靠性从原理上看就是要减少错误和提高健壮性。(参考资料:CSDN博客)
软件的可靠性包括什么?
软件可靠性是指在指定条件下使用时,软件产品维持规定的性能级别的能力;针对软件可靠性中的容错性子特性应测试软件失效防护能力。
什么是软件体系结构的可靠性?
软件体系结构可靠性 (software reliability )是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。
规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,软件产品所必须具备的功能。软件可靠性不但与软件存在的缺陷和(或)差错有关,而且与系统输入和系统使用有关。软件可靠性的概率度量称软件可靠度。
软件可靠性计算?
在软件界针对可靠性有以下指标:
3 个 9:(1-99.9%)*365*24=8.76 小时,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 8.76 小时。
4 个 9:(1-99.99%)*365*24=0.876 小时=52.6 分钟,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 52.6 分钟。
5 个 9:(1-99.999%)*365*24*60=5.26 分钟,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 5.26 分钟。
稳定性测试的目标之一就是验证并辅助系统达到更高的指标。