怎么定义软件故障?_第2页回答

2021-06-03 18:22发布

13条回答
aijingda
1楼 · 2021-06-04 09:44.采纳回答

      软件故障一般是指由于不当使用计算机软件而引起的故障,以及因系 统或系统参数的设置不当而出现的故障。软件故障一般是可以恢复 的,但一定要注意,某些情况下有的软件故障也可以转化为硬件故障。 常见的软件故障有如下一些表现。 

1、当软件的版本与运行环境的配置不兼容时,造成软件不能运行、 系统死机、文件丢失或被改动。 

2、两种或多种软件程序的运行环境、存取区域或工作地址等发生 冲突,造成系统工作混乱。

3、由于误操作而运行了具有破坏性的程序、不正确或不兼容的程 序、磁盘操作程序、性能测试程序使文件丢失、磁盘格式化等。

4、计算机病毒引起的故障。

5、基本的 CMOS 芯片设置、系统引导过程配置和系统命令配置的 参数设置不正确或者没有设置,计算机也会产生操作故障。

flame
2楼 · 2021-06-07 14:37
要弄清什么是软件故障,就要知道什么是软件,软件故障就是软件方面出现的问题.下面就是软件的概念.

对于计算机软件的概念。面在尚无一个统一的定义。世界上多数国家和国际组织原则上采用了世界知识产权组织(WIPO)的意见。结合实际加以修改。1978年世界知识产权组织发表了《保护计算机软件示范法条》这是该组织召集一些国家的专家组成专门小组研究制定的,其目的是为了对各国计算机软件立法提供参考意见,以便促进计算机软件的国际保护。在这一示范法条中。对计算机软件作了如下定义:计算机软件包括程序,程序说明和程序使用指导三项内容。“程序”是指在一计算机可读介质合为一体后,能够使计算机具有信息处理能力,以标志一定功能。完成一定任务或产生一定结果的指令集合。“程序说明”是指用文字。图解或其他方式。对计算机程序中的指令所作的足够详细的,足够完整的说明,解释。“程序使用指导”是指除了程序,程序说明以外的。用以帮助理解和实施有关程序的其他辅助材料。 

在上述定义中,对“程序”的定义不够准确,按照这一定义,源程序(以高级计算机评议编写的程序)可能会被排除在“计算机软件”之外。因此各国在参考这一定义时,大多数都将“在与计算机可读介质合为一体后”这一条件删除,这样就可以明确无误地将源程序列入出境“计算机程序”之中了。 

由于计算机软件产品的开发工作量大,开发成本高。面复制软件却极容易且费用低。因此,如何对计算机软件这一崭新形式的智力劳动成果给予保护,以保护软件开发商的应得利益和持续不断对软件开发投入的积极性,推动计算机技术的不断发展,已成为摆在当今世界各国政府面前的一个重要问题。目前,对计算机软件的保护还没有一个专门的法律,绝大多数国家对计算机软件的保护规定大都散见于版权法,专利法,商标法,
danganddang999
3楼 · 2021-08-18 18:14

软件故障:软件运行过程中出现的不希望或不可接收的内部状态。是动态行为。

果果宝贝
4楼 · 2021-10-19 10:51


部分故障是指当系统的某些功能(但不是全部)被破坏时发生的故障。表面上一切看起来都很好,但在表面下,事情可能会出现大规模错误。

当发生部分故障时,通常需要很长时间才能检测到事件。与此相反,一个遭受完全故障的进程可以被现有机制快速识别、重新启动或修复,从而限制故障影响。

因为表面上一切看起来都很好,传统的故障检测器或使用外部探针或监控统计的watchdog可能无法发现问题。今天的论文选择在NSDI'20为作者赢得了最佳论文奖。它包含对部分故障原因的研究,以及使用系统特定的、自动生成的watchdog进行故障检测的新方法。

部分故障特征
在设计一个更好的检测部分故障的系统之前,作者通过对五个软件系统(ZooKeeper、Cassandra、HDFS、Apache和Mesos)的研究,开始了解它们的性质和原因。对于这些系统中的每一个,他们都会对bug数据库进行爬网以找到关键问题,然后从这些问题中随机抽取样本,直到收集到每个系统的20个真正的部分故障案例。



以下是主要发现:

  • 在每个系统的发布历史中都会出现部分故障,在过去的三年中有54%。


  • 部分故障的原因是多种多样的,其中未发现的错误、不确定阻塞和错误错误错误占据前三位,占它们之间所有部分故障的48%。


  • 48%的部分故障导致系统的某些部分无法取得进展(“卡住”)。还有17%的部分表现出速度非常慢,速度慢到足以成为一个严重的问题。



  • 在13%的情况下,一个模块变成了一个具有未定义故障语义的僵尸

  • 15%的部分故障案例是无声的(例如数据丢失、损坏、不一致、错误的结果)

  • 71%的故障是由特定的环境条件、输入或其他进程中的故障触发的。

  • 大部分(61%)的部分故障是粘性的,即除非进行某些干预(如重新启动),否则流程将无法恢复。

  • 诊断这些问题的平均时间为6天5小时。


