搜索
bottom↓
回复: 53

发个简单的嵌入式测试工具,用于白盒测试

  [复制链接]

出0入0汤圆

发表于 2018-7-17 05:50:25 | 显示全部楼层 |阅读模式
这个工具可以用于嵌入式操作系统或者应用程序的白盒测试。它具有如下特点:
- 容易在嵌入式应用上搭建测试环境
- 只使用串口外设和最少量的代码插入
- 近乎为0的执行开销 - 应用程序不会感知到这一点
- 很少的内存消耗。256字节内存就足够对一个2048行的源程序做覆盖测试了。
- 完全无需移植
- 能生成测试报告

对软件测试感兴趣的坛友有福了:
下载地址:
https://github.com/EDI-Systems/G2T1_GeCov

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2018-7-17 08:42:37 | 显示全部楼层
好的,下来看看咋样,多谢

出0入42汤圆

发表于 2018-7-17 08:43:46 | 显示全部楼层
感谢分享。。。。256B对低端单片机还是大了啊

出0入4汤圆

发表于 2018-7-17 08:55:58 | 显示全部楼层
白盒要求还是比较高的啊

出0入0汤圆

发表于 2018-7-17 09:23:23 | 显示全部楼层
怎么用啊???

出0入0汤圆

发表于 2018-7-17 09:27:54 | 显示全部楼层
覆盖率测试还是觉得bullseyecoverage 好用

出0入0汤圆

发表于 2018-7-17 10:10:38 | 显示全部楼层
感兴趣,如何使用,谁来出个教程

出0入4汤圆

发表于 2018-7-17 10:26:17 | 显示全部楼层
表示关注!希望知道怎么用的

出0入0汤圆

发表于 2018-7-17 11:12:02 | 显示全部楼层
mdcao 发表于 2018-7-17 10:10
感兴趣,如何使用,谁来出个教程

自己去github看一眼不就知道了, 还要什么教程

出0入0汤圆

发表于 2018-7-17 11:23:23 | 显示全部楼层
已star!

出0入0汤圆

发表于 2018-7-17 11:30:26 | 显示全部楼层
EDI Embedded Coverage Testing Tool (ECOV)
Click HERE for English version.
  ECOV 是一个超级简单的嵌入式代码白盒覆盖测试工具。它是为简单的嵌入式应用程序设计的。
容易在嵌入式应用上搭建测试环境
只使用串口外设和最少量的代码插入
近乎为0的执行开销 - 应用程序不会感知到这一点
很少的内存消耗。256字节内存就足够对一个2048行的源程序做覆盖测试了。
完全无需移植
能生成测试报告
  本软件以MIT协议授权。
快速演示
安插测试标志
>> 文件名: source.c
/* 128字节对于128*8=1024行的程序就足够了 */
unsigned char Test_Array[128]={0};
#define MARKER() \
do \
{ \
    Test_Array[__LINE__/8]|=1<<(__LINE__%8);\
} \
while(0)

...
if(Condition==TRUE)
    MARKER();
else
    MARKER();
...
输出数据到串口
int Count;
for(Count=0;Count<128*8;Count++)
{
    if(((Test_Array[Count/8])&(1<<(Count%8)))!=0)
    {
        Serial_Output(Count:1);
    }
}

>> 将串口输出日志保存并重命名为 source.txt
生成测试报告
./ECOV source.c MARKER source.txt report.txt
新手上路
  将这些测试标志插入到你的代码之中,而且这些测试标志应当在对应的代码行被执行时置位测试数据数组中的相应位。在所有的测试代码都跑完之后,把那些命中过的代码行以 行号:命中次数 的格式输出到串口。然后将串口输出送给本公举,即可生成测试报告。这个工具仅能一次分析一个.C文件;如果你有好几个.C文件,那么你需要分开做测试。
EDI 工程信息
  天创 - 微光 - 微风 (G2T1 R2T1)

出0入0汤圆

发表于 2018-7-17 11:49:32 | 显示全部楼层
不带说明的么

出0入0汤圆

发表于 2018-7-17 13:31:19 | 显示全部楼层

覆盖率 测试 是什么意思??

出0入0汤圆

发表于 2018-7-17 15:10:00 | 显示全部楼层
楼主,不知有没有使用说明啊

出0入0汤圆

发表于 2018-7-17 16:41:42 | 显示全部楼层
感觉没使用说明不会用啊

出0入0汤圆

发表于 2018-7-17 17:05:48 | 显示全部楼层
和直接串口打数据,好像没什么区别吧。
串口直接打数据 信息量更大吧。

出0入0汤圆

 楼主| 发表于 2018-7-18 01:59:45 | 显示全部楼层
zhonghua_li 发表于 2018-7-17 17:05
和直接串口打数据,好像没什么区别吧。
串口直接打数据 信息量更大吧。

