ouyu 2006-2-18 15:26
嵌入式软件的基本测试方法
作者:佚名 出处:互连网
摘要:嵌入式软件的基本测试方法
随着制造行业的再一次崛起,嵌入式软件目前在软件行业中越来越多,2004年软件行业最火爆的三个项目是:嵌入式开发,软件培训以及软件外包。由于嵌入式软件与其他产品息息相关,这给嵌入式软件的测试工作带来了极大的困难,软件的测试工作不能够等程序烧到或者固化到芯片中才开始进行测试,这就太晚了,本文结合自己的一些经验提出自己的看法,希望大家一起讨论。
搞好开发前的原型设计
原型开发目前在开放流程中受到了更多的重视,同样嵌入式软件也是非常需要的。比如说一个录音机版面的设计,可以定义好版面上面的按键以及每个按键的功能。然后画出状态转化图,写清楚每个按键何时可以触发,触发后由哪个状态转入别的其他状态。原型设计好了,组织专家,工程师进行评审,尽可能多的找出原型中不合理需要改进的地方;改进以后,有必要可以进行再一次的评审工作。每一次评审工作需要记录评审建议是否需要解决?如何解决以及实际解决情况。
进行设计和开发工作
设计和开发工作需要设立里程碑。每个里程碑结束前都需要进行评审工作。由于嵌入式软件的运行环境不同,受到很大的限制,所以在进行开发之前需要进行编程规范工作,编码的时候需要严格按照编码要求进行工作,每一个条款都需要认真执行和审查。现在业界提供许多关于嵌入式软件开发的标准,大家可以通过网站搜索,最好能够购买业界一些比较著名的标准。目前市场上也提供许多关于代码检验的工具。为什么一直提出代码编码规范?这是因为嵌入式软件的质量与代码规范是十分重要的。举个例子,著名的阿里亚火箭失事,专家进行详细的调查工作,最后发现问题出在代码上。代码是符合标准C语言的,但是在运行过程中由于程序员将一个长整形变量赋给了一个短整形变量,造成内存溢出,这是导致火箭失事的关键所在。
(
int8 a;
int32 b;
…
a=b;
)
代码测试
当程序开发完毕,需要进行测试工作,但是在程序烧入或固化芯片之前如何进行测试呢?这里介绍一种方法:比如程序时使用C语言进行开发的,请将所有的操作都封入在函数中,函数的定义都在相应的头文件中定义(.h),然后设计测试用例,书写测试代码,测试代码包含相应头文件,可以对函数进行检测。测试案例往往分为两类:一种是功能测试,主要测试函数的功能;另外一种是错误参数测试,主要检查程序对进行错误参数进行检验。
功能测试
这种测试的运行往往需要通过仿真器辅助完成,比如类似录音机软件程序,分别测试播放,加大(减小)音量,停止,暂停(取消暂停),快速前进,快速后退,录音对应的功能是否能够正常运行。
错误测试
主要测试函数在调用参数无效的时候,系统是否会按照规定返回正确的错误代码。比如
function test(int Tid)
测试的时候给出一个错误的序列号(Tid),看程序是否返回正确的错误代码。
对于函数function test1(int t)需要进行特出的处理
t 定义为1-100
我们可以按照边界值法和等价分类法进行测试
上边界:-1,0,1
下边界:99,100,101
中边界:50
所以测试用例集合为(-1,0,1,50,99,100,101),其中-1,101为错误测试用例,其他为正确测试用例
功能组合测试
在进行完功能测试后,我们可以进行功能组和测试,还是拿录音机程序做个例子。我们可以定义将音量增加到10,快速前进,检查音量,看是否还是为10;播放,暂停,试图调整音量,检查调整音量的功能是否可以被成功执行。
烧入固化测试
当以上测试都通过后可以将程序烧入芯片或者固化,进行最后在实际环境中进行测试工作。
njnuaa 2006-3-9 23:35
写的不错,比较符合实际,不过这好象不是什么嵌入式的东西.
983221wy 2006-3-16 16:49
谢谢了!!!!!
littleyolk 2006-4-17 17:26
挺符合实际,基本就是这么个流程。代码测试属于白盒,功能以后都是黑盒的了。我就是做机顶盒黑盒测试的,刚起步还不知道怎么回事呢,多多交流
xm3525 2006-4-25 10:09
不错,辛苦了
kery2000 2006-5-18 16:43
谢谢!但是感觉不够具体。
婧颦 2006-5-26 14:37
嵌入式测试包括低层次测试和高层次测试。其中,低层次测试只测试单个部件,在类似于开发的环境中,在生命周期的早期进行,高层次测试则对集成系统或子系统进行测度,是在(模拟的)真实环境中,在生命周期的后期限进行。通常情况下,低层次测试多为面向白盒的测试,而高层次测试多为面向黑盒的测试。
aprillee 2006-5-27 18:25
能不能更具体讲一下在低级测试阶段也就是面向白盒测试阶段该怎样去进行测试呢?先谢谢了!本人刚开始入门,很多具体的饿问题都不懂!请各位赐教!
songyq521 2006-6-22 13:12
其实主要的还是黑盒测试!
灵犀 2006-7-31 18:39
大家好,我是做视频处理机顶盒测试的,刚刚做嵌入式不久,大家可以交流一下
msn:ericpeng0826.hotmail.com
ericola 2006-9-12 11:18
语言描述不清,嵌入式的范围很大,不知道楼主说的那种平台的
firehelp 2006-12-3 23:15
辛苦了。。。还可以,不过举的例子不够典型。。。
yuting716 2006-12-7 14:41
还有些疑惑,第四步功能测试,通过仿真器辅助完成,这里的仿真器如何解释?是自己开发的l类似于硬件功能的可视操作平台么?
错误测试是否应该并入代码测试?在代码测试时就应该把错误值输入了,为什么要另外再测呢?两者有什么不同么?
qyl 2006-12-15 09:13
fei chang ganxie
yeweimian1 2007-2-15 09:19
学了点新知识.呵呵............
mp4 2007-4-18 17:13
学习
以前是做产品测试的,现在刚接触到嵌入式测试,所以需要加强学习.
涩谷Tokyo 2007-5-17 09:11
Cool
millerjordan 2007-5-26 15:58
我主要做黑盒的测试,功能,组合功能。
chinabolls 2007-6-1 10:47
sdlkfj2 不错,写的虽然不是很详细,但是我也学到了不少东西,谢谢楼主
blue_dolphin 2007-6-11 23:20
回复 #1 ouyu 的帖子
对于录音机这个例子,状态转换图比较复杂,应该采用因果图方法设计测试用例,测试应该更充分写.
junesnow 2007-6-28 23:51
快用上了
changlang530 2007-7-27 09:42
有没有机顶盒的专题讨论或目前能发现较严重的Bug??
多交流,产品质量得以保障,技术从中得以升华。
applejuzi 2007-7-27 19:33
写的很好
yamaya 2007-7-31 17:22
功能组合测试怎么分类? 得用等价类和正交表的方法吧。
wangyingtest 2007-8-2 16:43
学习,多谢楼主
anqiers 2007-8-6 10:14
19楼的朋友,我原来是做软件测试的,现在刚做嵌入式测试,希望我们能有机会交流一下!谢谢
rgbgirl 2007-8-7 13:54
这是白盒测试吗?
zhangsy 2007-8-26 21:03
回复 #1 ouyu 的帖子
不错,使我对测试流程有了个大概的把握
zhangj8826 2007-9-13 11:48
very good
lichongjiao 2007-10-22 11:17
好东西,我是做软件测试的,
zhouzxcv 2007-10-26 14:07
辛苦了。。。还可以,不过举的例子不够典型。。。
muyang327 2007-10-26 14:35
学习了,顶一下。
blueteer 2007-11-2 17:05
学习了,谢谢!
juneyg 2007-11-8 16:43
比较概括
zxsong024 2008-1-22 15:35
对入门很有帮助
aaronyan911 2008-1-24 12:58
如果能再具体点就好了, 比如说说哪个部分最常用哪些软件, 我最想知道的就是这个.......:loveliness:
huangjian199 2008-1-31 22:46
往往要用的东西很复杂,变量很多,怎么测试呀?
carry1986 2008-2-1 10:22
想学习这里的新知识,真是太好啦,看样子要学的东西还很多呀,哈哈..
jingchu 2008-2-2 12:33
很好
很好阿,可以借鉴:lol