论文部分内容阅读
摘 要:随着嵌入式系统应用的不断发展,嵌入式软件系统的可靠性与安全性尤为重要。合理有效运用嵌入式软件测试的策略和技术,提高系统开发效率,保证嵌入式软件产品质量。
关键词:嵌入式;软件测试;实时性;覆盖率
中图分类号:TP311.52
嵌入式软件在智能设备中得到了广泛的应用。国内外对嵌入式软件人才需求量巨大。人才需求较多的有汽车电子行业、移动互联行业、工业自动化行业等等。最近几年,随着3G移动互联网技术的发展,嵌入式的手机软件开发行业在云计算和物联网产业的带动下,发展迅速。很多高职高专院校开设了嵌入式软件开发相关课程,培养嵌入式软件开发人员,以适应市场的需求。
软件测试的目的是为了尽可能多的找到软件中的缺陷,尽量避免由于软件问题而产生的巨大经济损失,保证软件满足需求规格说明。嵌入式软件产品必须有一套专门的测试技术以保证嵌入式软件的质量。嵌入式软件测试是嵌入式软件得以生存和发展的重要基础。嵌入式软件测试作为计算机软件专业的分支之一,是嵌入式软件开发的必要环节。在整个软件体系中占据重要的地位。
1 嵌入式软件测试的概述
1.1 嵌入式软件测试的特点。嵌入式软件的开发需要与之对应的嵌入式开发环境,需要具有一定的软硬件要求并且要保证软件实时性等要求。所以嵌入式软件开发与普通软件开发存在一定的差异。因此,嵌入式软件的测试工作也不同与一般软件的测试工作。嵌入式软件测试又称为交叉测试(Cross-Test),其目的是为了保证嵌入式软件产品的满足用户的需求。嵌入式軟件测试与一般软件测试的区别主要体现为以下几点:(1)嵌入式软件测试与其特定的硬件环境是密不可分,嵌入式软件测试中对嵌入式软件与硬件的兼容性测试至关重要。(2)嵌入式软件对实时性要求严格。嵌入式软件测试要保证软件系统的可靠性和实时性。测试需要充分考虑系统实时性响应问题。嵌入式软件测试要求有严格响应时间要求的负载测试工作。(3)嵌入式系统常出现内存的问题。嵌入式软件测试需要对内存泄漏、内存碎片等问题进行充分测试,并且尽早的测试。防患于未然。
1.2 嵌入式软件测试的环境分析。嵌入式软件开发环境与运行环境是不同的。嵌入式软件开发环境称为主机环境,软件的实际运行环境称为目标环境。针对目标环境的测试比针对主机环境的测试工作内容要多很多,需要投入较多经济费用。而针对主机环境的测试不能充分完全的模拟目标环境。因此在嵌入式软件测试中充分地利用了高级语言的可移植性,将与目标环境无关的测试比如逻辑测试、界面测试等工作转移到主机环境中完成。这样可以加快测试的进展。系统中与硬件密切相关部分比如硬件接口测试、中断测试、实时性测试等收到调试环境制约的测试工作选择在目标环境中进行。这时所用到的测试工具需要支持目标环境的要求。系统的验证确认需要在目标环境中进行。
2 嵌入式软件测试策略
嵌入是软件测试策略与一般软件测试策略相同,各个阶段分别为:单元测试、集成测试、系统测试、确认测试和验收测试。
2.1 单元测试。主要用白盒测试技术对软件模块进行的测试。模块可以是一个函数,可以是类或类的实例,也可以是网页中的一个按钮。单元测试可以发现编码问题或详细设计中的错误,保证单元的最大覆盖率。嵌入式软件系统的单元测试通常在主机环境中进行,主机环境中的运行测试速度明显快于目标环境。
2.2 集成测试。按照软件系统结构通过单元测试的模块集成起来进行的测试。使用白盒技术和黑盒技术。集成测试可以发现系统架构和系统结构设计的缺陷。嵌入式软件的集成测试通常也在主机环境中进行。
2.3 系统测试和确认测试。系统测试是对集成的软、硬件系统进行的测试。检验系统是否符合需求规格说明书的要求。包括对系统功能、性能、接口、系统界面、可靠性、安全性等的全面测试。使用黑盒技术进行测试。确认测试是对系统的有效性测试,使用黑盒技术。嵌入式软件的系统测试和确认测试依赖目标环境,需要在目标环境中真实有效的反应嵌入式系统的功能,所以需要在目标环境中进行测试。
3 嵌入式软件测试技术
3.1 嵌入式软件白盒测试技术。白盒测试指从程序内部的逻辑结构出发来设计测试用例的方法。又被称为结构测试、逻辑驱动测试。嵌入式软件的白盒测试的关键技术主要包括:词法语法分析、静态结构分析、插桩分析等。
语义分析和静态结构分析属于静态测试技术,静态测试技术指被测系统并不运行,而是从软件的编程格式以及代码结构等方面对进行程序特性的分析。程序插桩则属于动态测试技术,所谓动态测试指实际运行被测程序,通过测试用例的输入,对软件运行情况进行的分析,主要是分析软件输入与输出的对应关系。
(1)语义分析。语义分析之前首先要进行词法、语法分析。词法语法分析主要是分析程序的结构。一般和程序设计语言有关。词法分析的主要目的是识别程序中的单词,这个阶段需要对源程序进行由左到右、由上到下逐个字符的读入操作,用来根据构词规则识别单词符号。语法分析要在词法分析的基础上进行,主要目的是识别程序中的关键字、表达式、语句、函数等,用来判断程序的逻辑结构是否正确。经过语法分析后源程序在结构上应该是一个规范的,这时要进行有关上下文性质的检查,这就是语义分析,也就是源程序的类型审查。通常我们可以借助工具进行语义分析。比如:Yacc工具。
(2)静态结构分析。静态结构分析通常借助测试工具来进行,是以图形的表现形式来表示程序的内部结构的方法。包括源程序的数据结构、控制逻辑、系统结构等内部结构。使测试人员对程序结构的分析更加直观。
(3)程序插桩技术。程序插桩属于动态测试。程序插桩技术是借助向被测程序中插入探针操作,通过验证探针返回的数据来实现测试目的的方法。通过程序插桩技术可以获得程序逻辑覆盖等动态信息。最常用的插桩方法是在程序中插入一些打印或输出语句,来获得程序的控制流、数据流等信息。
程序插桩测试的流程如图1所示。编译通过的代码进行程序插桩,在宿主机上编译。如果编译通过则转到目标机中执行,目标机将程序执行后的数据返回到宿主机,并由宿主机处理数据。
图1 程序插桩测试流程
(4)覆盖率分析。代码的覆盖率是衡量代码可靠性的重要指标。 覆盖率分析是能够消除测试套件中缝隙的结构化测试技术。覆盖率分析可以通过程序插桩来实现。嵌入式软件的覆盖率分析通常借助工具来实现。
3.2 嵌入式软件黑盒测试技术。通常,对嵌入式软件进行白盒测试完毕,需要对其进行黑盒测试,主要包括功能测试、接口测试和性能测试等方面。常用的黑盒测试技术包括常用的等价类划分法、边界值分析法、因果图与决策表法、功能图法等等,这些黑盒测试方法所关注的重点是如何设计出合理、有效的测试用例。通过执行测试用例,分析预期结果与实际结果的异同来发现软件系统的缺陷。
4 结束语
嵌入式系统的多样性和复杂性,使得了嵌入式软件的测试尤为重要,也使得对软件测试人员的技术要求越来越高。为了满足人们对嵌入式软件系统的要求,针对嵌入式软件的测试的研究也势在必行。针对嵌入式软件特点合理运用软件测试技术,选择合适的测试工具,提高软件质量,推进嵌入式软件的发展。
参考文献:
[1]刘利枚,石彪.嵌入式软件测试系统的研究与实现[J].国为电子测量技术,2009(01).
[2]王学东,汪文勇.汇编程序覆盖测试中的虚拟插桩的实现[J].计算机工程,2007(07):87-88.
[3]康一梅,张永革.嵌入式软件测试[M].北京:机械工业出版社,2008.
作者单位:承德石油高等专科学校 计算机与信息工程系,河北承德 067000
关键词:嵌入式;软件测试;实时性;覆盖率
中图分类号:TP311.52
嵌入式软件在智能设备中得到了广泛的应用。国内外对嵌入式软件人才需求量巨大。人才需求较多的有汽车电子行业、移动互联行业、工业自动化行业等等。最近几年,随着3G移动互联网技术的发展,嵌入式的手机软件开发行业在云计算和物联网产业的带动下,发展迅速。很多高职高专院校开设了嵌入式软件开发相关课程,培养嵌入式软件开发人员,以适应市场的需求。
软件测试的目的是为了尽可能多的找到软件中的缺陷,尽量避免由于软件问题而产生的巨大经济损失,保证软件满足需求规格说明。嵌入式软件产品必须有一套专门的测试技术以保证嵌入式软件的质量。嵌入式软件测试是嵌入式软件得以生存和发展的重要基础。嵌入式软件测试作为计算机软件专业的分支之一,是嵌入式软件开发的必要环节。在整个软件体系中占据重要的地位。
1 嵌入式软件测试的概述
1.1 嵌入式软件测试的特点。嵌入式软件的开发需要与之对应的嵌入式开发环境,需要具有一定的软硬件要求并且要保证软件实时性等要求。所以嵌入式软件开发与普通软件开发存在一定的差异。因此,嵌入式软件的测试工作也不同与一般软件的测试工作。嵌入式软件测试又称为交叉测试(Cross-Test),其目的是为了保证嵌入式软件产品的满足用户的需求。嵌入式軟件测试与一般软件测试的区别主要体现为以下几点:(1)嵌入式软件测试与其特定的硬件环境是密不可分,嵌入式软件测试中对嵌入式软件与硬件的兼容性测试至关重要。(2)嵌入式软件对实时性要求严格。嵌入式软件测试要保证软件系统的可靠性和实时性。测试需要充分考虑系统实时性响应问题。嵌入式软件测试要求有严格响应时间要求的负载测试工作。(3)嵌入式系统常出现内存的问题。嵌入式软件测试需要对内存泄漏、内存碎片等问题进行充分测试,并且尽早的测试。防患于未然。
1.2 嵌入式软件测试的环境分析。嵌入式软件开发环境与运行环境是不同的。嵌入式软件开发环境称为主机环境,软件的实际运行环境称为目标环境。针对目标环境的测试比针对主机环境的测试工作内容要多很多,需要投入较多经济费用。而针对主机环境的测试不能充分完全的模拟目标环境。因此在嵌入式软件测试中充分地利用了高级语言的可移植性,将与目标环境无关的测试比如逻辑测试、界面测试等工作转移到主机环境中完成。这样可以加快测试的进展。系统中与硬件密切相关部分比如硬件接口测试、中断测试、实时性测试等收到调试环境制约的测试工作选择在目标环境中进行。这时所用到的测试工具需要支持目标环境的要求。系统的验证确认需要在目标环境中进行。
2 嵌入式软件测试策略
嵌入是软件测试策略与一般软件测试策略相同,各个阶段分别为:单元测试、集成测试、系统测试、确认测试和验收测试。
2.1 单元测试。主要用白盒测试技术对软件模块进行的测试。模块可以是一个函数,可以是类或类的实例,也可以是网页中的一个按钮。单元测试可以发现编码问题或详细设计中的错误,保证单元的最大覆盖率。嵌入式软件系统的单元测试通常在主机环境中进行,主机环境中的运行测试速度明显快于目标环境。
2.2 集成测试。按照软件系统结构通过单元测试的模块集成起来进行的测试。使用白盒技术和黑盒技术。集成测试可以发现系统架构和系统结构设计的缺陷。嵌入式软件的集成测试通常也在主机环境中进行。
2.3 系统测试和确认测试。系统测试是对集成的软、硬件系统进行的测试。检验系统是否符合需求规格说明书的要求。包括对系统功能、性能、接口、系统界面、可靠性、安全性等的全面测试。使用黑盒技术进行测试。确认测试是对系统的有效性测试,使用黑盒技术。嵌入式软件的系统测试和确认测试依赖目标环境,需要在目标环境中真实有效的反应嵌入式系统的功能,所以需要在目标环境中进行测试。
3 嵌入式软件测试技术
3.1 嵌入式软件白盒测试技术。白盒测试指从程序内部的逻辑结构出发来设计测试用例的方法。又被称为结构测试、逻辑驱动测试。嵌入式软件的白盒测试的关键技术主要包括:词法语法分析、静态结构分析、插桩分析等。
语义分析和静态结构分析属于静态测试技术,静态测试技术指被测系统并不运行,而是从软件的编程格式以及代码结构等方面对进行程序特性的分析。程序插桩则属于动态测试技术,所谓动态测试指实际运行被测程序,通过测试用例的输入,对软件运行情况进行的分析,主要是分析软件输入与输出的对应关系。
(1)语义分析。语义分析之前首先要进行词法、语法分析。词法语法分析主要是分析程序的结构。一般和程序设计语言有关。词法分析的主要目的是识别程序中的单词,这个阶段需要对源程序进行由左到右、由上到下逐个字符的读入操作,用来根据构词规则识别单词符号。语法分析要在词法分析的基础上进行,主要目的是识别程序中的关键字、表达式、语句、函数等,用来判断程序的逻辑结构是否正确。经过语法分析后源程序在结构上应该是一个规范的,这时要进行有关上下文性质的检查,这就是语义分析,也就是源程序的类型审查。通常我们可以借助工具进行语义分析。比如:Yacc工具。
(2)静态结构分析。静态结构分析通常借助测试工具来进行,是以图形的表现形式来表示程序的内部结构的方法。包括源程序的数据结构、控制逻辑、系统结构等内部结构。使测试人员对程序结构的分析更加直观。
(3)程序插桩技术。程序插桩属于动态测试。程序插桩技术是借助向被测程序中插入探针操作,通过验证探针返回的数据来实现测试目的的方法。通过程序插桩技术可以获得程序逻辑覆盖等动态信息。最常用的插桩方法是在程序中插入一些打印或输出语句,来获得程序的控制流、数据流等信息。
程序插桩测试的流程如图1所示。编译通过的代码进行程序插桩,在宿主机上编译。如果编译通过则转到目标机中执行,目标机将程序执行后的数据返回到宿主机,并由宿主机处理数据。
图1 程序插桩测试流程
(4)覆盖率分析。代码的覆盖率是衡量代码可靠性的重要指标。 覆盖率分析是能够消除测试套件中缝隙的结构化测试技术。覆盖率分析可以通过程序插桩来实现。嵌入式软件的覆盖率分析通常借助工具来实现。
3.2 嵌入式软件黑盒测试技术。通常,对嵌入式软件进行白盒测试完毕,需要对其进行黑盒测试,主要包括功能测试、接口测试和性能测试等方面。常用的黑盒测试技术包括常用的等价类划分法、边界值分析法、因果图与决策表法、功能图法等等,这些黑盒测试方法所关注的重点是如何设计出合理、有效的测试用例。通过执行测试用例,分析预期结果与实际结果的异同来发现软件系统的缺陷。
4 结束语
嵌入式系统的多样性和复杂性,使得了嵌入式软件的测试尤为重要,也使得对软件测试人员的技术要求越来越高。为了满足人们对嵌入式软件系统的要求,针对嵌入式软件的测试的研究也势在必行。针对嵌入式软件特点合理运用软件测试技术,选择合适的测试工具,提高软件质量,推进嵌入式软件的发展。
参考文献:
[1]刘利枚,石彪.嵌入式软件测试系统的研究与实现[J].国为电子测量技术,2009(01).
[2]王学东,汪文勇.汇编程序覆盖测试中的虚拟插桩的实现[J].计算机工程,2007(07):87-88.
[3]康一梅,张永革.嵌入式软件测试[M].北京:机械工业出版社,2008.
作者单位:承德石油高等专科学校 计算机与信息工程系,河北承德 067000