内核测试规范

更新时间:2019-04-25 20:10:19

自测帮助详见 AliOS Things Kernel 自测指南

1. 内存管理

1.1 动态内存分配与释放

用例编号

用例名称:动态内存分配与释放

测试目的:验证aos_malloc/aos_free能否正常分配与释放堆内存

用例属性:功能

测试步骤
1.调用aos_malloc分配堆内存 512字节
2.读写该512字节堆内存
-调用aos_free释放该512字节内存

预期结果
1.分配和释放堆内存成功
2.读写分配的堆内存成功
3.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

1.2 动态内存分配与释放并初始化为0

用例编号

用例名称:动态内存分配与释放并初始化为0

测试目的:验证aos_zalloc能否正常分配与释放堆内存并将分配的内存初始化为0

用例属性:功能

测试步骤
1.用aos_zalloc分配堆内存512 Bytes
2.该512 Bytes堆内存,判断是否为0
3.用aos_free释放该内存

预期结果
1.配和释放堆内存成功
2.配的512 Bytes内存被初始化为0
3.无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

1.3 动态扩大分配的堆内存

用例编号

用例名称:动态扩大分配的堆内存

测试目的:验证aos_realloc能否正常扩大堆内存大小

用例属性:功能

测试步骤
1.用aos_malloc分配堆内存512 Bytes,起始地址为A
2.512 Bytes写为0x5A
3.用aos_realloc将起始地址为A的512 Bytes内存块扩大为1024 Bytes
4.A地址开始的512 Bytes,与0x5A比较
5.写A+512地址开始的512 Bytes内存
6.用aos_free释放该内存

预期结果
1.配和释放堆内存成功
2.骤4读出的512 Bytes全部为0x5A
3.骤5读写扩大的512 Bytes成功
4.无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

1.4 动态减小分配的堆内存

用例编号

用例名称:动态减小分配的堆内存

测试目的:验证aos_realloc能否正常减小堆内存大小

用例属性:功能

测试步骤
1.调用aos_malloc分配堆内存512 Bytes,起始地址为A
2.将512 Bytes写为0x5A
3.调用aos_realloc将起始地址为A的512 Bytes内存块减小为256 Bytes
4.读A地址开始的256 Bytes,与0x5A比较
5.调用aos_free释放该内存

预期结果
1.分配和释放堆内存成功
2.步骤4读出的256 Bytes全部为0x5A
3.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

1.5 大内存动态分配与释放

用例编号

用例名称:大内存动态分配与释放

测试目的:验证AliOS Things在大内存反复分配与释放时稳定工作

用例属性:稳定性

测试步骤
1.调用aos_malloc分配堆内存1024 Bytes,起始地址为A
2.起始地址为A的1024字节初始化为0x000~0x3FF
3.调用aos_free释放起始地址为A的1024字节内存
4.步骤1~3重复10W次

预期结果
1.10W次分配和释放堆内存成功率≥99.9%
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.任务管理

2.1 创建与销毁任务

用例编号

用例名称:创建与销毁任务

测试目的:验证aos_task_new正确创建任务

用例属性:功能

测试步骤
1.调用aos_task_new创建任务,指定任务函数,栈空间大小为1024
2.任务函数中调用aos_task_name获取任务名称并打印10次
3.调用aos_task_exit退出任务

预期结果
1.串口正确打印出任务名称
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.2 创建与销毁任务(ext)

用例编号

用例名称:创建与销毁任务(ext)

测试目的:验证aos_task_new_ext正确创建任务

用例属性:功能

测试步骤
1.调用aos_task_new_ext创建任务,指定任务函数,栈空间大小为1024
2.任务函数中调用aos_task_name获取任务名称并打印10次
3.调用aos_task_exit退出任务

预期结果
1.串口正确打印出任务名称
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.3 创建任务key

用例编号

用例名称:创建任务key

测试目的:验证aos_task_key_create创建任务key

用例属性:功能

测试步骤
1.调用aos_task_new创建任务
2.任务函数中调用aos_task_key_create创建任务key
3.任务函数中调用aos_task_name获取任务名称并打印10次
4.调用aos_task_exit退出任务

预期结果
1.步骤2中创建的任务key非NULL
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.4 删除任务key

用例编号

用例名称:删除任务key

测试目的:验证aos_task_key_delete删除任务key

用例属性:功能

