可信软件及测试_第1页
可信软件及测试_第2页
可信软件及测试_第3页
可信软件及测试_第4页
可信软件及测试_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可信软件及测试内容1.软件面临问题2.问题分析3.从软件质量到可信4.可信软件主要特征5.可信软件测试1.软件面临的问题从与软件相关的一些重大事故谈起软件事故典型案例2011年7月23日20时30分05秒,甬温线发生动车列车追尾事故,造成40人死亡、172人受伤,中断行车32小时35分,直接经济损失19371.65万元。原因分析:经国务院调查组调查后证实是因为LKD2-T1型列控中心设备系统存在严重设计缺陷和重大安全隐,导致本应显示为红灯的区间信号机错误地显示为绿灯。2007年10月30日,奥运门票第二阶段预售首日2006年3月2日14点10分,沪深大盘忽然发生罕见大跳水,7分钟之内上证指数跌去近20点。原因分析:当日下午刚上市的招商银行认股权证成交量巨大,导致其行情显示时总成交量字段溢出,使其价格在股票分析软件上成为一条不再波动的直线,让市场产生了恐慌。原因:银联新近准备上线的某外围设备的隐性缺陷诱发了跨行交易系统主机的缺陷,使主机发生故障2005年4月20日上午10时56分,中国银联系统通信网络和主机出现故障,造成辖内跨行交易全部中断。这是2002年中国银联成立以来,首次全国性因系统故障造成的跨行交易全面瘫痪。2003年8月14日下午4时10分,美国及加拿大部分地区发生历史上最大的停电事故。15日晚逐步恢复。后果:经济损失250亿到300亿之间原因分析俄亥俄州的第一能源(FirstEnergy)公司x下属的电力监测与控制管理系统软件XA/21出现错误,系统中重要的预警部分出现严重故障,负责预警服务的主服务器与备份服务器连接失控,错误没有得到及时通报和处理,最终多个重要设备出现故障,导致大规模停电。原因分析:

ADA语言编写的一段程序,将一个64位浮点整数转换为16位有符号整数时,产生溢出,导致系统惯性参考系统完全崩溃1996年6月4日,欧洲空间局的阿丽亚娜火箭,发射后37秒爆炸。损失6亿美元2.问题分析1).什么是软件质量?2).为什么软件质量保障困难?从软件质量谈起1).什么是软件质量?GB/T11457-2006<<软件工程术语>>中定义软件质量为:(1)软件产品中能满足给定需要的性质和特性的总体。(2)软件具有所期望的各种属性的组合程度。(3)顾客和用户觉得软件满足其综合期望的程度。(4)确定软件在使用中将满足顾客预期要求的程度。2).为什么软件质量保障困难(1)软件产品与需求(2)软件的本质(3)软件度量困难(1)软件产品与需求需求与成本之间的矛盾 需求是永无止境的 成本是永远有限的(2)软件的本质规模、复杂性、演化性网络环境软件研发过程缺乏基础理论支撑软件产品的验证缺乏基础理论支持(3)软件度量困难软件的度量,不像长度、容积和重量那样有统一的标准,采用不同的软件度量标准,可以得到不同的结果,这使得软件的度量增加了难度。3.从软件质量到可信软件(1)什么是可信?(2)什么软件的是可信软件?(1)什么是可信?ISO/IEC

15408

标准将可信定义为:

一个可信(trusted)的组件、操作或过程的行为在任意操作条件下是可预测的,

并能很好地抵抗应用软件、病毒以及一定的物理干扰造成的破坏;

可信计算组织(trusted

computing

group)认为:

如果一个实体总是按照其设定目标所期望的方式行事,

则称这个实体为可信的;

从用户体验的角度,

微软公司的比尔•盖茨认为可信计算是一种可以随时获得的可靠安全的计算,

并包括人类信任计算机的程度,

就像使用电力系统、电话那样自由、安全;

从网络行为的角度,

林闯等认为可信的网络应该是网络系统的行为及其结果是可以预期的,

能够做到行为状态可监测,

行为结果可评估,

异常行为可控制.

