(计算机系统结构专业论文)软件内建自测试中模板和基准程序设计.pdf_第1页
(计算机系统结构专业论文)软件内建自测试中模板和基准程序设计.pdf_第2页
(计算机系统结构专业论文)软件内建自测试中模板和基准程序设计.pdf_第3页
(计算机系统结构专业论文)软件内建自测试中模板和基准程序设计.pdf_第4页
(计算机系统结构专业论文)软件内建自测试中模板和基准程序设计.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机系统结构专业论文)软件内建自测试中模板和基准程序设计.pdf.pdf 免费下载

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

文档简介

上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 摘要1 软件测试不但是保证软件质量的主要手段,而且是保证软件质量的最后一 道程序,具有很重要的作用。以往的软件测试多采用手工测试即在开发完 成后,独立地手工生成测试用例,人为地运行测试用例,比较运行结果和预期 结果。但是,软件规模越来越大,这种测试效率太低,成本太高事实表明, 在软件测试阶段投入的成本往往要占软件开发总成本和总工作量的一半,甚至 还多。在这种情况下越来越多的专家重视研究软件自动测试。 软件内建自测试摈弃了传统的独立的手i n 试方法,提出在软件开发过程 中通过模板与程序开发人员交互得到有用的测试信息并将其保存在模板中,然 后编写程序自动从模板导出测试用例,自动运行测试用例进行测试的自动测试 方法。本论文主要讨论模扳的设计。 论文提出了可信系统并阐述了其特点,然后根据可信系统的特点提出建立 可信模板系统和建立步骤。论文还给出了模板的概念、模板的内容、模扳内容 的组织、模板与程序员交互的机制和模板的参数。 论文提出并设计了基准程序来计算模板的参数以便于评测、挑选模板及判 断模板的可信性。基准程序是根据某类程序的特点来设计的一系列特殊程序。 它的提出是受基准电路的启发,基准电路是一组专门设计的电路,用咀评测了 各种硬件测试算法,它很好地达到了预期效果。我们希望所设计的基准程序也 能很好的解决模板的评测问题。 最后论文根据以上理论的指导,为科学计算程序建立了一系列的基准程序, 然后设计和实现了科学计算程序的测试模板,利用基准程序计算了模板的特征 参数并验证了所设计科学计算程序的测试模板的可信性。 关键词:测试用例,g i s t ,可信系统,模板,可信模板,基准程序 本研究得到国家自然科学基金的资助项甘编号为6 9 8 7 3 0 3 0 和6 0 1 7 3 0 2 9 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y a b s t r a c t s o f t w a r ei sn o to n l yo n eo ft h em a i nm e t h o d st oe n s u r et h es o f t w a r eq u a l i t y , b u t a l s oi st h ef i n a lo p p o m m i t yt oq u a l i r yt h es o f t w a r ep r o d u c t ,s oi tp l a y st h ei m p o r t a n t r o l ei nt h ec y c l eo fs o f t w a r ed e v e l o p m e n t t r a d i t i o n a ls o f t w a r et e s tm e t h o d sa r e a l w a y st oi m p l e m e n tt h e s o f t w a r et e s t i n d e p e n d e n t l ya f t e rf i n i s h i n gt h es o f t w a r e b u i l d i n gt h r o u g hm a n u a l l yg e n e r a t i n gt e s t c a s e s w i t ht h ei n t e n s i v e l ye x p l o d i n go f s o f t w a r es c a l ea n dr o c k e t i n go fs o f t w a r ec o m p l e x i t y , t h e s et r a d i t i o n a ls o f t w a r et e s t m e t h o d ss e e mt i m e c o n s u m i n ga n dc o s tt o om u c h ,t h ef a c ts h o w st h a tt h ec o s to f s o f t w a r et e s ti sa l m o s t5 0p e r c e n t ,e v e nm o r e ,o ft h e t o t a lc o s to fs o f t w a r e d e v e l o p m e n t i nt h i sc i r c u m s t a n c e ,m o r ea n dm o r es o f t w a r ee x p e r t sc o m m e r c eo n r e s e a r c ho fs o f t w a r et e s ta u t o m a t i o n b u i l t i n - s e l f - t e s t ( b i s t ) f o rs o t b , v a r ea b a n d o n st h et r a d i t i o n a l m e t h o d s i n d e p e n d e n t l yt e s t i n g a n di n n o v a t e san e ww a y - i n s e r tt h eu s e f u lt e s t i n f o r m a t i o ni nt h es o f t w a r ep r o j e c tt os u m m i tt op r o g r a mt e s t e rd u r i n gp r o g r a m m i n g i n f o r m a t i o ni ss t o r e di nc o n t a i n e rc a l l e dt e m p l a t e t h em a i nt o p i co f t h i s p a p e r t h e p a p e rp r e s e n t st h ed e p e n d a b l es y s t e ma n d i t sc h a r a c t e r i s t i c s ,a n dt h e nd i s c u s s e s t h ed e p e n d a b l et e m p l a t es y s t e ma n ds t e p st ob u i l dd e p e n d a b l et e m p l a t es y s t e m t h e p a p e rf o c u s e so nt h ec o n t e n t ,c o n t e n to r g a n i z i n g ,c o n t e n to b t a i n m e n ta n dp a r a m e t e r s o f t e m p l a t e i no r d e rt oc a l c u l a t et h et e m p l a t ep a r a m e t e r sa n de v a l u a t et h et e m p l a t e s ,t h ea u t h o r p r e s e n t sb e n c h m a r kp r o g r a ma n ds t e p st od e v e l o pi t t h i sn e wt h o u g h ti si g n i t e db y t h eb e n c h m a r kc i r c u i t sw h i c ha r ew i d e l yu s e di n e v a l u a t i n gh a r d w a r et e s t i n g a l g o r i t h m s f i n a l l y , at e m p l a t e a n db e n c h m a r kp r o g r a ma r eb u i l t c o n c r e t e l y , a n d t h e na d e s i g n e db e n c h m a r kp r o g r a mi s u s e dt o p r o v et h ed e p e n d a b i l i t yo ft h ed e s i g n e d t e m p l a t e k e yw o r d :t e s tc a s e ,b i s t , d e p e n d a b l es y s t e m ,t e m p l a t e ,d e p e n d a b l e t e m p l a t e ,b e n c h m a r kp r o g r a m 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 1 1 硬件测试 第一章引言 1 1 1 硬件测试概述 随着超大规模集成电路的发展以及“纳米”时代的到来,越来越多的新技术 应用到生产中。电路变得日益复杂。电路能否正常工作成为一个突出的问题。一 方面,电路中一个微小的故障会导致电路不正常工作,甚至发生大灾难;另一方 面,检测电路能否正常工作变得越来越困难,测试费用也变得越来越难以接受。 目前最有影响且最有效的组合电路测试生成算法有d 算法f j 2 】、9 值d 算法 n “、p o d e m 算法5 1 、f a n 算法嘲、s o c r a t e s 算法f 7 】、e s t 算法1 8 】、基于传递 闭包的t r a n s 算法 9 1 以及k u n z 等人采用的递归学习算法。近年来时序电路测 试生成较有影响的算法有b a c k 1 m 、e s s e n t i a l 1 ”、h i t e c l l 甜、f a s t e s t 1 3 1 、 g e n t e s t l “】以及c o n t e s t 0 5 等。并行测试生成是采用并行计算机系统来处理 测试生成问题。最主要的并行测试生成策略有模拟并行【1 ”、启发式知识并行 1 ”、 搜索并行以及故障并行( 1 8 】。可测性设计主要分为特殊的方法与结构设计。结构 设计主要是指扫描设计,扫描设计分为完全扫描与部分扫描。降低测试码置入代 价的方法主要有并行测试及可测性设计。 对于集成电路的研究开发人员和制造商来说,总是希望尽可能早地发现产品 的故障,因为要检测相同的故障在不同层次所需要的代价不同,层次越高代价越 高。通常认为要检测相同的故障在门级( g a t el e v e l ) 、芯片级( c h i pl e v e l ) 、板级 ( b o a r dl e v e l ) 、系统级( s y s t e ml e v e l ) 和域级( f i e l dl e v e l ) 的测试代价依次以 1 0 倍增长,而且随着电路i o 管脚及时钟频率的增加成指数增长。测试生成时间 己成为产品设计周期内最长的阶段,测试时间大约占据了整个产品设计与生产总 时间的4 0 ,同时产品投入市场的时间延后半年会导致产品利润降低3 3 。 1 1 2 硬件测试的可测性设计 随着军用a s i c 电路规模的不断增大,平均每个芯片o 管脚上集成的门数 也从几个增加至几百个,较大的v l s i 电路和a s i c 不仅包含随机逻辑,同时也 包含r a m 、r o m 、p l a 、数据通道、多路转换器和像微处理器那样复杂的宏单 元。由于以上这些变化,使得通过外部测试设备测试芯片和多芯片模块变得十分 复杂和困难,测试生成的费用也呈指数增长。单凭改进和研究测试生成方法,或 者单纯从测试设备上解决集成电路的测试问题,已不能很好地满足v l s i 电路, 特别是a s i c 的测试需要。解决i c 测试问题的根本方法是在做系统设计时就充 分考虑到测试的要求,即在设计阶段就开始考虑如何对电路进行测试,并将一些 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 实用的可测性技术引入到芯片设计中,以降低测试生成的复杂性,也就是进行可 测性设计( d e s i g n f o rt e s t a b i l i t y d f t ) 。 扫描设计【1 明( s c a nd e s i g n ) 和内建自测试【2 ”0 3 u i l t i ns e l ft e s t - - b i s t ) 是目 前可测性设计的两种主要技术。扫描设计的主要思路是将电路的时序行为转化为 组合逻辑来处理。电路中的所有扫描触发器连接成一个扫描链,测试输入通过扫 描输入经扫描链移入到所有扫描触发器的输出。所有扫描触发器的输出可看作是 原始输入。而测试响应可以由扫描链移出到扫描输出。这样,所有扫描触发器的 输入可以看作是原始输出。扫描设计可以提高测试覆盖率,但会增加触发器和锁 存器的复杂程度,需要增加一个或多个i o 管脚,测试时间一般也会延长。 b i s t 技术通过电路内部的测试码生成器( t e s tp a t t e r ng e n e r a t o r s - - t p g ) 产 生加到被测电路( c i r c u i tu n d e rt e s t _ _ c u t ) 的测试码,并由输出响应分析器 ( o u t p u tr e s p o n s ea n a l y z e r - - o r a ) 完成输出响应分析,产生“p a s s f a i l ”信 号,以确定该电路有无故障【2 ”。这样,芯片不但能完成自身的逻辑功能,在适 当的控制下还能进行自我测试分析,周期性地监测芯片。与扫描技术相比,b i s t 技术具有测试速度快,适合于层次化设计等优点。随着电路的复杂性与密度的日 益增加、设计层次的提高,b i s t 被认为是测试集成电路较有效的方法。 1 2 软件测试 1 2 1 软件测试的概念 究竟什么是软件测试这一基本概念很长时问以来存在着不同的观点。1 9 8 3 年i e e e 提出的软件工程标准术语中给软件测试下的定义是:“使用人工或自动 手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是 弄清预期结果与实际结果之间的差别 2 2 】”。gj m y e r s 则持另外的观点,他认为: “软件测试是为了发现错误而执行程序的过程【23 ”。这两个测试定义分别侧重于 “检验软件是否满足需求”和“寻找软件中的错误”,我们认为这两点都是软件 测试的主要目标。软件测试在软件生存周期中占有非常突出的重要位置,是保证 软件质量的重要手段。根据b o e h m 的统计,软件开发总成本中,用在测试上的 开销要占3 0 到5 0 f 2 ”。这也就意味着一个大型的程序开发完成以后,软件开 发工作并未结束,因为后面几乎还有相当一部分工作要做,也就是说,还要进行 程序的测试。 1 2 2 软件测试方法的分类 1 静态方法和动态方法 原则上讲,可以把软件测试方法分为两大类,即静态方法和动态方法。 上海大学硕士学位论文 t h e p o s t g r a d u a t e t h e s i so f s h a n g h a iu n i v e r s i t y 静态方法又叫静态分析,其主要特征是计算机不运行被测试的程序,而是采 用其它手段达到检验的目的。但上述静态方法的特征并不意味着完全不利用计算 机作为分析的工具。常用的一些静态分析方法有如下几种: 收集一些程序信息,以利于查找程序中的各种欠缺和可疑的程序结构; 从程序中提出语义的或结构要点,供进一步分析; 以符号代替数值求得程序的结果,便于对程序进行运算规律的检验; 对程序进行一些处理,为进一步动态分析做准备; 动态方法与静态方法相反,在测试时要运行被测程序,然后根据运行结果来 检验程序的性质。这种方法的关键在于如何得到测试数据和期望的正确输出,黑 盒测试和白盒测试方法是两种通用的动态方法。 2 黑盒测试和白盒测试 广泛使用的两类测试方法。 黑盒测试 2 5 ( b l a c k - b o xt e s t i n g ) 又称功能测试、数据驱动测试或基于规格 说明的测试( s p e c i f i c a t i o n - b a s e dt e s t i n g ) 。用这种测试方法进行测试时,被测程 序被当作打不开的黑盒,因而无法了解其内部构造。在完全不考虑程序内部结构 和内部特性的情况下,测试者只知道程序输入和输出之间的关系,或是程序的功 能。他必须依靠能够反映这一关系和程序功能的需求规格说明书考虑确定测试用 例,和推断测试结果的正确性。即所依据的只能是程序的外部特性。因此,黑盒 测试是从用户观点出发的测试。 白盒测试 2 6 l ( w h i t e - b o xt e s t i n g ) 又称结构测试、逻辑驱动测试或基于程序 的测试( p r o g r a m - b a s e dt e s t i n g ) 。采用这测试方法,测试者可以看到被测的源 程序,他可以分析程序的内部构造,并且根据其内部构造设计测试用例。这时测 试者可以完全不顾程序的功能。 这两类测试方法是从完全不同的起点出发,并且是两个完全对立的出发点, 可以说反映了事物的两个极端。两类方法各有侧重,在测试的实践中都是有效实 用的。在进行单元测试时大都采用白盒测试,而在确认测试或系统测试中大都采 用黑盒测试。 1 2 3 软件测试策略 在一般情况下,软件测试过程和整个软件开发过程是平行进行的。测试计划 早在需求分析阶段即应产生。软件测试策略是指根据测试过程中各阶段的不同特 点,制定测试目标,分步骤地进行测试。每个测试步骤在逻辑上是前一个步骤的 继续。 一般各种测试方法在实现测试策略上可以分为下列几个步骤2 7 2 8 1 : 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so f s h a t i 曲a iu n i v e r s i t y 1 单元测试( 模块级测试) 。单元测试主要是在软件开发过程中针对程序模 块进行正确性检验,一般测试人员就是编程人员。 2 集成测试( 若干模板共同运行测试) 。集成测试包括予系统测试和系统测 试,它是在单元测试的基础上将所有模块按照设计要求组装成系统或子系统,对 模块组装过程和组装接口进行正确性检查。测试项目根据模块的特点而定,可包 括:执行路径检查、逻辑判定检查、循环边界检查、数据结构检查等情况。测试 过程需严格监控,对测试规范、测试问题、回归测试、测试报告进行严格评审, 最大限度的保证测试质量 2 9 。 3 认证测试。按系统的需求说明要求,在现场验证软件系统是否确实能够满 足用户的需求。 4 平行运行。它是指同时运行新开发出来的系统和将被它取代的旧系统,以 便比较新旧两个系统的处理结果。它的优点在于:可以让新系统在准生产环境中 运行而不冒风险;用户能有一段熟悉新系统的时间;可以验证用户指南和使用手 册之类的文档的正确性。 1 2 4 软件测试的发展 7 0 年代以来,软件工作者开始加深对测试工作的认识,到了7 0 年代中期, 软件测试技术的研究达到高潮。j b g o o d e n o u g h 和s l g e r h a r t 首先提出了软件 测试的理论,从而把软件测试这一实践性很强的学科提高到理论的高度,被认为 是测试技术发展过程中具有开创性的工作。此后不久,著名测试专家w e h o w d e n 指出了上述理论的缺陷,并进行了新的开创性工作。以后,又有w e y u k e r 和o s t r a n d ,g e l l e r ,以及g e r h a r t 进步总结原有的测试理论并进一步加以完善, 使软件测试成为有理论指导的实践性学科。 在软件测试的理论迅速发展的同时,各种高级的软件测试方法也将软件测试 技术提高到了初期的原始方法无法比拟的高度。j gh u a n g 提出了程序插装 ( p r o g r a mi n s t u m e n t a t i o n ) 的概念,使被测程序在保持原有逻辑完整性的基底上, 插入“探测仪”,以便获取程序的控制流和数据流信息,并可得到测试的覆盖率。 w e h o w d e n 对测试路径进行了深入的分析,提出了系统功能测试及代数测试等 概念。w e h o w d e n 、l a c l a r k e 和j a d a r r i n g e r 等人把符号执行的概念引入到 软件测试中,提出了符号测试方法,并且建立了d i s s e t 等符号测试系统。 w o o d w a r d 和h e d l e y 等人分析了路径测试中的藕联效应假设,并以此为基础发展 出基于程序变异( p r o g r a mm u t a t i o n ) 的测试方法,使传统的测试技术领域增加 了新的成员错误驱动测试。接着t a b u d d 和f s a y w a r d 等人进一步发展了 程序变异的思想,论述了能采用其它测试方法的地方基本上都能使用程序变异方 法进行测试,并且开发了变异测试系统的原型。后来,w e ,h o w d e n 把d e m i l l o 4 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 等人的变异方法称为强变异,依据原始的变异思想提出了弱变异的测试技术。使 用弱变异方法无需生成被测程序的变异因子,而是分析程序中易于出错的部分进 行变异测试。在这以后,s j z e i l 提出了一种新的程序模型,把程序描述为环境 的改变,通过扰动减少错误空间的维数,这就是与程序变异相似的程序扰动测试 方法( p e r m u t a t i o no fp r o g r a ms t a t e m e n t s ) 。1 9 7 7 年l - o s t e r w e i l 和l d f o s d i c k 等人首先引入了数据流测试方法,该方法通过对数据流的静态测试找出程序中潜 藏的错误。o s t e e r w e i l 还把这一方面推广到并发程序的数据流分析。1 9 8 3 年日本 学者r y o i c h ih o s o y a 等在数据流测试方法中加入了变量值域分析,使数据流方法 检测的错误类型更多。 如何确定测试数据,选取测试点,仍然是实施测试,使之提高测试效率的关 键问题。l w h i t e 和e c o h e n 提出了一种新的计算机程序测试策略,这就是域测 试方法( d o m a i nt e s t i n gs t r a t e g y ) 。输入域分析是把程序的输入按谓词划分,进 一步以此划分为依据,给出各个域的测试点。e j w e y u k e r 和t j o s t r a n d 接着发 展了他们的方法。1 9 8 5 年d j r i c h a r d s o n 和l a c l a r k e 在此基础上又提出了划 分分析的概念,将形式化规格说明和程序本身的输入变量的取值范围都划分为 域,找出共同的域,通过在这些共同域上的测试找出规格说明和程序之间的不 一致性。la c l a r k e 还深入讨论并改进了w h i t e 和c o h e n 提出的域测试方法。 此外,s r e d w i n ej r 总结了一套工程化测试方法。 近年来,尽管软件测试技术有了长足的进步,但总的来说,仍然和软件开发 实践提出的要求有相当大的距离。测试手段的进展也远远没有达到令人满意的程 度。 1 3 本章小结 本章主要介绍了硬件测试、硬件测试的可测性设计和软件测试的概念、测试 方法、测试策略以及软件澳6 试的发展情况,提前阐述了论文将要用到的概念和背 景知识。 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 第二章软件内建自测试 2 1 软、硬件测试共识 上一章分别简要地介绍了软件测试和硬件测试,人们一直是把它们作为两种 互不相关的领域来进行研究,但是事实上软件测试和硬件测试存在一些测试思想 和测试方法上的一致性,可以互相共享各自的测试思想和方法。测试思想上:硬 件测试先生成测试序列,加载测试序列得到实际输出,比较实际输出和预期 输出完成测试。与之类似,软件测试也是先生成测试用例,运行测试用例得到实 际输出,比较实际输出和预期输出完成测试。这种朴素的测试思想是软硬件测试 的基础,也是软硬件测试共识存在的基础。在软硬件测试方法上它们也存在一系 列的一致性【30 】如a dh o e 技术,随机测试、技术扫描和程序切片以及b i s t 技术。a dh o c 技术是早期的硬件可测性设计的技术之一,包括增加测试点、电 路划分等。电路测试中增加测试点的技术主要是指在复杂电路中引出那些难以测 试的节点。测试时这些引出的测试节点就可以作为直接的控制点和观察点来简化 复杂的电路测试。而在软件测试中,为了获取数据流和控制流的信息,软件测试 人员常常在不破坏程序逻辑完整性的情况下插入一些语句做探头。随机测试在软 硬件测试中仍然有广泛的应用:软件测试和硬件测试都是n p 完全问题,人们不 能对其进行完全测试,所以都采用概率的理论进行随机测试。硬件中随机生成测 试序列测试电路,而软件在黑盒和白盒测试中均随机选取测试用例进行测试。扫 描和程序切片技术是一种可测性设计技术:对于v l s i ,扫描技术的思想是通过 可扫描的触发器代替时序电路中的一般触发器,测试时这些触发器连接起来成为 一个移位寄存器。而对于移位寄存器,电路的所有状态可通过初始输入和初始输 出控制和观察。与此相似的测试思想在软件测试中也有应用m a r kw e i s e r 提 出的程序切片。其基本思想是把与测试无关的谓词暂时从被测程序中除去,以简 化被测程序的测试。这些软硬件测试在测试技术和测试思想上的一致性没有被人 们充分地认识,软件内建自测试就是在充分认识到这种测试共识的基础上进行 的。 2 2 软件内建自测试总体介绍 软件内建自测试的基本思想是将软件( 主要是针对一般的应用软件而言) 可测试性设计与软件测试结合起来以解决软件“测试难”的问题。“b i s t ”技 术在硬件的可测性设计上已是一个比较成熟的技术。但是至今尚未见到用该技 术进行软件的可测试设计中去。软件的可测性设计可以大大地降低软件的测试 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 难度和复杂度。事实上,这是一个完全可以“借用”的软件测试技术。其基本 结构主要包括两大部分:一,模板( t e m p l a t e ) 部分。二,自测试部分。其基 本思想是:首先为程序设计人员提供一套预先设计好的模板,这套模板要求程 序设计人员在编写程序时必须满足模板中提出的相关条件,并在模板中输入所 要求的有关数据。由模板对所编写的程序进行“包装”( 包括设置c h e c k p o i n t ,生 成测试用例,结果比较等) 。即,模板中建立了该程序凡是需要测试部分的数 据以供自测试部分使用。然后,由自测试部分根据模板中信息生成一定的测试 用例,并在c h e c k p o i n t 上进行比较和测试,以完成基本的测试功能。“软件b i s t ” 所需要的额外开销是十分有限的。对程序设计人员来说,只需在编写程序时和 编写完成后按模板的要求将相关数据输入至模板中即可,这样当程序完成及调 试结束后其内建测试的功能就已经自动地生成了。也就是说,程序设计人员除 了增加向模板输入必要的数据等工作量外,完全可以按平时一样进行程序设 计。而最后获得的是带有b i s t 功能的软件。另外,模板还可以有测试状态和 正常运行状态之分。测试结束后可将程序转入正常运行状态以提高程序运行速 度。 图2 i 软件内建自测试基本结构图 当今国内外测试专家已经充分认识到软件可测性设计的重要性和必要性, 而且达到了一致共识,认为“软件的可测性设计肯定是解决软件测试难的重要 思想和途径”。它的本质则是通过增加极少量的软件设计复杂性的额外开销, 将易于软件测试的原则融合到软件设计中去,既保证了软件的可靠性,又大大 地降低了软件的开发和测试成本,同时也加速了软件的开发周期。但是,真正 在这方面提出切实可行的思想和方法的尚不多见。本章提出的方案,即利用硬 7 上海大学硕士学位论文 t h e p o s t g r a d u a t e t h e s i so f s h a n g h a i u n i v e r s i t y 件测试中十分成熟的“b i s t ”技术,开展软件的“b i s t ”研究的思想,经会 同国内夕 有关专家的深入研究和论证后,认为确实是一个切实可行、具有相当 先进性的研究和实施方案。 软件内建自测试是可测性设计在软件测试中的应用,它是徐拾义教授主持的 一项国家自然科学基金项目。其过程如图2 1 : 2 3 本章小结 本章介绍了软、硬件测试存在的共识,然后在此背景下提出软、硬件共识思 想的一种应用软件内建自测试。软件内建自测试是一种新的测试方法,它主 张在软件开发阶段提前考虑后期的软件测试,期望通过与程序员合理交互,提前 得到测试信息存入模板,在后期编写程序自动生成测试用例,最终实现测试自动 化。 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 第三章软件自测试中的模板 3 1 可信系统、模板和可信模板 定义3 1 可信性:是能够稳定并且可信地解决一定领域的问题的能力。而具 有可信性的系统就是可信系统。 可信系统有以下的特点: 1 可信系统的边界性:可信系统的边界性是指系统具有辨别界定自己处理 问题领域的能力。它具有“知之为知之,不知为不知”的优良“美德”。它清楚 地知道它目前能干什么和目前还不能干什么。相反,一个不可信系统它不清楚自 己目前的能力,不是盲目“自大”就是干脆“彻底瘫痪”( 及对外界不做任何反 映) 。 2 可信系统的稳定性:可信系统的稳定性是指系统在它界定的能处理的问 题领域里稳定地处理问题的能力,换句话说,任何时间系统处理的问题满足预先 设定的问题处理目标。稳定性是可信性的集中表现,正因为它的稳定性所以人们 才放心地把问题交给系统处理而不用担心达不到预期效果,所以我f f - 干脆称稳定 性为可信性。 3 可信系统的学习能力:可信系统的学习能力是指系统可以可信地学习新 领域知识的能力。正因为系统的学习能力,所以这样的系统是有生命力的,可以 解决越来越多的问题。可信系统的边界性、稳定性和学习能力有着密切的联系。 因为可信系统的边界性,所以才需要系统有学习能力,而依赖系统的稳定性( 即 可信性) ,保证了系统学习的总是可信的知识,从而使之永远是可信系统。 4 可信系统的开放性:可信系统的开放性是指系统可以不断的接收新知识 而不会产生冲突、矛盾,最终导致系统崩溃。开放性是可学习性的基础。在建立 这样的系统时要谨慎处理系统的交集问题。 3 2 模板和可信模板 在我们的系统中,软件可测性设计将通过模板来实现。模板是开发人员和自 测试系统之间的桥梁。 3 2 1 模板和可信模板的概念 为了说明模板的概念,我们简单回顾一下软件内建自测试的基本过程并把模 板作用突出出来,如图3 1 : 定义3 2 模板:模板是一种专门为软件自动生成测试用例而设计的特殊数据 库,用以存储有用的测试信息,提供给软件开发人员和软件测试人员的公共数据 9 上海大学硕士学位论文 t h ep o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 库。 定义3 3 可信模板:可信模板是对其服务的一类程序都能达到预期设计目标的 模板。它将是我们设计的最终目标。 图3 1 软件内建自测试示图 定义3 4 可信模板系统:是一系列可信模板的集合,能够可信地解决某一个 有限领域程序测试问题。 可以从以下几个方面理解模板的概念: 1 从软件开发人员角度:模板就是一套规则,指导和规范软件开发人员在编写 程序的过程中预先存储有用的测试信息。它使软件开发人员便捷地存储有用的测 试信息( 程序的输入,程序的预期输出和程序流程图等等) 。 2 从软件测试人员角度:模板就是生成测试用例的数据库。测试人员通过预先 设定好的测试用例提取规则从模板中提取信息生成测试用例。 3 从软件工程的角度:模板是联系软件开发过程中编码和测试的桥梁,它以软 件开发人员在软件开发过程中额外地存储一些测试信息为代价,来达到大大减 轻软件测试人员测试程序时生成测试用例的负担,并且大大缩减了软件测试周 期,提高了故障覆盖率的目的。 提出可信性和可信系统的概念是为了研究可信模板和可信模板系统,并为最 终建立可信模板和可信模板系统提供理论指导。 3 2 2 可信模板的特点 从模板和可信系统的概念和特点,可以归纳出可信模板的以下几个特点: 1 有限通用性:模板不是单为一个程序设计的,而是为一类程序设计的, 它具有通用性。如果为单一程序设计单独的模板来得到测试信息,然后从这个特 定的模板中生成测试用例测试被测程序。这样做可能得到最适合的测试信息和测 0 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 试用例,达到很好的测试效果,但其弊端也是显而易见工作量过大,造成大 量重复工作,是不可取得。要是能为所有的程序提供一个普遍适用的模板是最好 的,这初看起来似乎是模板设计的最高目标,但这种海市蜃楼的目标是经不起推 敲的,也是有经验教训的。企图为所有的程序建立个通用模板,或者没有这么 极端,但是通用性过大,都会犯严重的错误即系统的不可信性。因此模板具 有有限通用性很适合也只适合种规模合适的类型的程序,这里的合适在论 文的后面部分会有明确的论述。 2 可信性:模板的可信性是指特定设计的模板对它服务的一类被测程序能达 到设计时设定的测试效果。测试是一种证伪而不是证实活动,测试的根本目的不 是保证软件的百分之百无错误,而是尽可能地发现程序中存在的错误。因此模板 的可信性不是指模板生成的测试用例能发现程序中存在的所有错误,而是,只要 模板生成的测试用例能够达到对一类它服务的被测程序设计时设定的测试目标 如一定的故错误覆盖率和路径覆盖率等,就可以说设计的模板是可信的。实 际中测试目标的计算( 如故错误覆盖率和路径覆盖率) 不但跟模板设计的好坏有 关,还跟生成测试用例的过程等环节有密切的关系,因此我们在讲模板达到的测 试目标时是指那些除模板设计之外影响测试目标的因素都处于理想状态下,也就 是说它们不会损失测试目标( 如错误覆盖率和路径覆盖率) 的时候测试用例达到 的测试目标。怎样保持系统的可信性呢? 我们对各种程序不断的进行分类,开始 我们不求覆盖很多类型的程序,只要对一些较简单类型的程序进行细分,对它们 设计可信的模板,这样周而复始我们的系统会越来越大,能力越来越强,却始终 是一个可信系统。道理很简单,集合里的各个元素都是可信的,集合当然是可信 的。 下面我们用数学来迸一步表达模板设计系统的可信性: s = fs i ,5 2 ,j 3 ,j 。,)s 表示模板系统,也就是模板的 集合 ,s :,j ,表示个阶段设计的各种类型程序的模板 因为 5 。,s :,s ,5 。,根据可信设计的原则设计,都是可信 模板,所以s 是一个可信系统。 3 学习能力:模板系统的学习能力是指模板系统通过设计人员的设计不断扩 大,且开发速度更快,设计质量更高,到一定的阶段系统能够达到某种自学习能 力。我们的模板系统的形成正如婴儿的成长:第一个可信模板的生成就如哇畦坠 地的婴儿,它的诞生预示着一个未来的巨人,因为它会学习,懂得怎样去学。从 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 第一个模板那里我们知道怎样去建立一个可信模板,随着经验的增多,这种开发 速度会越来越快。等到了有一定数量的可信模板,就可以进一步对模扳建模,再 次加速开发速度,这种情况,笔者称之为自学习能力。 4 可扩展并最终可覆盖性:模板系统的可扩展并最终可覆盖性是指能逐步的 为更多类型程序的测试提供服务,并最终服务所有类型的程序。这正是因为系统 有学习能力。开始我们鼓励很多的设计人员设计更多的模板,对它们进行评测( 包 括可信性和模板参数等) ,挑选最好的可信模板添加到我们已有的系统中。 3 3 模板设计的原则和设计步骤 1 总原则:易于建立,易于生成测试用例,达到高故障覆盖率和较小测试时 间开销的目的。 图3 2 可信模板的设计步骤 易于建立:模板的设计将会很繁重,如果再加上每个设计很繁复的话,那么 上海大学硕士学位论文 t h e p o s t g r a d u a t et h e s i so f s h a n g h a iu n i v e r s i t y 设计所花费的代价就会太大,使工作难以开展。 易于生成测试用例:模板里存储的测试信息正是为了自动生成测试用例而预 先由程序员埋入的,因此模板的设计应易于导出测试用例。 达到高故障覆盖率和较小的测试时间开销的目的:这是测试的基本准则,就 不阐述了。 2 可信模板设计的原则和步骤 可信模板设计不但需要服从模板设计的原则,而且应该达到预先设定的它对 其所服务程序的测试目标( 一定的错误覆盖率和路径覆盖率) : 其设计步骤: 对所要处理的类型程序进行合理分类。 设定模板需要达到的预期测试目标( 一定的错误覆盖率和路径覆盖率) 。 对分类以后的程序类型设计模板。 依赖基准程序来计算模板达到的测试目标( 基准程序的概念会在下文给出) 。 如果实际测试目标达到预期测试目标,那么这个设计就是可信模板,设计完 成。 如果不是,查找原因,回溯到步骤重新设计,直到设计的实际测试目标达 到预期测试目标。 其过程如图3 2 : 验证模板是否是可信的,需要依赖基准程序来计算模板参数,这在论文的后 面论述。以后我论文所说的模板除特别指出都是指可信模板。 3 4 模板的内容及其在测试中的作用 3 4 1 c h e c k p o i n t 由于程序的规模过于庞大、结构和逻辑过于复杂,为了使程序更易于控制和 观察,在程序合理的位置设定一定数量的控制点和观察点,这些控制点和观察点 成为c h e c k p o i n t 。 定义3 5c h e c k p o i n t :c h e c k p o i n t 是( m ,n ) ( m ,n = 1 ) 二元组,表示 个c h e c k p o i n t 由m 个控制点( 代码段输入点) 和n 个观察点( 代码段输出点) 组成。在程序中以特殊的注释存在。在b i s t 软件测试系统中,c h e c k p o i n t 以 $ c h e c k p o i n t $ 开头的注释存在。 定义3 6 子模板:子模板是与c h e c k p o i n t 一一对应的,存放c h e c k p o i n t 的 控制点和最远观察点之间的代码的测试信息的模板数据库表中的记录。它是模板 的基本元素。 上海大学硕士学位论文 t h e p o s t g r a d u a t e t h e s i so f s h a n g h a iu n i v e r s i t y 图3 3 显示了c h e c k p o i n t 、子模板、模板和程序之间的关系。 在图3 3 中,程序被c h e c k p o i n t 合理划分为不同的测试块,c h e c k p o i n t 的 控制点和它所对应的代码最远的观察点之间代码的测试信息放在个子模板中, 所以c h e c k p o i n t 2 和c h e c k p o i n t 2 的观察点2 对应子模板2 。而一系列的子模板 构成了程序模板。 m a i n o ( $ c h e e k p o i n t $ 控制点1 i n tn u m l ,n u m 2 ; i n t m a x ; $ c h e e k p o i n t $ 控制点1 的观察点 $ c h e c k p o i n t $ 控制点2 i f n u m l n u m 2 $ c h e c k p o i n t $ 控制点2 的观察点1 m a x - - - n u m l ; e l s e $ c h c c k p o i n t $ 控制点2 的观察点2 m a x - - h u m 2 ; 程序模板 子模扳1 子模板2 图3 3c h e c k p o i n t 、程序、模板子和模板的关系 一般m = l ,就是说对于程序设置c h e c k p o i n t 的位置只有一个控制点,一 个控制点的设置决定了模板中一个子模板的产生。因为程序的一个入口可能会有 多

温馨提示

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

评论

0/150

提交评论