测试步骤
1.调用aos_task_new创建任务
2.任务函数中调用aos_task_key_create创建任务key
3.调用aos_task_key_delete删除任务key
4.任务函数中调用aos_task_name获取任务名称并打印10次
5.调用aos_task_exit退出任务

预期结果
1.步骤2中创建的任务key非NULL
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.5 设置/获取任务值

用例编号

用例名称:设置/获取任务值

测试目的:验证aos_task_setspecific/aos_task_getspecific设置/获取任务私有值

用例属性:功能

测试步骤
1.调用aos_task_new创建任务
2.任务函数中调用aos_task_key_create创建任务key
3.调用aos_task_setspecific设置任务值,入参为整型全局变量A指针,值为0x5a5a
4.调用aos_task_getspecific获取任务值
5.修改全局变量A的值为0xa5a5
6.再次调用aos_task_getspecific获取任务值
7.任务函数中调用aos_task_name获取任务名称并打印10次
8.调用aos_task_exit退出任务

预期结果
1.步骤2中创建的任务key非NULL
2.步骤4获取的任务值为0x5a5a
3.步骤6获取的任务值为0xa5a5
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.6 创建大量任务

用例编号

用例名称:创建大量任务

测试目的:验证aos_task_new创建大量任务并稳定运行

用例属性:稳定性

测试步骤
1.调用aos_task_new创建20个任务T1~T20(任务名各不相同)
2.任务T1~T20中调用aos_task_name打印任务名称
3.-任务T1~T20调用aos_task_exit退出任务

预期结果
1.20个任务创建成功并打印出20个任务名称
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

2.7 反复创建/销毁任务

用例编号

用例名称:反复创建/销毁任务

测试目的:验证反复创建/销毁任务系统稳定运行

用例属性:稳定性

测试步骤
1.初始化全局变量A=0
2.调用aos_sem_new创建用于同步的信号量S0,count=0
3.循环体中调用aos_task_new创建任务T0
4.T0中休眠100ms后调用aos_sem_signal释放信号量,count=1,A++,
5.调用aos_task_exit退出任务
6.循环体中调用aos_sem_wait(S0,-1)阻塞获取信号量(直到T0释放信号量)
7.循环10W次任务创建与销毁

预期结果
1.10W次循环结束后A=100000
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

3. 多任务通信

3.1 互斥锁创建与销毁

用例编号

用例名称:互斥锁创建与销毁

测试目的:验证aos_mutex_new /aos_mutex_free互斥锁创建与销毁

用例属性:功能

测试步骤
1.调用aos_mutex_new创建互斥锁M0
2.调用aos_mutex_lock(M0, 1000)尝试上锁
3.调用aos_mutex_lock(M0, 1000)尝试上锁
4.调用aos_mutex_unlock(M0)解锁
5.调用aos_mutex_free销毁互斥锁

预期结果
1.互斥锁创建/销毁成功
2.步骤2上锁成功,无阻塞
3.步骤3上锁失败,阻塞时间约1000ms
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

3.2 使用互斥锁任务同步

用例编号

用例名称:使用互斥锁任务同步

测试目的:验证aos_mutex_lock /aos_mutex_unlock互斥锁任务同步

用例属性:稳定性

测试步骤
1.初始化全局变量signed int A=0
2.调用aos_mutex_new创建互斥锁M0
3.调用aos_task_new创建5个任务T1~T5
4.任务T1~T2上锁,全局变量A--,解锁,共循环10W次,aos_task_exit
5.任务T3~T5上锁,全局变量A++,解锁,共循环10W次,aos_task_exit
6.等待T1~T5任务退出,打印全局变量A的值
7.调用aos_task_free销毁互斥锁

预期结果
1.任务T1~T5创建成功
2.互斥锁M0创建/销毁成功
3.步骤6全局变量A=100000
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

3.3 信号量创建与销毁

用例编号

用例名称:信号量创建与销毁

测试目的:验证aos_sem_new /aos_sem_free互斥锁创建与销毁

用例属性:功能

测试步骤
1.调用aos_sem_new创建信号量S0,count=0
2.调用aos_sem_wait(S0,1000)
3.调用aos_sem_signal(S0)
4.调用aos_sem_wait(S0,1000)
5.调用aos_sem_free销毁信号量S0

预期结果
1.信号量创建/销毁成功
2.步骤2获取信号量失败,阻塞1000ms
3.步骤4获取信号量成功,无阻塞
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

3.4 使用信号量任务同步

用例编号

用例名称:使用信号量任务同步

