嵌入式软件的基本测试方法

news/2024/7/7 19:17:51 标签: 测试, c/c++, 嵌入式
嵌入式软件的基本测试方法

作者:佚名      出处:互连网
摘要:嵌入式软件的基本测试方法
随着制造行业的再一次崛起,嵌入式软件目前在软件行业中越来越多,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;播放,暂停,试图调整音量,检查调整音量的功能是否可以被成功执行。

烧入固化测试

当以上测试都通过后可以将程序烧入芯片或者固化,进行最后在实际环境中进行测试工作。

http://www.niftyadmin.cn/n/1124560.html

相关文章

html实践——IFE task 01

任务描述 原链接:http://ife.baidu.com/task/detail?taskId1 任务目的 了解HTML的定义、概念、发展简史掌握常用HTML标签的含义、用法能够基于设计稿来合理规划HTML文档结构理解语义化,合理地使用HTML标签来构建页面任务描述 参考示例图(点击…

解决xp下iis500错误的一个方法

解决xp下IIS 服务器无法加载应用程序 /LM/W3SVC/1/ROOT。错误是 没有注册类别 现象: 浏览ASP页面提示 500内部错误 事件查看器中: [1]: 服务器无法加载应用程序 /LM/W3SVC/1/ROOT。错误是 没有注册类别。 …

微信接口(一)创建菜单自动回复

刚划拉完微信。做一个笔记这里的数据是写死的,还有一份是通过查询数据库进行自动回复,自定义菜单设置的。不过因为使用到数据库,最好在网站后台吧微信平台开发集成进去。所以代码较多就先不放了。有问题的地方请留言,我也学习一下…

CBWFQ

为f0/0进入的流量,分配4M带宽送出到f0/1-------f0/0--R1---f0/1-----------> ------>R1:ip cefclass-map match-all bb2inmatch input-interface f0/0policy-map limit4mclass bb2inpolice 4000000 750000 1500000 conform-action transmit exce…

在ASP.NET中支持断点续传下载大文件(ZT)

IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag 客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端…

Unix整理笔记-超级无敌常用命令杂谈1-里程碑M6

1 Unix命令可以分成两部分:命令本身和追加给它的参数。在使用一个命令时,必须了解该命令的默认行为。 2 无论一个命令的参数是合并还是独立添加,该命令都产生相同的输出。 3 man,info,apropos 帮助命令 4 apropos检查是否安装了某个软件包&am…

windows命令行下用netsh实现端口转发(端口映射)

为什么80%的码农都做不了架构师?>>> 微软Windows的netsh是一个命令行脚本实用工具。使用netsh工具 ,可以查看或更改本地计算机或远程计算机的网络配置。不仅可以在本地计算机上运行这些命令,而且可以在网络上的远程计算机上运行。…

二叉查找树实现源码

看了《算法导论》上的第12章二叉查找树&#xff0c;现把对二叉树的几种操作罗列如下&#xff0c;实现的描述见代码注释。#include <iostream>usingnamespacestd;classNode{public:intkey; Node*left; Node*right; Node*parent; Node(intk);};classBinarySearchTree{publi…