总的来说,我们的研究揭示了在大型软件系统中,部分失效是一个普遍而严重的问题。研究的大多数故障都依赖于生产,这需要运行时机制来检测。

使用自定义看门狗程序检测部分故障
所以,我们知道我们需要运行时检测器。这里的做法是基于API的健康检查。最先进的是全景。

从业者通常依赖于运行特别的健康检查(例如,每隔几秒钟发送一个HTTP请求并检查其响应状态)。但这样的健康检查太肤浅,不能暴露出一大类的失败。该领域的最新研究工作是全景图,它将目标进程的各种请求者转换为观察者来报告该进程的灰色失败。这种方法受到请求者可以从外部观察到的东西的限制…

为了暴露部分故障,检测器需要使用精心选择的有效负载来执行特定的代码区域。Heartbeat和基于HTTP的测试过于通用,与被监视进程的状态脱离得太远。因此,作者采取的方法是使用内部监视程序——这些监视程序与同一进程中的主程序同时运行。为了尽可能接近真实的程序执行条件,OmegaGen在代码库中找到长时间运行的方法,提取它们潜在的易受攻击的操作,并将结果打包到自定义生成的监视程序(“模拟样式的检查程序”)中。它捕获主程序的运行时执行上下文,并将其作为输入复制到看门狗,然后在沙盒环境中执行。

生成监视程序,如下所示:

  • 第一个OmegaGen标识长时间运行的方法(例如while(true)或while(flag))

  • 然后,OmegaGen在这些长时间运行的方法的控制流中寻找潜在的易受攻击的操作。这在很大程度上是基于启发式的(同步、资源分配、事件轮询、异步等待、使用外部参数的调用、文件或网络I/O、复杂的while循环条件等等)。开发人员还可以显式地将操作注释为@vulnerable

  • 然后创建主程序的看门狗副本,从长时间运行的方法的入口点开始自上而下地还原程序,只保留每个还原方法中的易受攻击的操作。生成的程序保留原始结构,并包含所有易受攻击的操作。

  • 然后,OmegaGen插入钩子,钩子从主程序执行中捕获上下文并将其传递给看门狗,以便看门狗以与原始程序相同的键状态执行。

  • 最后,OmegaGen在watchdog中添加了检查,以捕获执行易受攻击操作时的失败信号。通过在运行检查器之前设置计时器(默认为4秒)进行活性检查。安全检查依赖于易受攻击的操作来发出显式错误信号(例如异常),并且还将捕获运行时错误。






看门狗驱动程序运行看门狗并捕获有关任何检测到的错误的信息。在报告错误之前,验证程序将运行以确保它是真正的错误。默认验证程序只需重新执行检查程序并比较结果,这在出现暂时性错误时是有效的。如果需要,开发人员可以提供自己的验证器函数。

OmegaGen起到的作用
OmegaGen使用ZooKeeper、Cassandra、HDFS、HBase、MapReduce和Yarn进行评估。它为每个系统生成10到100秒的看门狗,配置为每秒运行一次检查。根据系统的大小,生成看门狗需要5到17分钟

然后,收集并再现了这六个系统中的22个实际部分故障。OmegaGen检测这些故障的能力随后在四个不同的基线检测器上进行了测试,如下表所示(现有的系统内置检测器根本无法处理部分故障)。
OmageGen监视程序检测到22个问题中的20个,而最好的基线检测器只处理了11个,其他三个检测器加起来只能处理14个。中位检测时间为4.2秒。OmegaGen看门狗还能够比基线检测器更准确地确定错误的来源(例如,客户端和资源检测器只能指向错误的进程)。

最新版本ZooKeeper的随机故障注入测试触发了16个合成故障,其中13个被检测到,检测时间中值为6.1秒。OmegaGen的看门狗也在ZooKeeper的3.5.5版本中发现了一个真正的bug,开发者确认并修复了这个bug

OmegaGen看门狗在系统吞吐量方面增加了5.0-6.6%的开销。
最终结论
在六个大型系统上评估OmegaGen,它可以为每个系统生成数十到数百个定制的看门狗。生成的看门狗检测22个真实世界的部分故障中的20个,检测时间的中位数为4.2秒,并为18个案例确定故障范围;这些结果明显优于基线检测器。