测试目的:验证aos_sem_wait /aos_sem_signal互斥锁任务同步

用例属性:稳定性

测试步骤
1.调用aos_sem_new创建信号量S0,count=-9
2.调用aos_task_new创建10个任务T1~T10
3.任务T1~T10调用aos_msleep(1000),aos_sem_signal(S0)释放信号量,aos_task_exit
4.父任务调用aos_sem_wait(S0,-1)等待10个信号量被释放
5.调用aos_sem_free销毁信号量对象

预期结果
1.任务T1~T10创建成功
2.信号量S0创建/销毁成功
3.步骤4阻塞10s后退出
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

3.5 队列创建与销毁

用例编号

用例名称:队列创建与销毁

测试目的:验证aos_queue_new /aos_queue_free创建与销毁队列

用例属性:功能

测试预置条件:设备上电开机后空闲的RAM空间 > 1024 Bytes

测试步骤
1.调用aos_queue_new创建队列Q0
2.调用aos_queue_recv(Q0,1000,msg,size)从队列Q0接收数据,阻塞1000ms
3.调用aos_queue_send(Q0,msg,size)向队列Q0发送数据
4.调用aos_queue_recv(Q0,1000,msg,size)从队列Q0接收数据,阻塞1000ms
5.调用aos_queeu_free销毁队列Q0

预期结果
1.队列创建/销毁成功
2.步骤2从队列Q0接收超时失败,阻塞1000ms
3.步骤4从队列Q0接收成功,无阻塞
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

3.6 使用队列任务同步

用例编号

用例名称:使用队列任务同步

测试目的:验证aos_queue_send/aos_queue_recv多任务间数据通信

用例属性:稳定性

测试步骤
1.初始化全局变量signed int A=0
2.调用aos_queue_new创建队列Q1~Q4
3.调用aos_task_new创建任务T1~T5
4.任务T2从队列Q1阻塞接收,接收到之后将数据发送大队列Q2
5.任务T3从队列Q2阻塞接收,接收到之后将数据发送大队列Q3
6.任务T4从队列Q3阻塞接收,接收到之后将数据发送大队列Q4
7.任务T5从队列Q4阻塞接收,接收到之后将数据打印
8.任务T1以10ms为周期向队列Q1发送数据A,A++,循环10W次
9.调用aos_queue_free销毁队列Q1~Q4

预期结果
1.任务T1~T5创建成功
2.队列Q1~Q4创建/销毁成功
3.任务T5最后一次打印全局变量A=100000
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

4. 定时器

4.1 定时器创建与销毁

用例编号

用例名称:定时器创建与销毁

测试目的:验证aos_timer_new /aos_timer_free创建与销毁定时器

用例属性:功能

测试步骤
1.调用aos_timer_new创建定时器TM0,定时周期1000ms,repeat=1
2.定时器TM0回调函数中调用aos_now打印当前时刻
3.调用aos_timer_start(TM0)启动定时器TM0
4.10s后调用aos_tmier_stop(TM0)停止定时器TM0
5.10s后调用aos_timer_free(TM0)销毁定时器TM0

预期结果
1.定时器创建/销毁成功
2.定时器start之前不会触发回调
3.定时器start之后,stop之前每隔约1000ms触发回调
4.定时器stop后停止运行,不再触发回调
5.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

4.2 定时器周期修改

用例编号

用例名称:定时器周期修改

测试目的:验证aos_timer_change修改定时器定时周期

用例属性:功能

测试步骤
1.调用aos_timer_new创建定时器TM0,定时周期1000ms,repeat=1 -定时器TM0回调函数中调用aos_now打印当前时刻
2.调用aos_timer_start(TM0)启动定时器TM0
3.10s后调用aos_timer_change(TM0,2000)
4.10s后调用aos_tmier_stop(TM0)停止定时器TM0
5.调用aos_timer_free(TM0)销毁定时器TM0

预期结果
1.定时器创建/销毁成功
2.定时器start之前不会触发回调
3.定时器start之后,先以1000ms周期触发回调,10s后以2000ms周期触发回调
4.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

5. KV

5.1 读写KV

用例编号

用例名称:读写KV

测试目的:验证aos_kv_set/aos_kv_get读写KV

用例属性:功能

测试步骤
1.调用aos_kv_set写KV对
2.调用aos_kv_get读KV对

预期结果
1.读写KV对成功
2.读出的value与写入的value相同
3.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

5.2 删除KV

用例编号

用例名称:删除KV