直接在串口打数据是有问题的。第一就是串口的速度太慢了,会严重拖慢程序执行,所以打印是在最后一次性完成的;串口打数据信息量是大,可能有几十万行,大部分都是没用的垃圾信息。

出0入0汤圆

 楼主| 发表于 2018-7-18 02:02:11 | 显示全部楼层
tkggsai2008 发表于 2018-7-17 09:27
覆盖率测试还是觉得bullseyecoverage 好用

Bullseye等高级测试工具无法在单片机上面展开,这是个问题。这个软件主要是给嵌入式系统使用的,尤其是小单片机。一般而言,能有2k行程序的系统,拿出256Byte的内存是小意思,以此类推。而且考虑到白盒测试可以分模块做,内存消耗就很低了。Bullseye和gcov没法做到这些。

出0入0汤圆

发表于 2018-7-18 07:24:50 来自手机 | 显示全部楼层
可是不知道怎么用

出0入0汤圆

 楼主| 发表于 2018-7-18 14:13:36 来自手机 | 显示全部楼层
修正了readme的bug。大家需要更详细的例子吗?

出0入0汤圆

 楼主| 发表于 2018-7-19 07:29:19 | 显示全部楼层
peter_zhang 发表于 2018-7-17 10:26
表示关注!希望知道怎么用的

需要教程的话我可以给大家做一个

出0入0汤圆

发表于 2018-7-19 07:38:39 | 显示全部楼层
谢谢楼主,关注中

出0入0汤圆

发表于 2018-7-19 07:53:13 来自手机 | 显示全部楼层
188089942 发表于 2018-7-17 13:31
覆盖率 测试 是什么意思??

就是看看你的代码是不是都跑了一遍,都跑一遍,且结果是对的,那么你的代码就比较靠谱;如果有些代码没跑到,那你可能想知道为啥没跑到,一旦跑到了会不会有bug。

出0入0汤圆

发表于 2018-7-19 08:28:50 | 显示全部楼层
期待教程出版

出0入0汤圆

发表于 2018-7-19 14:29:34 | 显示全部楼层
多谢楼主,等待教程

出0入0汤圆

发表于 2018-7-24 12:41:58 | 显示全部楼层
估计楼主是看建楼的人少了,这个帖子一直没更新。

出0入0汤圆

 楼主| 发表于 2018-7-25 03:05:09 | 显示全部楼层
github的readme其实就是一个简单的教程。大家想要什么样的例子?

出0入0汤圆

发表于 2018-8-8 18:19:47 | 显示全部楼层
是用来看代码跑了哪些分支?

出0入0汤圆

 楼主| 发表于 2018-8-12 12:43:04 | 显示全部楼层
shiva_shiva 发表于 2018-8-8 18:19
是用来看代码跑了哪些分支?

嗯,是的,看代码跑过了哪些分支

出0入0汤圆

发表于 2018-8-12 14:59:47 | 显示全部楼层
这是职业码农下沉到MCU细分领域了

出0入0汤圆

发表于 2018-8-12 15:00:19 | 显示全部楼层
我怎么还看不清什么是物联网

出0入0汤圆

发表于 2018-8-12 20:29:49 | 显示全部楼层
期待教程出版

出0入0汤圆

发表于 2018-8-12 20:55:52 | 显示全部楼层
学习,听讲解

出0入0汤圆

发表于 2018-8-13 12:04:15 | 显示全部楼层
好东西啊,一直忽然软件测试。顶起

出0入0汤圆

发表于 2018-8-22 09:07:05 | 显示全部楼层
pryprypry 发表于 2018-7-19 07:29
需要教程的话我可以给大家做一个

最好还是能做个教程贴出来,该工具也是mian函数是怎么跟.c文件关联起来的呢

出0入0汤圆

发表于 2018-8-22 09:15:16 | 显示全部楼层
问下楼主,MSVC project是用什么编译器打开的

出0入0汤圆

发表于 2018-8-22 11:22:15 | 显示全部楼层
看上去还不错嘛。

出0入0汤圆

发表于 2018-8-22 13:55:43 | 显示全部楼层
第一次听说这个东西,进去看看

出0入0汤圆

发表于 2018-8-23 12:43:37 来自手机 | 显示全部楼层
能测试出什么问题?

出95入100汤圆

发表于 2018-8-23 13:30:41 | 显示全部楼层
本帖最后由 lhj200304 于 2018-8-23 13:35 编辑

    if(Times_Temp==0)        
    printf("All markers covered!\n", Marker_Pos[Count]);     
   else        
    printf("%d markers not covered, coverage rate %.2f%%!\n", Times_Temp, (double)(Pos_Cnt-Times_Temp)/(double)Pos_Cnt*100);   
    fclose(File);
这些编译一下就需要很多的flash的吧,这个是运行的时候进行白盒测试吗?

出0入0汤圆

发表于 2018-8-23 13:36:53 | 显示全部楼层
期待楼主的教程