IT学习
5楼 · 2021-11-11 15:14

软件故障的定义是软件运行过程中出现的不希望或不可接收的内部状态。是动态行为。

像电脑崩溃、电脑病毒都是属于软件问题

相关问题推荐

  • 回答 157

    虽然从事开发行业的女生越来越多,但女生的比例还是远比不上男生。软件测试的男女生比例则基本相当,软件测试要求细心、耐心,大部分女生也是比较适合学的。而且软件测试课程分为手工测试和自动化测试,手工测试分为功能测试、性能测试、接口测试。自动化测试...

  • 回答 121

    需要。很多人当初抱着测试不需要懂代码,才选择了这个行业,这个就要看对自己的职业定位了,是止步于月薪过万就可以了,还是往20k、30k去突破,如果这样的话,是肯定要会接口、会自动化,就必然要涉及到代码。如果真的看不懂代码,实际的测试后期的工作会出现...

  • 回答 91

    在我看来游戏开发挺难的,尤其像手游一类的还有网游,里面有很多的程序代码而且伤神又费力,不过也有女生在这方面做的很好的,如果你感兴趣,非常想学,可以试试

  • 回答 80

    软件测试专业现在很火热,很缺少人才,25岁学软件测试能学会,就业薪资也高,工作也相对轻松

  • 回答 11
    已采纳

    测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用...

  • 回答 15
    已采纳

    这个其实和接口测试的场景密不可分的,比如说:外部接口测试:    必须先接口测试通过了,才能执行功能测试子系统或者各个模块之间的联调测试:    必须各子系统后台代码完成,并提供接口才可以完成测试,一般来说都要求各子系统功能测试通过后再进行...

  • 回答 6
    已采纳

    这个是会因为公司的架构不同而不同的,并不是固定的,但是一般是会有专门的测试部门,或者叫质量保证部,也有可能是叫别的名字。

  • 回答 43
    已采纳

    移动端测试,包括App兼容性测dao试,7*24小时稳定性测试,功耗性能测试,UI测试,交互测试等,课程主要学习的内容有:1、功能测试主要包括计算机基础、软件测试核心理论、Linux、数据库,学习目标是掌握软件测试核心理论,结合Linux、数据库等可实现移动端、w...

  • 回答 1

    标题  1. 首先要做一个标题党(此标题党非彼标题党)。标题一定要清晰简洁易理解,不应该臃长  2. 尽量前缀要规范,例如模板: [Product][Version]_[Feature]_[Title],这样描述会很清晰,也方便查找  3. 缺陷的标题一定要描述在什么情况下发生了什么问...

  • 回答 1

    1、 缺陷报告可以记录缺陷2、可以对缺陷进行跟踪管理3、可以对缺陷报告进行分类 总结 统计

  • 回答 1

    1、缺陷编号(Defect ID),提交BUG的顺序。2、缺陷标题(summary),简明扼要的说明一下这个BUG。3、缺陷的发现者(DetectedBy) ,一般是自己。4、发现缺陷的日期(Detected on date),一般是当天。5、缺陷所属的模块(subject), 在测试哪个模块的时候发现的BUG...

  • 回答 1

    缺陷标题好的缺陷标题需要让相关人员一目了然,一般建议的格式是条件+失败。缺陷类型缺陷类型也是根据具体的项目而定的。但一般情况下分为功能、界面、建议。重现步骤重现步骤的编写规则可以参考测试用例中的操作步骤 ,一定要足够详细、说明清楚问题的操作顺...

  • 回答 1

    工具:NoSQLUnitJsTestDriverQTRunnerVenusFluintBuster.JSSQLUnitECUTQTestlibUnitilsgreatestDbUnitAbbotGoogleTest框架:JUnitMoqJSCaptureMockCUnitPyUnitCppUTestCppUnitzCUTcipra

  • 回答 1

    JunitTestNGGoogleTestpytestunittestJmockitJaCoCogcov、lcov、gcovrCoverage.pyEvoSuiteDiffblue Cover

  • 回答 1

      React Hooks测试库( Testing Library)是一个简单而完整的React Hooks测试工具。  React Hooks测试库让用户可以为React钩子创建简单的测试工具,自定义钩子的输入和检索输出,以处理在功能组件体内运行的情况。  使用React Hooks,用户不必为了测试而去担...

  • 回答 1

    1、单元测试注重代码逻辑,接口测试注重业务逻辑;2、单元测试的粒度最小,是测试最小独立的单元模块(不依赖其他模块);接口测试不是,会覆盖很多;3、单元测试是白盒测试,接口测试是黑盒测试;4、单元测试关注的是代码的实现和逻辑,测试范围较小,保证实...

没有解决我的问题,去提问