软件的可靠性包括正确性和什么性
什么是软件生产率:软件生产率是指人均每月所能生产的有效源代码行数。
软件生产率的计算:软件生产率的计算通常比较困难,不仅要考虑编码阶段,还应包括软件生存期的各个阶段影响软件生产率的因素:人的因素:开发机构的规模和经验问题因素:问题的复杂性和设计约束或要求更改的次数过程因素:使用的分析和设计技术、应用的语言及评审的过程。
生产因素:计算机系统的性能和可靠性资源因素:开发工具、硬件和软件资源关于软件生产率的历史经验:1.一个组织中最优秀和最后进的人相比,其生产率比值是10:12.最优秀的和平均水平的人相比,比例是2.5:13.前一半和后一半相比,其生产率的比例大约是2:14.从同一个组织来的两个人,其生产率大致相同
软件可靠性的定义
1983年美国IEEE计算机学会对“软件可靠性”作出了明确定义,此后该定义被美国标准化研究所接受为国家标准,1989年我国也接受该定义为国家标准。
该定义包括两方面的含义:(1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率;(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力;其中的概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,系统输入将确定是否会遇到已存在的故障(如果故障存在的话)。
什么是软件?如何评价软件的质量?
软件质量:1、概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。
2、具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。
3、影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。
4、可划分为三组,分别反应用户在使用软件产品时的三种观点。
正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。
软件可靠性与安全性是一回事吗
软件的可靠性和安全性不是一个概念。
可靠性是指:软件在开发过后,经过严格的各种软件测试之后,尽量、最大限度地保证其运行的稳定性(例如:不会动不动就产生崩溃现象),而安全性是指你的软件在使用上是绝对保证安全、没有带有任何病毒代码(例如:蠕虫等)的程序。
如果你的软件被病毒感染了,那么它就不是一个具有安全性的软件,因为病毒具有扩散性。
软件可靠性测试,可用性测试的定义,有什么区别
软件可靠性测试是指:为了评估软件在规定的寿命期间内,在预期的使用、运输或储存等所有环境下,保持软件功能可靠性而进行的测试。
软件可用性测试是指:是对软件“可用性”进行评估,检验其是否达到可用性标准。
目前的可用性评估方法超过20种,按照参与可用性评估的人员划分,可以分为专家评估和用户评估;按照评估所处于的软件开发阶段,可以将可用性评估划分为形成性评估和总结性评估。
形成性评估是指在软件开发或改进过程中,请用户对产品或原型进行测试,通过测试后收集的数据来改进产品或设计直至达到所要求的可用性目标。
形成性评估的目标是发现尽可能多的可用性问题,通过修复可用性问题实现软件可用性的提高,总结性评估的目的是横向评估多个版本或者多个产品,输出评估数据进行对比。
...
可靠性测试的软件
也称软件的可靠性评估,指根据软件系统可靠性结构(单元与系统间可靠性关系)、寿命类型和各单元的可靠性试验信息,利用概率统计方法,评估出系统的可靠性特征量。
软件可靠性是软件系统在规定的时间内以及规定的环境条件下,完成规定功能的能力。
一般情况下,只能通过对软件系统进行测试来度量其可靠性。
测试可靠性是指运行应用程序,以便在部署系统之前发现并移除失败。
因为通过应用程序的可选路径的不同组合非常多,所以在一个复杂应用程序中不可能找到所有的潜在失败。
但是,可测试在正常使用情况下最可能的方案,然后验证该应用程序是否提供预期的服务。
如果时间允许,可采用更复杂的测试以揭示更微小的缺陷。
组件压力测试压力测试是指模拟巨大的工作负荷以查看应用程序在峰值使用情况下如何执行操作。
利用组件压力测试,可隔离构成组件和服务、推断出它们公开的导航方法、函数方法和接口方法以及创建调用这些方法的测试前端。
对于那些进入数据库服务器或一些其他组件的方法,可创建一个提供所需格式的哑元数据的后端。
测试仪器在观察结果的同时,反复插入哑元数据。
这里的想法是在隔离的情况下,对每个组件施加远超过正常应用程序将经历的压力。
例如,以尽可能快的速度使用 1 – 10,000,000 循环,查看是否有暴露的问题。
单独测试每个 DLL 可帮助确定组件的失败总次数。
对于分布式 Web 应用程序,Microsoft 提供“Web 应用程序压力工具”。
有关更多信息,请参见“Microsoft Web Application Stress Tool”(Microsoft Web 应用程序压力工具).如果您购买了 Visual Studio .NET 企业版,还会提供另一个名为 Application Center Test 的工具,它用来预览 Application Center 2000 中某些技术的介绍性信息。
集中压力测试对每个单独的组件进行压力测试后,应对带有其所有组件和支持服务的整个应用程序进行压力测试。
集中压力测试主要关注与其他服务、进程以及数据结构(来自内部组件和其他外部应用程序服务)的交互。
集中测试从最基础的功能测试开始。
您需要知道编码路径和用户方案、了解用户试图做什么以及确定用户运用您的应用程序的所有方式。
测试脚本应根据预期的用法运行应用程序。
例如,如果您的应用程序显示 Web 页,而且 99% 的客户只是搜索该站点、只有 1% 的客户将真正购买,这使得提供对搜索和其他浏览功能进行压力测试的测试脚本才有意义。
当然,也应对购物车进行测试,但是预期的使用暗示搜索测试应在测试中占很大比重。
在日程和预算允许的范围内,应始终尽可能延长测试时间。
不是测试几天或一周,而是要延续测试达一个月、一个季度或者一年之久,并查看应用程序在较长时期内的运行情况。
真实环境测试在隔离的受保护的测试环境中可靠的软件,在真实环境的部署中可能并不可靠。
虽然隔离测试在早期的可靠性测试进程中是有用的,但真实环境的测试环境才能确保并行应用程序不会彼此干扰。
这种测试经常发现与其他应用程序之间的意外的导致失败的交互。
需要确保应用程序能够在真实环境中运行,即能够在具有所有预期客户事件配置文件的服务器空间中,使用最终配置条件运行。
测试计划应包括在最终目标环境中或在尽可能接近目标环境的环境中运行应用程序。
这一点通常可通过部分复制最终环境或小心地共享最终环境来完成。
随机破坏测试测试可靠性的一个最简单的方法是使用随机输入。
这种类型的测试通过提供虚假的不合逻辑的输入,努力使应用程序发生故障或挂起。
输入可以是键盘或鼠标事件、程序消息流、Web 页、数据缓存或任何其他可强制进入应用程序的输入情况。
应该使用随机破坏测试测试重要的错误路径,并公开软件中的错误。
这种测试通过强制失败以便可以观察返回的错误处理来改进代码质量。
随机测试故意忽略程序行为的任何规范。
如果该应用程序中断,则未通过测试。
如果该应用程序不中断,则通过测试。
这里的要点是随机测试可高度自动化,因为它完全不关心基础应用程序应该如何工作。
可能需要某种测试装备,以驱使混乱的、高压力的、不合逻辑的测试事件进入应用程序的接口中。
Microsoft 使用名为“注射器”的工具,使得以将错误注射到任何 API 中,而无需访问源代码。
“注射器”可用于:模拟资源失败,修改调用参数,注射损坏的数据,检查参数验证界限,插入定时延迟,以及执行许多其他功能。
27刘笑是我儿