嵌入式软件的开发测试要点

嵌入式开发的现状

  • 嵌入式软件从业者小众

     

    • 嵌入式开发可能是目前软件开发中的小众开发者了吧。我经常到一些论坛上逛,感觉最多的开发者是集中在Web应用的开发上,其次是Windows应用程序开 发,再次才是嵌入式系统。目前无论是从公司规模还是产品线的多少上来说,嵌入式开发都还只是小部分人的游戏。在我看来,嵌入式开发测试可能是最近几年可能 要快速增长的一个行业。因为从嵌入式的行业规模上来说,嵌入式应用应该仅次于网络应用排第二位的产业,至少从目前来看,这个产业还没有进入大规模的发展阶 段。所以我本身对这个行业才会如此看中。

  • 嵌入式开发入门门槛高

    • 感觉这个说法是一个仁者见仁,智者见智的说法。从平台上说,嵌入式平台硬件系统规范等等一切都不统一,导致了这个看似门槛高的局面。一套相同的东西,从一个平台移植到另外一个平台,至少要花费的1/4的开发量,这其中还不包括产品在不通平台的测试时间。可以说,嵌入式开发没有一套好的东西能真正做到"一次开发,到处运行",现在仍然是"一次开发,到处调试"的局面。这个局面也就是造成嵌入式开发门槛高的最主要的原因。所以平台的虚拟一致性和规范化成了现在阻碍嵌入式开发的最大门槛

  • 嵌入式产品存在过多问题

    • 嵌入式产品的开发,由于其过程的曲折性,导致很多时候对开发的工作量不能正确的估计。我看到的很多项目都有很好的PRD,但是作出来的产品,确实是惨不忍睹。这是为什么?究其根源,不仅仅是开发的问题,测试和流程的控制上,没有一套好的监控措施。产品的开发和设计,最终落实到代码上就有了差距。

基于以上的几点,引入了本文:

 

嵌入式开发中的测试和流程管理

首先指出一部分人的对测试的看法存在的偏差:

  • 测试一定能帮助产品减少bug

         这部分人的论调是:"测试为发现更多的bug,等这些bug被发现解决之后,bug自然就减少了"。看似对的命题,但是仔细推敲,我们会发现,bug不会减少,有可能增多。为什么这么说呢?

         了解软件工程学的同学肯定对“bug收敛曲线"记忆深刻,bug从测试开始时候到项目中期的时候,可是一直增长的,在步入到后期以后才会收敛。所以说,产品在项目进行到中期的时候实际上是发现bug最多的时候,此时,代码存在大量的不稳定处,同时修改的bug数越多,对于开发来说,本身是一个考验,只有对产品各个模块比较熟悉的开发人员才会在此时修改bug得心应手,否则1个bug变成4,5个的事情发生的太多了。

         "产品测试了,bug反而增多了?"

         所以产品的开发测试进入到中期的时候,是产品最容易出现问题的时候,这个时候控制的好,可以迅速让bug收敛,也就是说帮助产品进入稳定阶段。如果处理的不好,bug只会越来越多,开发的时间自然也一拖再拖。

  • 测试人员没必要技术好的,差一点的开发人员可以转作测试

         很多管理人员在潜意识中仍然有这样的看法,这个看法无论从哪个角度上看都是不可接受的。

         我们先说这句话的前半句:测试人员没必要技术好。测试的团队管理从人员配备来说也需要有三个梯队:高,中,初。高级测试人员的能力中我最看重的一点就是要有"独立的分析问题的能力",其中这种能力最重要的一点基础就是对产品的深入了解。为什么现在测试人员这么多,每次招聘总是高级的不好找。还是因为目前的测试人员来看,还只是停留在“看数据,用工具”的阶段。这只是我对初中级人员的要求。高级的测试人员,在发现问题之后,需要去深入的分析问题,找到引发代码或者是产品模块的更深层次的原因,从而能避免有同类问题的再次产生,换句话说,高级测试人员,需要对代码或者模块的功能有深入剖析的能力,发现一个bug的同时,也能通过分析找到同类问题所有可能的出现点,从而加以验证。从这个角度上看,测试人员必须要有不输于开发人员的系统架构能力和开发能力。

         再看后面半句:差一点的开发人员可以转作测试吗?从我上面的观点来看,一个好的测试人员也需要很好的分析问题的能力。有一部分开发人员,本身只对自己开发的模块关注,对整个产品了解过少。这部分开发人员我觉得就是技术再好,也不能转作测试,否则只会让问题出现的几率加大。因为这部分的人,对整个产品模块的了解太窄,导致了他们会出现,他了解的模块测试的过细,不了解的模块测试不够的现象。从而把一些问题的发现推到后期集成测试的时候才暴露出来,这是最要命的。



 

嵌入式软件测试的测试策略方法

我们现在回到嵌入式产品中来,嵌入式产品的开发,本身具有一定的专有性和业务针对性。针对特定平台的开发和优化,需要对平台和产品都有着深入的了解才可 以。而且,测试人员在测试的过程中,要知道产品针对的目标用户群和这些目标用户群的习惯,才能更好的制定自己的测试计划和流程。

嵌入式应用程序开发在开发的过程中,主要分为下面几个阶段:

  • 产品硬件模拟器的开发
  • 模拟器上的开发
  • 开发板上的开发
  • 项目验收

上面的几个阶段,各个需要不同的测试方法和策略方法与之对应,我也把嵌入式的测试分成下面四个阶段。

嵌入式测试的准备阶段:

  • 测试好环境模拟器
  • 保证PC和板子的依赖库的一致性

模拟器的开发阶段,应该是产品立项的初级阶段,因为产品可能也不是从0开始,所以很多公司在开发的时候可能没有什么模拟器,或者是使用的底层图形库提供的模拟器。因为此时产品的概念还未成熟,很多想法还在试验中,所以这个时候测试人员应该首先关注的就是这个模拟器的产品测试。

这个是很重要的一点。后期测试的时候会发现过一些问题,是由于模拟环境的问题导致了一些bug在板子上重现,但是在pc上无法重现。而这些无法重现的bug会给开发和测试人员增加很多沟通成本和调查成本。因为在嵌入式环境中,”永远最恶劣的环境是板子“。

同理,保证开发环境和板子环境的一致性,也是需要特别注意的。因为嵌入式开发,或多或少都会使用到一些开源的第三方库。在没有了解这些库的特性的情况下就盲目的测试是要不得的。你要首先通过上网查找或者是其他方式,了解到你这个版本的库目前是否还存在一些bug,而这些bug是否会对产品的各个模块产生影响。

嵌入式测试的前期阶段:

 

流程管理能给软件测试带来什么新的变化

 

 

 


 


你可能感兴趣的:(软件测试)