51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2365|回复: 0
打印 上一主题 下一主题

[转贴] 关于嵌入式系统如何进行测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-8-11 10:02:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自知乎


问题:
1. 目标系统没有开发PC上的虚拟机,不容易进行自动化测试。
2. 好多问题属于人机操作,如何进行回归测试?
3. 在没有较为完善的单元测试和集成测试之前,系统测试如何安排?
4. 如何准备和实现自动化测试?
5. 与别的行业进行自动化测试相比,有没什么特殊之处? 比如和 ATM 机相比等等。
6. 没有跑操作系统或基于通用 OS,因此没有 shell 可用。




用户 老雕:

谢邀。
可以做,自动化和系统测试都可以。
首先考察下这几个问题:
1. 人机接口有哪些,串口肯定有吧?按键,触摸屏有没有?
2. 每种人机接口输入方式对应地有一个消息吧,底层肯定实现的有消息机制和消息循环吧?
3. 如果消息机制没有,事务处理是在中断服务里做的,可以人为触发中断吗?可以认为中断也是一种消息。
上面几个问题搞清楚了以后,可以这么实现:
1. 录制开机后的所有消息并保存,黑盒测试人员的所有操作会被记录下来,测出 bug 后,通过特殊的按键组合或者其他交互方式保存,即成为一个用例。消息最好能带时间甚至 clock 数值。
这样做避免了测试人员在枯燥的测试中偶尔测出 bug 却记不得自己刚才是怎么操作的,也避免了用文字描述不够准确,或软件人员重现不了时双方的扯皮和矛盾。
2. 在系统中设计用例回放机制,即能解析上面保存的消息并重新 post 出来,这样将大大方便软件人员 bug 定位以及修改后的验证。
3. 如果有精力的话,可以实现一个简单的测试脚本解析模块,比如脚本里写:
repeat 10000:
keydown A
delay 300
keyup A
pendown (x, y)
……
同样地,解析成消息 post 出去。脚本通过串口或者网络发送给系统。
这样可以实现一些更复杂的测试,具体能实现什么,看你们的想象力了。
随着扩展,可以添加你们产品的主要业务对应的高级指令,约定好参数,系统解析并调用内部 api 就可以了。


用户 郭雄飞:

首先,质量是设计出来的,而不是测试出来的
我先说一些我的一些经验,之后想扩展到“嵌入式系统如何保证软件质量?”的问题。因为测试只是方法,质量才是目的
解决问题的思路有如下几个
  • 很多情况下不可能完全实现自动化测试或者成本太高,那么就通过
    • 减少进行一次完整测试所用的时间和资源,提高人工测试的效率
    • 将可自动测试的部分从整体中分离出来独立测试,剩下的人工测试
  • 将整个系统分解为多个子系统进行独立的测试
  • 将系统分解为设备相关和设备无关分开测试
    • 设备无关的部分做自动化测试
    • 设备相关的部分人工测试,每次设备条件变化时再进行独立测试
  • 构建多个独立的测试程序在设备上逐个运行,每个这样的测试程序只需得出PASS或者FAIL的结果即可.
  • 利用高级语言及其丰富的库提高测试效率
一些嵌入式软件测试的个人经验

用高级语言实现自动化测试
很多时候当手工测试已经占用了很多时间的时候,需要将其转换为自动化脚本。我最常用的就是基于Python的unittest,配合pexpect等工具,在加上强大的各种Python库,来实现自动化测试。
(慢慢补充)
利用好各种工具
  • Wall - 永远开着Wall,提交前永远对Warning零容忍,别让他破窗。
  • Valgrind - 内存泄露以及各种测试
  • 如果你做的是开源项目,那么有以下互联网工具
    • GitHub这个还用说么?
    • travis-ci - 最有名的免费持续集成工具了,可以和GitHub绑定,每次提交都可以直接构建和测试,甚至交付
    • http://coveralls.io - 基于travis-ci,在测试之后可以将覆盖率报告上传到http://coveralls.io,将会生成覆盖率报告。
  • 对于公司内部,有
    • GitLab - 非常好的GitHub替代
    • 持续集成(CI)
      • Jenkins CI -
      • Gitlab CI

谈谈嵌入式软件的质量问题

在像IC设计这样的硬件设计中,对正确性的要求是非常高的,因为一次性的投产费用高达数万美元至百万美元。而软件因为错了可以修改,所以有不同的质量要求。互联网的兴起从一定程度上降低了软件质量的水平,因为只要是非关键系统,有bug你可以随时升级。但是对于嵌入式来说,大部分产品卖出去就很难在升级了,比如电饭煲和家用电器这样的产品。所以对于质量的要求高于互联网,而低于硬件产品。
说了一段废话,其实我想引入IC设计中的一个概念,叫做可测性设计(Design for Test)。意思很简单,设计的时候就要为测试考虑。而不要等编码完了之后在去想怎么去测,这个时候测试的成本就是不可预期的了。





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 02:17 , Processed in 0.061388 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表