(模式识别与智能系统专业论文)基于日志文件分析的手机测试方法研究.pdf_第1页
(模式识别与智能系统专业论文)基于日志文件分析的手机测试方法研究.pdf_第2页
(模式识别与智能系统专业论文)基于日志文件分析的手机测试方法研究.pdf_第3页
(模式识别与智能系统专业论文)基于日志文件分析的手机测试方法研究.pdf_第4页
(模式识别与智能系统专业论文)基于日志文件分析的手机测试方法研究.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(模式识别与智能系统专业论文)基于日志文件分析的手机测试方法研究.pdf.pdf 免费下载

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

文档简介

摘要 随着手机的应用越来越广,人们对于手机软件的要求不断提高,手机软件测试也 越来越受到重视。目前常用的手机测试方法是手工测试,这类方法往往效率较低,而 且容易出错。自动测试方法可以大大减少系统开销,提高软件测试的经济性和修改性。 大多数软件系统都会保存系统运行的日志文件,记录在系统运行过程中发生的各种事 件日志文件分析方法通过对日志文件的分析,可以判断出程序是否存在缺陷。 本文采用形式化语言描述的日志文件分析方法,对手机软件进行测试,选取手机 软件中容易出错的内存管理和具有代表性的应用一j a , v a 游戏进行测试。 一( 1 ) 内存管理测试。由于手机是资源受限的系统,各种资源都非常紧张,对资源 的正确使用非常重要。内存是各种资源的典型代表,分析内存具有普遍意义。本文分 析了内存管理的常见问题,采用日志文件分析方法对其进行测试,验证了该方法的有 效性。 ( 2 ) j a v a 游戏测试。娱乐是当前手机发展的方向。游戏作为娱乐的一个重要方 面已经引起各大手机生产厂商的重视针对手机中的j a v a 游戏,将形式化的日志文 件分析方法用到手机游戏的测试上去,有利于提高手机游戏测试的效率。由于原先的 日志文件分析语言l f a l 相对简单,无法定义内部变量,不支持复杂条件判断,循环 语句,赋值语句等这些常用的过程语句,不适于描述j a v a 游戏。本文提出了扩展的 l f a i h l f a l ,大大增强了语言的描述能力。 关键字:手机软件测试,自动测试,日志文件分析,状态机,e l f a l a b s t r a c t 1 1 1 ei n o l 屯p o p u l a r l ym o b i l ep h o n ea p p l i e d ,m cb e t t e rr , e r f o r m a n e ei tr e q u i r e s s ot h e m o b i l ep h o n es o f t w a r et 船t i n gi sb e i n gp a i di n o l 宅g 比e 商o nt ot h a nb e f o r e m a n u a lt e s t i n g i st l a em o s tc , o l n m o ns o l u t i o nf o rm o b i l ep h o n et e s t i n gn o w b u tt h i sm e t h o dj si n e t f i c i e n t a n de r r o rp r o n e a t m n n a t i et e s t i n gc a nr e d u c et h es y s t e mc o s tg r e a t l y , a n dn 堵l t h et e s l i l a g m o l ee c o n o m i c a la n de a s i e rt or e v i s e m o s ts o l , w a r es y s t e m sh a v el o gf i l e sw h i e l ar 即o r d a l lt h er t m l i m ee v e n t st h a to c c u r r e d l o gf i l ea n a l y s i si s 髓a p p r o a e l at h a tc 锄r e v e a lt h e d e f e c to f t l a ep r o g r a mb ya a l r z i gt h el o gf i l e s i nt h i sw o r k t h ef o r m a ll o gf i l ea n a l y s i sa p p r o a c hi s a p p l i e df o rm o b i l ep h o n e s o t t w a r et c s c i n g m e m o r ym a n a g e m e n tw l a i e hi se i t o i p r o n ea n dj a v ag a m e sw h i e l aa r e t y p i c a la p p l i e a t i o mi nm o b i l ep h o i l es o t t w a l ea f e s e l e c t e dt ot e s t ( 1 ) m e m o r ym a i l a g c m e n tt e s t i n g m o b i l ep l 脚a 把i t 慰d u i c el i m i t e ds y s t e m s i ti s i m p o r t a n tt ou s et h el e f l o u l c c sc o r r e c t l yi nm o b i l ep h o n es o f t w a 砖m e m o r yi st h et y p i c a l 托国o u r c eo fa l lt h em o b i l ep h o n el i m i t e dn 舯u r c ,e s i ti sm 龉n i n g f l at oa n a l y z i n gm e m o r y m a n a g e m e n t c o m m o np r o b l e m si nm e m o r ym a n a g e m e n ta 地a n a l y z e di nt h i sw o r k , a n d f o r m a ll o gf i l ea n a l y s i sa p p r o a c hi sa p p l i e df o rt h e s et y p i c a lp r o b l e m s ,w h i e l av e r i f i e st h e v a l i d i t yo f t l a ea p p r o a c h ( 2 ) j a v ag a m et e s t i a g e n t e r t a i n m e n ti st h eo r i e n t a t i o no fd e v e l o p m e n ti nm o b i l e p h o n e s g a l l i cw h i e l a i s1 1 1 1 i m p o r t a n ta s p e c to fe n t e r t a i n m e n th a v eb e e np a i dm u c h a t t e n t i o nt ob yv a r i o u sm o b i l ep h o n ev e n d o r s a p p l y i n gf o r m a ll o gf i l ea n a l y s i sa p p r o a c h t oj a v ag a m e si sp r o p i t i o u st oi m p r o v et h ee t t i e i e n e yo ft h em o b i l ep h o n e 乎m 砖t e , j t i n g t h ef o r m e rl o gf i l ea n a l y s i sl a n g u a g e - - l f a li sr e l a t i v e l ys i m p l e i tc a n ts u p p o r ti n n e r v a r i a b l e sd e f i n i t i o n p r o c e d u r a ls t a t e m e n t ss u e l aa sc o m p l e xc o n d i t i o n 妇l m i l l a l j o n s t a t e m 粗t s ,l o o ps t a t e m e n t s ,a s s i 9 1 l m e n ts t a t e m e n t s ,就a 1 s o ,i ti sn o tp r o p e rt od e s c r i b e j a v ag a m e s n 掂e x t e n d e dl f a l - - e l f a lw h i e l as u p p o r t sa l lf u n e t i o ma b o v ea n d e l x h a e e st h ea b i l i t yo f d e s e r i b i r i gc o m p l e xs y s t e m si sp r e s e n t e di nt h i sw o r k k e y w o r d s :m o b i l ep h o n es o t t w a r et e s t i n g , a u t o m a t i ct e s t i n g ,l o g f i l e a n a l y s i s ,s t a t em a c h i n e ,e l f a l 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在 本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学 历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。 研究生签名:一蝉呻了年且 孑日 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅 或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送 交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对 于保密论文,按保密的有关规定和程序处理。 研究生签名:j 牵牡1 年,月3 扩日 顾 二论文基于日志文件分析的手机测试方法研究 1 绪论 1 1研究背景及意义 1 i 1 软件测试 随着计算机应用的飞速发展,软件的复杂程度不断提高,源代码的规模越来越大 由于软件本身特有的性质,决定了只要存在一个很小的错误,就可能带来灾难性的后 果。例如,千年虫,。冲击波”病毒,火星登陆事故等。这些都是由于软件本身的缺 陷而造成的严重后果。软件测试作为提高软件安全性,保证软件质量的重要方法,已 经越来越受到人们的关注n 1 9 7 2 年,b i l lh e t z e l 在北卡罗莱那大学举行第一次以软件测试为主题的正式会 议1 9 7 9 年,g j m y e r s 在其经典著作软件测试艺术一书中给出了软件测试的 定义:“程序测试是为了发现错误而执行程序的过程”。测试的目的是发现程序中错误, 是为了证明程序有错,而不是证明程序无错。到了上世纪8 0 年代初期,软件和i t 行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要,软件的全 面质量管理开始被人们理解和重视。这个时候,一些软件测试的基础理论和实用技术 开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也 逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化 评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中, 软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件 质量保证的主要职能,包含软件质量评价的内容。1 9 8 3 年,b i l lh e t z e l 在软件测 试完全指南( t h ec o m p l e t eg u i d et os o f t w a r et e s t i n g ) 一书中指出:“测试是 以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。” 这个定义至今仍被引用。软件开发人员和测试人员开始坐在一起探讨软件工程和测试 问题。软件测试有了行业标准,1 9 8 3 年i e e e 删提出的软件工程术语中给软件测试下 的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于 检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确 指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性 的,而且只是开发后期的活动,而是与整个开发流程融合成一体。软件测试已成为一 个专业,需要运用专门的方法和手段,需要专门人才和专家来承担到了2 0 0 2 年, r i c kd c r a i g 和s t e f a np j a s k i e l 在系统的软件测试( s y s t e m a t i cs o f t w a r e t e s t i n g ) 中对软件测试做了进一步定义:“测试是为了度量和提高被测软件的质量, 硕士论文基于日志文件分析的手机测试方法研究 对测试件进行工程设计、实施和维护的整个生命周期过程。”这些经典论著对软件测 试研究的理论化和体系化产生了巨大的影响。 1 1 2 软件测试的过程 测试过程从软件需求分析阶段开始,一直到整个软件开发结束为止时】。软件测试 旨在找出软件中存在的缺陷,而测试过程本身应该快、花费小而且尽可能有效“”, 然而大的软件项目往往花费整个开发5 0 9 6 的成本“”。1 软件开发的基本过程,可以简单描述为需求分析、设计、编码、测试和维护等几 个阶段,即通常所说的“传统生命周期”,也就是著名的软件开发过程能够的“瀑布 模型”,如图1 1 2 1 所示。 图1 1 2 1 软件开发过程的瀑布模型 v 模型说明了何时应进行测试,它指出了每个开发活动都有其相应的测试活动, 每一层的测试检验都与相应的开发活动相对应。如图1 1 2 2 所示,模型左边的每个 开发活动都与右边的测试活动相对应。 2 硕士论文基于日志文件分析的手机测试方法研究 i i 3 软件测试方法 图i i 2 2v 模型示意图 软件测试方法根据测试对象在测试过程中是否发生状态变化分为两大类;静态测 试和动态测试根据对测试对象的了解程度,分为黑盒测试和白盒测试。 静态测试 静态测试就是静态分析,对模块的源代码进行研究,查找错误或收集一些度量数 据,并不需要对代码进行编译和仿真运行。静态测试采用人工检测和计算机辅助静态 分析手段进行检测,只进行特性分析 动态测试 动态畏2 试是通过观察代码运行时的动作,来提供执行跟踪、时间分析,以及测试 覆盖度方面的信息。动态测试通过真正运行程序发现错误。通过有效的测试用例、对 应的输入输出关系来分析被测程序的运行情况。如图1 1 3 1 所示。 3 硕士论文基于日志文件分析的手机测试方法研究 图1 1 3 1 动态测试示意图 黑盒测试( b l a c k - b o xt e s t i n g ) 黑盒测试,也称为功能测试或数据驱动测试,如图1 1 3 2 所示。它不管程序内 部结构是什么,只是从用户出发,根据产品应该实现的实际功能和已经定义好的产品 规格,来验证产品所应该具有的功能是否实现,每个功能是否都能正常使用,是否满 足用户的需求。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内 部结构和内部特性的情况下,测试人员针对程序接口和用户界面进行测试,只检查程 序功能是否按照需求规格说明书的规定正常使用,程序是否适当地接收输入数据而产 生正确的输出信息,并且保持外部信息的完整性。 黑盒测试具体方法有等价类划分,边界值分析、错误推测法、因果图等。 图1 1 3 2 黑盒测试方法示意图 4 硕士论文基于日志文件分析的手机测试方法研究 白盒测试( , h i t e - b o xt e s t i n g ) 白盒测试也称为结构测试或逻辑驱动测试。它是已知产品的内部工作过程,清楚 程序的结构和设计,按照程序内部的结构测试程序,测试程序内部的变量状态、逻辑 结构、运行路径等,检查程序内部的每条通路是否都能按照预定的要求正确工作,检 查程序内部动作或运行是否符合设计规格要求,所有内部成分是否按规定正常进行。 白盒测试要求全面了解程序内部逻辑结构和处理过程,以检查处理过程的细节为基 础,要求对程序的结构特性做到一定程度的覆盖,对所有的逻辑路径进行测试,并检 验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。 白盒测试用例的常见设计方法有逻辑覆盖、循环覆盖和基本路径测试“町 1 i 4 软件测试阶段 针对于软件开发,每个阶段测试都要傲不同的事情“。这些阶段分为;规格说明 书审查、系统和程序设计审查、单元测试、集成测试、系统测试、验收测试和回归测 试。 需求分析规格和说明书是否完整、正确、清晰是软件开发成败的关键。为了保证 需求定义的质量,应该对其进行严格的检查。测试人员要参与系统或产品需求分析, 理解客户需求,检查规格说明书对产品描述的准确性、一致性“】。 系统和程序设计审查主要是代码审查,它是一种静态的白盒测试方法,由一组人 通:过阅读、讨论来审查程序结构、代码风格、算法等的过程。代码审查做得好,可以 发现大部分的程序缺陷,从而进行程序结构调整,参数优化,最终改善软件的质量。 单元测试主要针对程序系统中的最小单元模块或组件。因为仅注意程序的 某一部分,单元测试找错的过程相对简单。多个模块可以并行测试,一般需要测试人 员写一些测试代码如驱动模块和桩模块,它们一般在测试过后就被抛掉,不会出现在 产品的最后发布版本中“”。 集成测试,也称组装测试、联合测试。在每个模块完成单元测试后,将模块连接 起来进行测试。确定它们的功能是否正确地组合在一起。通常,测试的重点是两个部 分有相互关联的地方当有新功能加入到应用程序中后,要继续进行集成测试。继承 测试有增量式和非增量式测试两种“” 系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性 和性能等满足其规约所指定的要求。它集中于多个代码模块和整个系统。系统测试的 目的是将系统或程序与原始目标作比较。因此,系统测试的目的不是为了去找b u g , 而是强调一个系统应该做什么,应该做到哪种程度。软件系统测试方法很多,主要有 功能测试,性能测试、随机测试等等。 验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据 5 硕士论文基于f i 志文件分析的手机测试方法研究 通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者 代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。 回归测试是在软件维护阶段,对软件进行修改之后进行的测试“”。其目的是检 验对软件进行的修改是否正确。这里,修改的正确性有两重含义:一是所作的修改达 到了预定目的,例如错误得到改正,能够适应新的运行环境等等:二是不影响软件的 其他功能的正确性n ”。 1 1 5 测试设计流程 为了从测试中得到最大收益,测试必须贯穿于产品开发的整个生命周期项目 一开始,软件测试也就开始了测试应该与开发集成在一起,测试应该尽可能早的开 始,高层次的测试应该从项目说明阶段就开始了,如图1 1 5 1 所示。 需求、 舞。布徘撕、名试发布和维护结构爰钎 黝军试详伶 广 集成和测善 编i 鼎单元铡 夕”1 r ” 与软件开发相类似,软件测试过程可分为七个阶段。计划,设计,实现,运行, 分析畏9 试结果,记录结果,评定测试目标是否完成,如图1 1 5 2 所示。 6 硕士论文,基于日志文件分析的手机测试方法研究 黼 结果记录 计划 t 实 运行 十, 、“ 首先,要确立测试目标( 决定测试什么) ,接着做测试设计( 决定使用什么样的测试 策略来创建测试来达到测试目标) ,然后生成测试用例,编写测试所需要的辅助代码, 执行测试过程。最后维护测试结果c 更新测试来反映测试目标和错误的变化) 这可 以与软件开发对应起来,见表1 1 5 1 表1 1 5 1 软件和测试件关系 , 软件测试件。 需求授格说明测试对象 ( 确定做什么)( 确定测试什么) 软件设计 测试设计 ( 确定如何设计产品( 确定如何创建测试策略 来满足目标)来满足测试目标) 编码生成测试流程 验证目标是否达到执行测试过程, 维护维护 ( 由错误和目标变更( 由错误和目标变更 导致的代码更新)导致的测试更新) 7 硕士论文基于日志文件分析的手机测试方法研究 1 1 6 软件测试自动化 软件测试涉及到大量的测试用例的执行。按其执行方式,分为手工测试和自动测 试。前者“”在测试过程中涉及到大量的人的介入。而后者则表明了测试过程是自动执 行的。 自动软件测试删可以大大减少测试开销,同时大大增加在有限时间内的测试。 自动测试可以在几分钟内完成,而相应的工作在手工测试中则可能需要几小时。成功 的测试自动化机制,可以在机器空闲时通过“按钮触发”执行夜间测试。自动测试是 可重复的,在相同的序列中使用完全摆同的输入在进行测试,而这有时候用手工测试 是无法保证的“”。 无论自动测试还是手工测试都不影响测试的有效性和仿效性。无论自动测试如何 出色,如果测试本身是失败的,那么测试结果也将毫无意义。自动测试只是对测试的 经济性和修改性有影响。如图1 1 6 1 所示。 有效性 自动测试,劣 手m 测试 。夕汤 修改性7 森f 二式 受心纱 第一次执行 可仿效性 图1 1 6 1 测试事例的特点可以以k e v i a t 图的形式说明 ( 每个特性的坐标点越大,由连线组成的封闭区域越大,测试事例就越好。) k e v i a t 图的形式说明了测试事例的四个质量特性。手工执行的测试事例用实线表 示。第一次自动执行相同测试事例时,其修改性和经济性较低( 由于在自动化上花费 8 硕士论文基于日志文件分析的手机测试方法研究 功夫) 。自动化测试运行多次以后,就比手工执行相同次数的测试经济得多。随着软 件测试的代价不断提高,自动测试己近越来越受到人们的关注。 1 2手机测试 对于一般软件,其开发环境与最终的运行环境是一致的。然而对于手机这样嵌入 式系统来说,其软件的开发环境和最终的运行环境往往存在着很大的差异。一般这样 的软件开发采用交叉方式:开发工具运行在软硬件配置丰富的宿主机( h o s t ) 上,而 嵌入式应用程序则运行在软硬件资源紧张的目标机( t a r g e t ) 上。目标机与宿主机之 间的通信采用串口或以太网连接。测试时,把交叉编译生成的应用程序包烧到目标机 上,通过串口通信在宿主机上查看跟踪信息借助此定位系统的问题。 由于嵌入式本身的特点,例如实时性,内存容量有限,开发工具昂贵,并且与硬 件紧密相关。嵌入式软件的测试与传统的测试不同之处在于铡试要同时在宿主机和目 标机上进行。单元测试和集成测试都可以在宿主机上测试,而系统测试和验收测试则 需要在目标机上进行。因为这些过程都不能够通过模拟来达到最真实的环境,必须在 目标机上运行,这关系到软件的最终使用。 在手机测试中,一个重要的特点是其自动化程度不高。例如,手机的功能测试很 容易给人一种简单而重复按键操作的感觉。但由于手机功能众多,并且回归测试工作 量大,如果单个测试工程师靠手动按键来执行所有测试用例,花费的时间少则几小时, 多则需要几天的时间,这样耗费大量 测试时间的同时也容易让测试工程师产生疲倦甚 至是厌倦心里,很容易造成测试的遗漏。手机测试中常碰到很多重复性高的工作,如 发送数条s m s 或者h n l s 以验证其收发成功率以及稳定性、连续进行多次呼叫、多次对 文件系统进行添加删除操作、多任务多进程情况下的冲突测试以及极限测试等等,都 是重复性高的工作,手动执行的话费时费力。如果能有一套自动执行的机制,将能大 大提高测试的效率。由于手机平台的特殊性,国内通常都没有自动化测试工具支持手 机功能测试,纷繁复杂的功能测试大多只能通过文本化测试用例的指导,由广大测试 员手工来完成。 1 3本文主要工作和结构 根据本人在某外企( 该公司通过c 删1 5 认证) 实习的经历,针对手机软件的测试做 了以下工作 针对手机测试中自动化程度不高的缺点,采用日志文件分析方法对被测软件产生 的日志进行自动分析,来判断程序是否有缺陷。 一般动态测试方法主要包括三个部分:首先,根据需求和测试的目标来选择测试 9 硕士论文基于日志文件分析的手机酒试方法研究 用例,然后对被测软件进行测试。最后。拿测试结果与期望的输出作比较,判断被测 软件是否有缺陷。这一过程,最后的比较往往由入来做。但是由于有大量的测试要做, 产生的结果也是非常多的。人工比较的效率会非常低,而且容易出错。用一般自动工 具比较,首先要给出期望输出,然后编写程序作比较。这也存在着很多问题。很多时 候期望输出并不能确定的给出。例如测试一个耳机是否正常,播放音乐时应该可以 听见。如果要用大量的测试用例,对每一个测试用例都给出其期望输出就很不现实。 例如,在随机测试和压力测试时,往往不能事先给出期望的结果。所以,找到一种方 法能够不用直接将测试结果与期望输出比较,就可以判断出程序是否有缺陷,这就避 免了上述闯题。日志文件分析方法正是这种方法。 日志文件分析方法( l o gf i l ea n a l y s i sa p p r o a c h ) 是由a n d r e w s 提出的嘲,利 用测试过程中产生的日志,采用形式化的方法来分析日志,从而了解到被测软件本身 的缺陷。 图1 3 1 日志分析过程 多数软件在运行的时候都会输出一些称为日志的文件这些文件记录了在程序运 行时系统的行为和状态,例如输入,输出,变量的值,函数调用的参数,返回值等。 当程序出现问题,程序员可以通过检查日志来发现和诊断程序中的问题。我们称为( 非 形式化的) 日志文件分析。利用形式化方法,可以更容易地分析程序的错误。首先, 指定哪些程序要记录日志文件,如何记录。然后形式化地指定日志文件的格式根据 l o 硕士论立基于日志文件分析的手机测试方法研究 不同的输入,运行程序,利用形式化的日志文件分析方法,看看程序的日志是否按照 预期的规格输出,如果不是,重新运行程序,再检查。 日志文件分析方法的思想如图1 3 1 所示。首先,在被测程序中插入产生日志的 代码。运行被测程序,输出日志。然后,利用日恚分析器来分析日志。如果分析器接 受了日志- 那么说明没有发现程序错误。反之,程序有错。日志文件分析器是一组状 态机,它们各自在日志中找到可以识别的日志纪录,分别分析。当所有状态机都接受 日志时,日志才被分析器接受a n d r e w s “1 定义了一种语言l f a l ( l o g f i l ea n a l y s i s l a n g u a g e ) ,用来编写日志文件分析器。针对其描述能力差的缺点,本文提出了扩展的 语言e l f a l ,用于手机游戏浸0 试。 本文结构是: 第一章对软件测试的现状进行综述,并分析了手机测试与一般软件测试的不同之 处,概括了论文的研究内容和研究思路。 第二章详细介绍日志分析方法的原理及实现,并给出简单的测试实例。 第三章针对手机软件中的内存管理缺陷,指出a n d r e w s 方法的缺陷,通过扩展状 态机对内存的使用不当缺陷进行检铡、定位。 第四章对手机中的j a v a 游戏采用日志文件分析方法进行测试分析。根据提出的 e l f a l 实现了分析器。 第五章绘出结论和未来展望部分。 i 4本章小结 本章首先介绍了软件测试的相关内容,包括软件铡试的发展、测试的过程、测试 方法、测试流程的设计以及自动化测试,然后给出手机测试的特点和难点,最后给出 了本文的研究内容和研究思路。 颈上论文 基于日志文件分析的手机测试方法研究 2 日志文件分析方法 2 1 日志 大型软件系统一般会记录一些日志文件,报告程序运行过程中发生的各种事件。 这些日志文件可用来调试程序,查找软件缺陷,做回归测试等。在软件质量保证专家 的眼里,一个好的日志可以让调试变得简单。你不需要在调试模式下去运行程序就可 以从更高的层次去追踪程序的执行过程。但是,多数情况下,日志文件都很大,而且 结构复杂。采用一般的( 非形式化) 日志文件分析方法来分析这些日志比较困难。 a n d r e c s 1 提出的形式化的日志文件分析方法简化了这种分析。 2 1 1 日志文件的形式化定义 定义2 1 设r 为报告元素集合,茁置为关键字集合,定义报告为以关键字开始 的有限报告元素序列。即 r = k f p 是报告元素 k = 恤l 七为关键字 r e p o r t = k , e 1 ,e 2 ,e n 孵。是由置生成的报告集合。 定义2 2 定义报告序列是报告的有穷或无穷序列。对于有穷报告序列p ,定义报 告序列的长度为i p i ;对于无穷序列p ,规定i p m 。 无穷报告序列表示程序在不断地运行,例如操作系统。报告序列是一种数学概念; 日志文件是现实世界的表示。简单起见,我们基于一个有穷报告序列,给出简单的日 志文件定义。 定义2 3 描述函数是一个单射函数a ,表示从报告元素集合r 到非空的a s c i i 字 符串集合c 的映射。 口:r 斗s e 卜口0 ) = j 对于关键字k ,口( t ) 为以小写字母开始的字母和下划线组成的字符序列。 定义a ( e l ,p ) 为a ( e 1 ) :6 :6 :口瓴) ,则描述函数口可扩展为从报告到a s c i i 字符串的映射。其中:表示字符串连接运算符,b 表示a s c i i 的空格。 定义a ( r o ,) 为a ( r o ) :脚:朋:口( ) ,则描述函数a 可进一步扩展为从有穷 报告序列到a s c i i 字符串的映射。其中:川表示行结束符 给定有穷报告序列t ,我们称a ( t ) 是与t 对应的日志文件 ,2 硕士论文基于日志文件分析的手机铡试方法研究 2 1 2 日志性质 通常,程序的日志文件有以下的特性删: ( 1 ) 与程序的其它输出不同,日志文件以a s c i i 文本方式输出。 ( 2 ) 程序刚执行时。日志文件是空的或者是上次程序执行所生成的日志。程序 执行时,系统不断地向日志文件中添加日志,但不改变或删除以前保留的日志内 容 ( 3 ) 日志文件中韵每一行记录了一些事件:比如输入、输出,变量的值。消息 的接收和发送,函数调用参数、返回值等。 日志记录的内容是程序员认为对系统检测或故障定位有用的信息。 日志文件的格式十分简单,但是仅靠人眼一行行的去检查日志文件,不仅枯燥而 且很难发现错误。所以需要有一种自动日志文件分析方法来生成报告,报告中直接给 出错误信息一如果日志文件和规格说明不符,给出具体出错信息。 如果简单的日志文件只记录一类信息,可以用一定的规则写一个简单的日志分析 器来分析。但是多数情况下,日志文件中都同时记录了多类信息。传统的日志分析器 就会变得非常复杂。我们可以想象一个日志文件分析嚣,它由多个独立的线程组成, 每一个线程分析一类信息。这在形式语言中很容易用状态机表示。每一类信息都是一 个状态机j 状态机直接相互独立处理各自的接受的信息。采用形式语言,可以定义一 个自动日志文件分析器。 本文研究的这种形式日志文件分析法,跟通常的分析方法相比具有如下特点: 形式日志分析器可用作为一种测试准则,能够自动评价测试例子的输出结果。 日志文件分析器是一个形式定义对象,独立于具体的源语言实现。基于形式日志 文件分析的能力,我们能建立一种软件测试方法,在不影响传统的开发方法下,提高 准确率。因此,形式日志文件分析方法可应用于自动化测试和软件可靠性。 2 2日志文件分析器原理 定义2 4 一个报告元素集合r 的日志文件状态机肿是一个六元组: m = ( 玎,q ,f ,f ,d 酬。其中: 再是状态机的名字。 q 为状态集,它是一个可数集合,可以是有穷或无穷。其中每个元素称为一个状 态。 j 口,是唯一的一个初态。 f eq ,是一个终态集,终态也称为可接受状态或结束状态。 吼。,是一个可数集合,表示状态机所接受的报告集合。 1 3 硕士论文基于日志文件分析的手机铡试方法研究 占q n q ,是转换关系。艿( ,s 2 ) 表示:当前状态为 ,收到一个报告,后, 转移到状态矗。 日志文件分析器是由状态机组成的可数集合。即m = m f 衲状态机 对于分析 器中的状态机册,其状态集合为q _ ,转换关系为瓦。 为了研究状态机对于报告序列的可接受性,引入状态函数的概念。 定义2 5 日志文件分析器盯的一个状态函数为从任意肌e m 到其状态集q 二中 的某个状态的映射。状态函数捕获了关于“当前状态”的所有信息。给定一个报告序 列,由状态函数可以得到肘中所有状态机的当前状态。状态函数的序列记为口。 定义2 6 日志文件分析器m 的一个状态函数序列称为部分可接受序列,如果满 足下列条件: ( 1 ) 对于空报告序列,只有一个状态函数聊7 的状态函数序列是可部分可接受 序列,如果v 历m ,有c e r r ( m ) e e 。 ( 2 ) 对于报告序列( ,p ) ,状态函数序列( t 坍舯,矿) 是部分可接受序列 存在m m ,满足r 仨量 对所有的朋e m ,要么r e 虬且以( 洲( 所) ,c u , r r ( 嗍,要么r 叠帆而 且c l 胛( 所) = c 折,( 研) 。 序列( c 埘- r ,纠是对p 是部分可接受序列。 以上定义表明,当报告序列为空时。可接受的状态函数序列只包含一个状态函数, 分析器中所有状态机的状态都是终态。当报告序列不空时,报告序列的报告一定有状 态机可以接受,并且,这条报告可以使状态机由当前状态函数所指的状态转移到下一 个状态函数所指的状态。 定义2 7 分析器m 的以伽甲开始的非空状态函数序列是一个可接受序列。只要 满足: v r nem ,有c 埘甲( 脚) = ,即起始状态函数所指的状态为初态。 对于一个报告序列,通过分析日志文件分析器的所产生的相应的状态函数序列的 可接受性,就可以分析一个报告序列的可接受性。 日志分析器接受一个报告序列p ,需要满足以下条件: v r e p ,j 肼e m m 可接受,且p 使得坍的状态从初态开始转移,到终态 结束( 如果p 是有穷的) 。 日志分析器拒绝一个报告序列,只要有下列任一条件满足: ( 1 ) p ,对于v m m ,m 不可接受r 。 ( 2 ) 对于,p 。j 肼e m ,它能接受,但是不能进行状态转移 ( 3 ) 报告序列结束后,仍然存在不处于终态的状态机。 l i 硕士论文基于日志文件分析的手机测试方法研究 2 3l f a l 语言 a n d r e w s 定义了一种简单的语言l f a l ( l o gf i l ea n a l y s i sl a n g u a g e ) 来实现日志 文件分析器。l f a l 的语法如图2 3 1 所示。 :- i ) :- m a c h i n e c t e r i 口 ; ) :- i n i t i a l s t a s e t e 】1 l : i 【, ; if l n a l s t a t e t e 功 ; 、 :- f r o m io 血 lt o t e r m ii f 1w h e x e l m e n d i n g :- i i i t a r i ”( ” 。 ”) ” 图2 3 1l f a l 语法图 在l f a l 中,一个分析器可以由无穷多个状态机组成。对于状态机,需要指定其 名字,初态,终态和状态转换关系。状态转换关系由 表示,需要指定 原状态,目标状态,触发转换的消息和转换条件。 l f a l 的e b n f 中,k e o r d 是以小写字母开头,字母、数字、下划线组成的符号 串s t r i n g 是在双引号内的a s c i i 符号串。n u m b e r 是数字串。v a t 是以大写字母开 头,字母、数字、下划线组成的符号串。 在报告元素是一个可数集,k e y w o r d s ( 小写标志符) ,实数( 一般数字) ,a s c i i 字 符串( 双引号内) 。 每一个r e p o r t 由相同的报告元素组成,使用同样的描述函数,七e i 。e 。表示为 七( 一1 ,p ) 也就是一个以七为函数名,q ,e 。为参数的先序序列。 2 4 日志文件分析器实例 本节用一个实例来说明日志文件分析的过程。 房间里有一个加热器。当房间温度低于2 0 度时,加热器打开,开始加热。当加 热到房间温度高于2 0 度时,加热器关闭,停止加热。如此循环,使房间温度始终保 持在2 0 度左右。用一个加热器监控程序来控制这一过程。现在用日志文件分析方法 颈士论文 基于日志文件分析的手机测试方法研究 来测试这个监控程序。 首先,在监控程序中嵌入代码,在程序运行过程中生成日志。如图2 4 1 所示。 t 叫d2 i t 锄p2 0 t 唧1 9 h e a _ c e ro n t 鲫pi 9 t 唧2 0 t e 加2 1 h e a t e ro f f t e m p2 1 图2 4 1 加热器监控程序日志 程序每隔5 秒从温度计读取温度,将温度值n 记录在日志文件中,表示为t e m pn 。 当房间温度低于2 0 度时,监控程序就打开加热器,并在日志文件中记下h e a t e ro n : 当房间温度高于2 0 度时,监控程序关闭加热器,在日志文件中记下h e a t e ro f f 。监 控程序的控制过程可以用状态机来表示。如图2 4 2 所示。 图2 4 2 加热器监控程序的状态机 一口k 2 0 ) 图中,用带箭头的圈表示初态,用两个圈表示终态。状态转换条件用方括号表示。由 于这个例子中,日志文件只记录了一类信息,所以日恚文件分析器只由一个状态机构 成。根据状态机分析日志一开始,加热器处于关闭状态,当温度在2 0 度以上时, 状态保持不变。当第3 行t e r n p1 9 ,温度低于2 0 度,加热器由关闭状态进入应该开 启状态。随后,h e a t e ro l l 消息到来,加热器进入开启状态。接下来,t e m p1 9 ,温 度低于2 0 度。不变。t e m p2 0 ,进入应该关闭状态。接下来,第7 行,收到t e m p2 1 的消息。但是此时状态“s h o u l d b e o f f ”只接受h e a t e ro f f 消息,才可以转移状态。 1 6 颈士论文基于日志文件分析的手机测试方法研究 所以,第7 行有误。 用l f a l 语言实现这个状态机,如图2 4 3 所示 m a c h i n eh e a t e r m o n l t o r ; i l d t i a l s t a t eo f f : f r o mo f f ,o nt 鲫p ( n ) i f ( 耳 - 2 0 ) ,t oo f f ; f r o mo f f ,o nt e m p ( g ) , i t ( 玎2 0 ) ,t os h o u l d b e o n : f r o ms h o u l d b e o n ,o nh e a t e r ( o n ) , t oo r ; f r o mo n 。0 1 1t e m p ( h ) , h ( h 2 0 ) 1 oo n ; f r o mo n ,o nt e m p ( n ) 。 i t ( 玎 - 2 0 ) t os h o u l d b e o f f ; f r o ms h o u l d _ h e o f f ,o nh e a t e r ( o f f ) , t oo f f ; f i n a l s t a t ea n y 图2 4 3 加热器监控程序的l f a l 实现 运行分析器,可以得到结果如图2 4 4 所示。与手工分析的结果一致。 e r r o r0 1 1l i n e7 : m a c h i n e :h e a t e r m o n l t o r c u r r e n _ 乞s t a t e :s h o u l d b e o f f r e p o r t l m e s s a g e :t e m p ( 2 1 ) e r r o r :,a l lt r a n s i ti o n sb l o c k e d e n do fr e p o r tt r a c e 9l i n e sp r o c e s s e d 1 1m a c h i n e sl e f ti nf i n a ls t a e e s 图2 4 4 监控程序测试结果 2 。5本章小结 本章主要介绍了日志文件分析方法的原理以及实现方法。首先给出形式化的日志 1 7 硕士论文 基于日志文件分析的手机舅试方法研究 定义,分析器定义。然后介绍l f a l 语言实现日志文件分析器。 1 8 颈士论文基于日志文件分析的手机测试方法研究 3 基于日志文件分析的内存测试 3 1问题的提出 3 i i 测试标准 1 9 8 3 年i e e e 提出的软件工程标准术语中给软件测试下的定义是:。使用人工或 自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是 弄清预期结果与实际结果之间的差别”田。定义包含了两方面的含义: ( 1 ) 是否满足规定的需求 ( 2 ) 是否有差别 如果有差别,说明设计或实现中存在故障,自然不满足规定的需求。因此,该定 义非常明确地提出了软件测试以检验软件是否满足需求为目标。 h e n n e l l 提出。测试的目的是要提供有说服力的证据证明软件没有故障,或是显 示某种特殊类型的故障不存在”。事实上,测试只能表明故障存在,而不能证明故障

温馨提示

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

评论

0/150

提交评论