谈到嵌入式软件测试,首先了解什么是嵌入式系统。对嵌入式系统到如今还没有一个具体的概念。如手机、洗衣机、机顶盒、导航系统等等很多系统都是嵌入式系统,可以这样给他一个解释:嵌入式系统是和显示的物理设备相结合,控制着某些特定的硬件设备的系统。而嵌入式软件则是运行在嵌入式系统中的控制软件。往往追求实时性、可靠性和安全性等。
嵌入式系统和真实的环境相互影响,通过传感器接收信号,给动作器发送输出信号,而动作器控制着设备。嵌入式软件主要是控制动作器和传感器,但是很多设使用模拟信号,所以其中往往具有A/D和D/A转换功能。
嵌入式软件往往被固化在非易失性存储器中,通常是ROM,有烧片设备,把编译好的嵌入式软件的二进制代码写在ROM中。而手机中的软件则可能是存储在闪存卡上,当然有的手机的本身带有ROM。而这些软件也可以通过有线或无线网络进行上传或下载。嵌入式软件往往被编译成特定目标处理器的代码,例如X86的Dos、DSP、ADI、Linux等处理器,往往对这些处理器进行裁减,以便于存储在嵌入式系统的有限的ROM中。
对嵌入式软件进行测试是一项比较困难的任务。因为嵌入式系统和软件的这些特点,使每种嵌入式系统都具有本身的特殊性,测试需要与环境、设备结合起来进行测试。对应的商业测试工具比较少,比较有名的例如Trace32,通过探针能够实时跟踪软件的运行情况,比一般调试功能强大一些。在测试这些软件时,需要搭建起环境,如果只是测试软件,有时在仿真器中进行测试,这种测试往往也是调试的成分居多,往往通过软件的状态、标志量、寄存器的值等来判断软件是否运行正常。
虽然说运行在嵌入式系统中的嵌入式软件特点不同,但是还是有些共同的特点的。例如:
1、要求实时性;
导航软件要实时处理当前的高度、速度、倾斜角等信息。手机软件在玩游戏或打电话时,能够及时处理用户的输入。遥控的机顶盒实时的按照用户的操作,显示应该出现的频道;
2、可靠性;
这些软件烧进ROM以后,一般不在更改,所以可能后期无法升级,所以在前期就必需保证其可靠性。当然手机操作系统是可以重新安装升级的。而机顶盒、导航软件、洗衣机等这些设备就不是那么方便了。除非将来都可以分配一个IPv6的IP地址来上网,更新软件。
3、在有限的资源中,注意资源和空间的利用率;
这些嵌入式系统往往ROM、RAM都有限,往往扩展也不是太方便。前些天,听一个做3G的朋友说,3G的卡也是这样,用户购买时,只能选择既定数量大小的卡,而如果想扩大了,则必需换卡。这就是制作卡的公司的利润之所在呀。像手机使用的文件系统中,往往不允许出现空文件。在设计和测试中,要在时间和空间中进行考虑,是要性能还是节省空间。