62

帖子

0

TA的资源

一粒金砂(高级)

41
 

回复 39楼 辛昕 的帖子

楼主总结的很到位。毕业四年了,很久没有静下心来从头到尾好好做个项目了,因工作需要总是把各种协议移植来移植去的,都快迷失自己了。看到楼主的帖子让我想到刚毕业那段时间,自己搞项目,并且乐在其中的那种感觉。加油吧,为了兴趣!
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

42
 

再说 测试程序

在接着 做 stm8s的 业余项目 时,这两天,在 原来已经“测试”好了的 数码管 模块 上又发现了问题。
浪费了将近一个小时,最后居然发现原来是因为我在 连接排线 时,把两个段码引脚 接反了。

这件事,也从侧面告诉我们,测试程序 有多么重要,同时,它也指出了 面对一个特定的 模块——比如 数码管显示模块,我们需要什么样的测试 程序。

昨天早上,我一边整理程序,一边中间抽一个时间段,接着翻了翻 《软件测试的艺术》这本书。当我看到 提及 测试自动化 的时候,我突然想明白了一件事。

在 上一个帖子,我提到的 那些 对于 典型MCU项目 最初的 最小系统 的测试程序,这些测试的目的是 确认 我们 对于 基本显示/读外部状态 底层硬件功能 是否 准确无误。

这一类测试,属于 测试 中的 非自动化 测试部分。
理由是,它不比我们验证某个程序逻辑的运行是否正确,某个重要的计算结果是否正确——
通常在这种情况下,我会想办法,让某个数码管或者某个LED闪烁或者长亮长灭等 来表示程序运行已经出了错误

我的意思是,我不用一直盯着它看,我可以做其他事情,然后等着它出错。

但是,对于 这种 底层硬件功能,我们是没办法的——除非有一天我们可以发展一套高级的智能系统,它居然可以知道,数码管显示到 ‘5’这个字样时,显示的是乱码;它居然可以知道,声音芯片发出的声音发生了畸变或者停不下来。

归根到底是,这些硬件上的物理表现,除非我们人自己去观察,还是一直持续地观察,否则,我们很难保证,程序数据上正确的输出,能保证硬件一定工作正常。

所以,我们需要这类 非自动化 的测试程序。

我们借助它们,可以,很快地验证,比方说,验证所有显示的字符在数码管上正确无误,没有数码管缺笔段,或者连线错误等导致出现乱码。
个人签名

强者为尊,弱者,死无葬身之地

 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

43
 

再说 测试程序 之二

回顾上一次写的帖子,觉得写的有点乱。
现在算是对这个 话题 做一个 比较 定型 的 总结。

前面说了,在 实现MCU系统的 底层硬件基本功能时,我们需要一系列 非自动 的测试程序,用以确保我们的 底层硬件 工作正常。

我总是有一个习惯,试图在很开始的时候,就从全局考虑到所有该做的事情,以便我不能边做边补充,这会让我觉得自己在不断 填补一个 漏洞越来越大的错误,这种体验让我感觉非常糟糕。

很可惜,我不得不说,在这个地方,我的这种心理怯弱让我犯了一个很大的错误。
诚如数学家波利亚 所说的那样,解决问题实际上是不可能按步就班往下进行的,它总是要不断往返,在尝试中加深对问题本身的理解,在走弯路中不断找到更优的方案。

正如,在上一个帖子开头,我所说的 那个 就发生了不到两个小时前的一个小小的bug的排查过程,如果不是这个问题的出现,我是不会理解 对于 数码管的测试,除了要让它 动态显示随便一个什么数以后 就完事了的。

实际上,我应该覆盖所有 数码管字符。
这件事,我能想到一个非常现成的方法,正如我工作中,我上司让我做的那样,我对此非常熟悉,然而,因为我没有充分,从本质上理解 这种 需求,因而,在我再次构建自己的程序时,我还是把它忽略了......

一句话,我想说的是,我们需要什么测试程序,不仅取决于我们实现了什么功能,还在于我们实现了的这些功能,需要一个怎样的完整的 测试。

于是我开始认识到,即便这些都是一些非常简单的基本操作,看起来,我似乎不需要把 《软件测试的艺术》上提到的那些复杂的 黑盒测试方法,白盒测试方法 用到这上面来,也似乎用不到。

然而,实际上,即便是这类 非自动化 测试,逻辑如此简单的,实际上原来还是具有同样的指导作用的。
比如 这个 没有 覆盖测试 数码管字符 的问题 —— 无论是 黑盒测试 ,还是 白盒测试,它事实上都需要 一定的覆盖率,不同的是,
对于数据驱动的 黑盒测试,它是要尽可能覆盖 所有数据,而 对于 逻辑驱动 的白盒测试,它是要尽可能覆盖所有的逻辑分支。

还好,数码管字符 是非常有限的,而我还是没有想到要全部覆盖测试。

[ 本帖最后由 辛昕 于 2012-8-11 00:30 编辑 ]
个人签名

强者为尊,弱者,死无葬身之地

 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

44
 

再谈测试程序 之三 我们需要测试什么

这个帖子的内容,会非常具体,因为具体,所以它具有限制性。
它限制于我正在做的这个stm8s的项目的具体硬件系统,它非常简单,只有LED,独立按键,数码管,仅此而已。

它限制于这一步我能想到的需要 确切测试的功能。

1.GPIO的读写,这一部分,前几个帖子强调过,作为一个向外界展示自己状态的窗口,它是所有后续测试和应用的基础,所以它必须最先测试,最先确认;
2.定时中断是否可用,是否正常,定时长度是否正常;
  因为在一个典型的MCU项目中,几乎就没有不需要用到 定时器的,它可以让主程序流程更加自由,可以实现最简单的 分时处理系统。
3.具体的数码管
   我不仅要证明它的确可以稳定不闪烁地动态显示出一个四位数。
  我还要证明,我要显示的所有字符,在所有的数码管上都能正确地显示出来,不带乱码。
  我还要测试出,我最长可以以多长的刷新周期去刷新所有数码管

..................

昨晚还是前晚的帖子没有很好地说清楚 这些测试 的原则。

其实,原则就是一句话:
尽可能让你每个模块,每个功能的测试独立出来。
比如说,大多数时候,我会把数码管定时刷新放在 定时中断里完成。
但这是否意味着我在做 数码管测试程序时必须 放在中断里完成呢?

事实上,非也。
为何?
因为,如果我这样做,则我不能保证 测试出现不正确的情况时,到底是定时中断引起的,还是数码管本身的显示函数有问题。

所以,与其如此,我会考虑干脆用 纯粹的 软件延时 来计时 刷新频率。

当然,有些测试是没有办法完全独立的。

比如 gpio输出高低点亮熄灭LED,这几乎是所有可观察测试的基础。
个人签名

强者为尊,弱者,死无葬身之地

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

45
 
有大局观很不错奥
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

46
 
不错,挺有系统性,我喜欢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表