文章

嵌入式系统软件测试的研究

2021-10-25李丹荔

935阅
本文对嵌入式系统的构成特点进行了分析,围绕具体测试案例对动静态功能测试法、全覆盖测试法、基于“错误推测”配合使用的黑盒(灰匣子)测试法各自的适用范围及优缺点进行了分析,以供参考。
   一、嵌入式系统的特点分析
 
   在高校计算机相关专业中有一门课——单片机,即是一种微型集成电路芯片,包含具有数据处理能力的中央处理器(CPU)、具备随机存储功能的RAM(存储)、ROM(只读存储器)、多个输入/输出接口(I/O口)以及中断系统、定时器等器件。上述所有功能均集中在一个小型的芯片之中。围绕单片机进行开发、仿真、测试的全过程实际上即是构成了嵌入式系统。时至今日,人们对计算机、自动化控制的运行原理已经不再陌生,即是控制系统执行预先编写好的程序,按照一定的顺序在特定时刻控制相应的设备做出相应的动作。单片机嵌入式系统同样如此。一般的测试流程为:第一,学生根据需要测试对象的复杂程度,选取适合的单片机芯片(如高校普遍选用89C51系列单片机);第二,根据需要测试的内容,提前编写程序(或直接从开源网站上下载),使用程序置入设备,将程序转存进单片机(一般一个单片机只能同时存储一套程序,超出便容易引发混乱);第三,将单片机芯片、用于测试的其他电路设备(如LED灯、数字显示屏、开关等)、电源等均连接在电路板上,闭合电源开关(复位)之后,便可进行测试。对上述过程进行狭义理解——将程序置入单片机的过程即为“嵌入”,由此构建的逻辑控制运行系统即为“嵌入式系统”。
 
   二、嵌入式系统软件测试的常用方式
 
   (一)动静态测试
 
   1.静态测试
 
   静态测试过程不必执行程序代码,只需借助一些专用的软件测试工具即可完成测试。比如美国 McCabe&Association公司生产的静态测试工具 McCabeQA 软件,应用了软件结构化测试理论,即对模块内部的独立线性路径数量进行检测,可有效评估嵌入式系统软件的复杂程度。此种检测方式具备可视化特性,嵌入式系统的控制程序能够以结构图分布的方式予以呈 现。由于具备不同功能的代码显示在相应的位置,且能够与视图一一对应,故程序中如果存在问题,可在极短时间内确定。
 
   静态测试还有一种自动化工具—— QAC/C++,主要用于对代码规则进行检查。检测的基本准则参照C++程序编译过程中的一般标准,即编写的代码中是否存在逻辑不通、不具备可读性、结构不合理等问题。同样,该过程仍然无需运行程序,只需对照程序编写相关标准,找出“违规项”即可。
 
   2.动态测试
 
   动态测试与静态测试相反,需要运行程序代码,根据实际结果,对照预期结果,分析程序运行效率、是否正确、健壮性等等。以上文提到的单片机嵌入式系统为例。测试用例设置为:一个简单的计算器计算程序(1 0 以内加减法);程序中代码的部分原理大意为:①输入任意两个个位数相加嵌入式系统软件测试的研究后得到的“和”;②若两数相加结果超过“10 ”,则个位数仍然按照正常计数,十位数字应从“0 ”调整为“1 ”。执行程序过程中,当显示界面给出“请任意输入两个 10 以下的数字”时,测试人员可按照相关提示执行相应的操作,根据程序自动计算出的结果,判断程序代码是否有误。
 
   (二)覆盖测试
 
   嵌入式系统中存在“输入”和“输出”项,二者之间存在并执行着部分算法。常规的功能测试实际上是一种“不透明”测试,即输入与输出之间的算法究竟是什么不得而知。如上文动态测试部分列举的计算器“10以内加减法”程序测试,只需人工介入,判断计算器运行期间,人工输入的两个数相加结果是否正确,即可判断该程序是否有误。但在检测阶段,如果检测人员不知道计算器的程序代码,则在测试的过程中也不可能知道具体的算法构成。总体而言,上述动静态功能测试几乎不会执行所有的程序代码,故会导致程序测试过程可能存在疏漏。为解决该问题,研发人员提出了一种“覆盖”测试方法,希望改变动静态功能测试的“程序测试不全”这一缺点。此种方法的理想设定为:希望程序代码的每一条语句、每一个判定点、每一条判定路径都能至少被检测一次。如果嵌入式系统的中央处理器为单片机芯片,则覆盖测试过程访问的全部空间即为单片机数据存储空间的实际大小。
 
   (三)黑盒测试
 
   上文选用为测试案例的计算器 10 以内加减法的程序代码条数较少,共计数十条(不超过100条),故无论选择何种测试方法,所耗时间都不会太长,测试结果的准确性也较高。但这一切都是建立在程序代码本身长度极其有限,代码逻辑控制功能十分简单的基础上。如果将测试建立转变为复杂嵌入式系统,有关软件的程序代码高达上万条,则采用覆盖测试法便会面临巨大的成本支出。为了避免将大量时间浪费在几乎不可能出现的基础性语句方面,转而针对一些功能细节进行测试,可使用黑盒(灰匣子)测试法。此种测试方法的原理为:在测试开展之前,测试人员必须对代码程序十分了解,明确问题高发点。当“错误推测”与针对性的语句测试搭配使用时,测试效率会大幅度提高。
 
   三 、结语
 
   综上所述,嵌入式系统软件测试的具体方式多种多样。为了提高测试效率和测试结果的准确性,测试人员应根据程序代码的复杂程度、条数等选择合适的方法,能够起到事半功倍的效果 。
 
   参考文献:
 
   [1]黄松,陈明宇,颜运强,等.模型驱动的嵌入式系统测试脚本生成方法研究与实现[J].测控技术,2020,39(06):34-40.
 
   [2]齐迪.软件测试方法在嵌入式系统中的应用[J].电子技术与软件工程,2018(05):51.
 
作者简介:
李丹荔(1981.09—),性别:女;籍贯:天津,民族:汉, 最高学历:硕士;目前职称:副高级工程师。 作者单位:中兴通讯股份有限公司天津分公司
责任编辑:杨培
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并以尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
读者评论 (0)
请您登录/注册后再评论
相关阅读