测试目的:验证aos_kv_del删除KV对

用例属性:功能

测试步骤
1.调用aos_kv_del删除存在的KV对kv1
2.调用aos_kv_get读KV对kv1,

预期结果
1.步骤2读KV对失败,步骤1删除KV对成功
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

5.3 读写删稳定性

用例编号

用例名称:读写删稳定性

测试目的:验证aos_kv_set/aos_kv_get/aos_kv/del写读删KV对

用例属性:稳定性

测试步骤
1.调用aos_kv_set增加KV对,key和value长度为255字节
2.调用aso_kv_get读KV对
3.调用aos_kv_del删除KV对
4.步骤1~3循环10W次

预期结果
1.步骤2读出的value与步骤1写入的value相同,10W次正确率100%
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

6. Yloop

6.1 事件注册与注销

用例编号

用例名称:事件注册与注销

测试目的:验证aos_register_event_filter/aos_unregister_event_filter注册/注销系统事件

用例属性:功能

测试步骤
1.调用aos_register_event_filter注册事件EVENT0,指定事件回调CB0
2.回调CB0中调用aos_loop_exit退出事件循环
3.调用aos_post_event触发事件EVENT0
4.调用aos_loop_run运行主事件循环
5.调用aos_unregister_event_filter注销事件EVNET0

预期结果
1.步骤2触发事件后,回调函数CB0被调用
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

6.2 定时任务注册/取消

用例编号

用例名称:定时任务注册/取消

测试目的:验证aos_post_delayed_action/aos_cancel_delayed_action注册/取消定时任务

用例属性:功能

测试步骤
1.调用aos_post_delayed_action注册1000ms定时任务,回调为CB0
2.回调CB0中调用aos_post_delayed_acion注册1000ms定时任务,回调为CB0,调用aos_cancel_delayed_action取消定时任务
3.main loop等待3000ms

预期结果
1.1000ms后定时任务被触发,CB0被调用
2.2000ms后CB0不再被调用 系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

6.3 自定义事件循环

用例编号

用例名称:自定义事件循环

测试目的:验证aos_loop_init定义task的事件循环

用例属性:功能

测试步骤
1.调用aos_task_new创建新任务T0
2.任务T0中调用aos_loop_init初始化T0的事件循环
3.任务T0调用aos_post_delayed_action注册1000ms延时action,回调CB0中aos_loop_exit退出当前事件循环
4.任务T0调用aos_loop_run开始事件循环
5.任务T0中aos_loop_run返回后调用aos_loop_destroy

预期结果
1.1000ms后定时任务被触发,CB0被调用,任务T0的事件循环退出
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

6.4 事件循环运行与停止

用例编号

用例名称:事件循环运行与停止

测试目的:验证aos_loop_run/aos_loop_exit运行/停止事件循环

用例属性:功能

测试步骤
1.调用aos_post_delayed_action注册1000ms延时action,回调CB0中退出当前事件循环
2.调用aos_loop_run开始运行当前事件循环
3.aos_loop_run返回后调用aos_loop_destroy销毁事件循环

预期结果
1.1000ms后定时任务被触发,CB0被调用,事件循环退出,无阻塞
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

6.5 触发大量事件

用例编号

用例名称:触发大量事件

测试目的:验证注册与触发大量事件系统稳定运行 |
用例属性:稳定性

测试步骤
1.main loop调用aos_post_delayed_action注册1000个1000ms延时action,回调为CB0
2.main loop等待2000ms

预期结果
1.1000ms后CB0被调用1000次
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

6.6 自定义大量事件循环

用例编号

用例名称:自定义大量事件循环

测试目的:验证大量事件循环正常稳定运行

用例属性:稳定性

测试步骤
1.调用aos_task_new创建10个任务T0~T9
2.任务T0~T9分别调用aos_loop_init创建自定义事件循环,并aos_post_delayed_action注册1000ms延时action,回调CB0中退出当前事件循环
3.T0~T9调用aos_loop_run运行各自事件循环等待1000ms后延时action触发
4.T0~T9中aos_loop_run返回后调用aos_loop_destroy销毁事件循环
5.aos_loop_run返回后调用aos_loop_destroy销毁事件循环

预期结果
1.1000ms后T0~T9注册的延时action被触发,CB0被调用,T0~T9事件循环退出,无阻塞
2.系统无crash,fail,error,assert,abort,内存泄漏,阻塞等异常

备注

results matching ""

    No results matching ""