出0入0汤圆

 楼主| 发表于 2018-8-26 13:32:26 | 显示全部楼层
lhj200304 发表于 2018-8-23 13:30
if(Times_Temp==0)        
    printf("All markers covered!\n", Marker_Pos[Count]);     
   else  ...

是在运行时进行白盒测试。Flash消耗还好吧。其他工具消耗的更多。

出0入0汤圆

发表于 2018-9-5 09:23:05 | 显示全部楼层
本帖最后由 qq335702318 于 2018-9-5 09:26 编辑
pryprypry 发表于 2018-8-26 13:32
是在运行时进行白盒测试。Flash消耗还好吧。其他工具消耗的更多。


感谢楼主分享!!
请问对STM8的支持如何?
我能不能认为 M5P1是针对32位机的,M2A1是针对8位机的?

出0入0汤圆

 楼主| 发表于 2018-9-5 14:00:29 | 显示全部楼层
qq335702318 发表于 2018-9-5 09:23
感谢楼主分享!!
请问对STM8的支持如何?
我能不能认为 M5P1是针对32位机的,M2A1是针对8位机的? ...

可以这么认为。M5P1是针对16和32位机器的,M2A1是针对8位机的。

出0入0汤圆

发表于 2018-9-5 14:46:33 | 显示全部楼层
pryprypry 发表于 2018-7-25 03:05
github的readme其实就是一个简单的教程。大家想要什么样的例子?

比如说,我现在有个可以运行流水灯程序,需要教程告诉我怎么把测试代码加入到里面,然后怎么看结果,然后这些结果表示的意思是什么。

出0入0汤圆

发表于 2018-9-5 14:50:59 | 显示全部楼层
pryprypry 发表于 2018-7-18 02:02
Bullseye等高级测试工具无法在单片机上面展开,这是个问题。这个软件主要是给嵌入式系统使用的,尤其是小 ...

什么是白盒测试?
我更想知道它在实际的coder工作中有什么意义和用途

出0入0汤圆

 楼主| 发表于 2018-9-5 15:03:02 来自手机 | 显示全部楼层
sup888 发表于 2018-9-5 14:46
比如说,我现在有个可以运行流水灯程序,需要教程告诉我怎么把测试代码加入到里面,然后怎么看结果,然后 ...

嗯,有空了我做一个msvc或stm32的工程例子吧。

出0入0汤圆

 楼主| 发表于 2018-9-5 15:05:27 来自手机 | 显示全部楼层
qq335702318 发表于 2018-9-5 14:50
什么是白盒测试?
我更想知道它在实际的coder工作中有什么意义和用途  ...

白盒测试是指针对性地设计测试用例对程序内部的所有可能执行路径进行全覆盖的一种测试方法,通俗地讲就是把程序测了个遍,确保没有bug。对可靠性要求高的程序是一定要测的。

出0入0汤圆

发表于 2019-6-1 00:48:08 | 显示全部楼层
是在测试C文件里安插测试标志后,然后放到MSVC工程里跑吧?

出0入0汤圆

 楼主| 发表于 2019-8-10 07:23:27 | 显示全部楼层
是的,没错,在测试工程里面插上标志放去跑就可以了。然后接收串口输出。这个不依赖于编译器和gcov,足够小,足够实用。

出0入0汤圆

发表于 2019-8-10 08:53:14 | 显示全部楼层
做个收藏后续使用

出0入0汤圆

发表于 2019-8-10 13:31:33 来自手机 | 显示全部楼层
路过Mark

出0入0汤圆

发表于 2019-8-10 16:00:04 | 显示全部楼层
pryprypry 发表于 2018-7-18 01:59
直接在串口打数据是有问题的。第一就是串口的速度太慢了,会严重拖慢程序执行,所以打印是在最后一次性完 ...

与楼主商讨
看了11楼,这个例子只能标记是否被调用过,不能记录被调用次数,更不能记录被调用的顺序。  这个是最简化情况,这种情况下这种方式是效率最高。
如果要记录调用的顺序,需要非常大的缓冲,这个不讨论。 单论调用次数,假设一个文件最多50个待测试代码段,数组行号2字节,次数2字节, 每次索引自己的位置去累加次数会需要时间。  
改实时串口输出,用DMA或中断输出,所需时间是填充缓冲,用行号即可(行号2字节BIN输出或拆成4个半字节ASC输出),跟索引位置累加基本相当。事后也通过软件将串口输出生成报告,并不关心无用信息。 这种方式天然的记录了顺序。
如果更复杂,比如串口在跑另一个调试输出,再加这个测试,就是两个业务输出在跑,楼主方式可以测试完了独占串口就行。  实时输出则此时要加输出前缀区分,大多情况多加一个字节即可,不造成负载猛增。
对比觉得这个测试工具并没很大需求。

出95入100汤圆

发表于 2019-8-10 23:41:47 | 显示全部楼层
期待楼主的教程
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 03:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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