综上所述:如果一个软件系统的行为总是与预期相一致,称之为可信(trustworthy)。(2)什么是可信软件?软件是可信的,如果其服务总是与用户的预期相符,即使在运行过程中出现一些特殊情况。特殊情况包括:1、硬件环境(计算机、网络)发生故障2、底层软件(操作系统、数据库)出现错误3、其它软件(病毒软件、流氓软件)对其产生影响4、出现有意(攻击)、无意(误操作)的错误操作4.可信软件主要特征根据可信软件的定义,对可信软件的研究主要从以下几个方面进行阐述(1)可靠性(2)可用性(3)安全性(4)可维护性(5)完整性(1)可靠性可信软件的可靠性是指系统在规定的条件、环境及时间区间内连续正确地运行以提供所期望服务的能力,即计算机系统和软件能正常运行的概率。规定的条件包括环境、使用、维护、和维修等条件和操作技术。规定的时间是指软件系统的可靠性是相对于一定的时间间隔而言的,即人们要求在规定的时间诶软件系统有一定的可靠性。正确运行是指系统具有规定的各项技术性能,运行的程序不会被破坏或停止,能完成规定的任务,即程序按照规定的要求运行,在规定的时间限度范围之内执行并且运行的结果正确。提高软件可靠性的技术途径有避错法和容错法。避错技术:采用正确的设计和质量控制方法尽量避免把错误引进系统。容错技术:利用外加资源的冗余技术是系统中发生故障时仍能提供正常的服务。(2)可用性可信软件的可用性是指在给定时间内系统可运行的概率。可用性=MTTF/(MTTF+MTTR)*100%其中MTTF(meantimetofailure,平均无故障时间)是指系统平均能够正常运行多长时间,才发生一次故障。(系统的可靠性越高,平均无故障时间越长。)MTTR(meantimetorestoration,平均维修时间)是指系统发生故障后维修和重新恢复正常运行平均花费时间。(系统的可维护性越好,平均维修时间越短。)(3)安全性安全性指系统防止敏感信息与数据被未授权用户非法读写的能力,包括防止授权用户抵赖已进行过的访问。安全性一般分为两个层次:在应用程序级别,包括对数据或业务功能的访问,可确保在预期的安全情况下,操作者只能访问特定的功能或用例,或者只能访问有限的数据;在系统级别,包括对系统的登录或远程登录,确保只有具备系统访问权限的用户才能访问应用程序,而且只能通过相应的入口才能访问。(4)可维护性可信软件的可维护性是指系统具有易于修改和可进化的能力,包括理解、改正、改动和改进软件的难易程度。运行时期的主要任务是使软件持久地满足用户的需求。具体地说,当软件在使用过程中发现错误时,应该加以改正;当环境改变时,应该修改软件以适应新的环境;当用有新要求时,应该及时的改进软件满足用的新需求。(5)完整性可信计算组织(TrustedComputingGroup,TCG)将完整性定义为一个实体为了实现特定的目标而按照特定的方式进行工作的一种期望。软件的的完整性是指软件不发生不适当的修改信息的现象,也就是软件在运行的过程中按照软件设计者的本意进行,不受其他应用的任何影响。5.可信软件测试可信软件测试是指在保证软件可信性的前提下运行软件来发现软件中的错误而执行程序的过程。可信软件测试的原因:随着人们对软件测试重要性认识的提高,在整个软件生命周期中软件测试阶段所占的比重越来越大,同时对软件质量要求越来越高,故提出可信软件的测试。目前对可信软件的测试主要集中在对其进行可靠性、可用性、安全性、容错性、动态测试方法及错误注入测试方法。1.可靠性测试可信软件的可靠性测试是评估软件的可靠性水平,验证软件产品是否达到软件可靠性要求的重要且有效的途径。目前的测试方法主要有白盒测试、黑盒测试和灰盒测试。白盒测试也称结构测试,它是按照程序内部的结构测试程序,通过检测来测试产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否能够按预定要求正确工作。黑盒测试又称功能测试,是把测试对象看做一个黑盒子来测试软件产品的功能,不测试其内部结构和处理过程。灰盒测试:是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。2.可用性测试软件的可用性测试包括以用户为主的测试和以专家为主的测试方式。以用户为主的测试叫用户测试(usertesting);以专家为主的测试有认知预演(cognitivewalkthrough)和探索式评估(heuristicevaluation)。用户测试法:就是让用户真正地使用软件系统,由实验人员对实验过程进行观察、记录和测量。这种方法可以准确地反馈用户的使用表现、反映用户的需求,是一种非常有效的方法。用户测试可分为实验室测试和现场测试。实验室测试是在可用性测试实验室里进行的,而现场测试是由可用性测试人员到用户的实际使用现场进行观察和测试。认知预演:首先要定义目标用户、代表性的测试任务、每个任务正确的行动顺序、用户界面,然后进行行动预演并不断地提出问题,包括用户能否建立达到任务目的,用户能否获得有效的行动计划,用户能否采用适当的操作步骤,用户能否根据系统的反馈信息评价是否完成任务,最后进行评论,诸如要达到什么效果,某个行动是否有效,某个行动是否恰当,某个状况是否良好。优点在于:能够使用任何低保真原型,包括纸原型。缺点在于:评价人不是真实的用户,不能很好地代表用户。探索式评估由多位评价人(通常4至6人)根据可用性原则反复浏览系统各个界面,独立评估系统,允许各位评价人在独立完成评估之后讨论各自的发现,共同找出可用性问题。优点是:在于专家决断比较快、使用资源少,能够提供综合评价,评价机动性好,缺点是:一是会受到专家的主观影响,二是没有规定任务,会造成专家评估的不一致,三是评价后期阶段由于评价人的原因造成信度降低,四是专家评估与用户的期待存在差距,所发现的问题仅能代表专家的意思。3.安全性测试可信软件的安全性测试是确定软件的安全性实现是否与预期设计一致的过程。软件主要的安全功能需求包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、委托、隐私保护、安全管理等。安全性测试用例安全性测试的主要方法形式化安全测试:形式化方的基本思想是建立软件的数据学模型,并在形式规格说明书的支持下,提供软件的形式规格说明书。形式化安全测试方法可分为两类,即定理证明和模型检测。定理证明方法将程序转换为逻辑公式,然后使用公理和规则证明程序是一个合法的定理。模型检测用状态迁移系统S描述软件的行为用时序逻辑、计算树逻辑或演算公式F表示软件执行必须满足的性质,通过自动搜索S中不满足公式F的状态来发现软件中的漏洞。语法测试:是根据被测试软件的功能接口的语法生成测试输入,检测被检测软件对各类输入的响应。模糊测试:是一种发现安全漏洞的有效的测试方法,将随机的坏数据插入程序,观察程序是否能够容忍杂乱输入。基于模型的安全功能测试:是对软件的行为和结构进行建模。生成测试模型,由测试模型生成测试用例,驱动软件测试。4.容错性测试可信软件的容错性测试是一种对抗性的测试过程测试软件出现故障时,如何进行故障的转移与恢复有用的数据。容错性测试包括两个方面:A)输入异常数据或进行异常操作,以检验系统的保护性。如果系统容错性好,系统只给出提示或内部消化,而不会导致系统出错甚至崩溃。B)灾难恢复性测试。通过各种手段,让软件强制性地发生故障,然后验证系统以保存的用户数据是否丢失,系统和数据是否能很快恢复。容错性测试5.可信软件动态测试软件动态测试就是通过运行软件来检验软件的动态行为和运行结果的正确性。它可以分为随机测试和选择性测试两大类。随机测试方法以数理统计理论为基础,根据软件在使用中输入数据空间的概率分布,随机选择测试数据。但这种测试的不足之处是测试具有盲目性并且工作量比较大。选择性测试则是根据程序的内部结构和软件功能规约,有目的地选择测试数据。根据动态测试在软件开发过程中所处的阶段和作用,动态测试可分为如下几个步骤:A)单元测试:是对软件中的基本组成单位进行测试,其目的是检验软件基本组成单位的正确性。B)集成测试:在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论