www.oseam.net
如何自动测试欧视迈(OZEAM)全数字可视对讲系统软件的稳定性?
广州市欧智智能科技有限公司
摘要:本文阐述了一种模拟触摸屏自动点屏和模拟按键事件的MATCH_
word
word文档格式规范word作业纸小票打印word模板word简历模板免费word简历
_1713416312999_2,利用定时器实现自动测
试欧视迈全数字可视对讲系统软件的稳定性,减少测试人员的工作量。
关键词:自动测试 软件稳定性 全数字可视对讲系统 欧视迈 OZEAM 模拟触摸屏点屏 模拟
按键事件
我们在研发欧视迈(OZEAM)全数字可视对讲系统应用软件时,必须对软件的稳定性进行
测试。稳定性测试是在保证功能完整正确的前提下,必不可少的一项测试内容,通过对软件
稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化
趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。
下面针对WINCE下有界面和按键功能的程序,介绍一种模拟触摸屏自动点屏和模拟按键
事件的方法,从而测试程序稳定性。
一.利用函数 mouse_event 模拟触摸屏触摸事件
函数功能:该函数综合鼠标击键和鼠标动作。
函数原型:
VOID mouse_event(
DWORD dwFlags, // motion and click options
DWORD dx, // horizontal position or change
DWORD dy, // vertical position or change
DWORD dwData, // wheel movement
ULONG_PTR dwExtraInfo // application‐defined information
);
参数:
dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下
列值的任何合理组合:
MOUSEEVENTF_ABSOLUTE:表明参数 dX,dy含有
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化的绝对坐标。如果不设置此位,
参数含有相对数据:相对于上次位置的改动位置。此标志可被设置,也可不设置,不管鼠标
的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参
见下面备注部分。
MOUSEEVENTF_MOVE:表明发生移动。
MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。
MOUSEEVENTF_LEFTUP:表明松开鼠标左键。
MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。
MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。
MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。
MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。
MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移
动的数量由 dwData给出。
www.oseam.net
dx:指定鼠标沿 x 轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于
MOUSEEVENTF_ABSOLUTE 的设置。给出的绝对数据作为鼠标的实际 X 坐标;给出的相对数
据作为移动的 mickeys数。一个 mickey表示鼠标移动的数量,表明鼠标已经移动。
dy:指定鼠标沿 y 轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于
MOUSEEVENTF_ABSOLUTE 的设置。给出的绝对数据作为鼠标的实际 y 坐标,给出的相对数
据作为移动的 mickeys数。
dwData:如果 dwFlags 为 MOUSEEVENTF_WHEEL,则 dwData 指定鼠标轮移动的数量。
正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一
个轮击定义为WHEEL_DELTA,即 120。
如果 dwFlagsS不是MOUSEEVENTF_WHEEL,则 dWData 应为零。
dwExtralnfo:指定与鼠标事件相关的附加 32位值。应用程序调用函数GetMessgeExtraInfo
来获得此附加信息。
返回值:无。
备注:如果鼠标被移动,用设置 MOUSEEVENTF_MOVE 来表明,dX和 dy保留移动的信
息。给出的信息是绝对或相对整数值。
如果指定了 MOUSEEVENTF_ABSOLUTE 值,则 dX 和 dy含有
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
化的绝对坐标,其值在
0 到 65535 之间。事件程序将此坐标映射到显示表面。坐标(0,0)映射到显示表面的左上
角,(65535,65535)映射到右下角。
如果没指定MOUSEEVENTF_ABSOLUTE,dX和dy表示相对于上次鼠标事件产生的位置(即
上次
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
的位置)的移动。正值表示鼠标向右(或下)移动;负值表示鼠标向左(或上)移
动。
鼠标的相对移动服从鼠标速度和加速度等级的设置,一个最终用户用鼠标控制面板应用
程序来设置这些值,应用程序用函数 SystemParameterslnfo 来取得和设置这些值。
在应用加速时系统对指定相对鼠标移动提供了两个测试。如果指定的沿 X 轴 y轴的距离
比第一个鼠标阈值大,并且鼠标的加速等级非零,则操作系统将距离加倍。如果指定的沿 X
轴或 y轴的距离比第二个鼠标阈值大,并且鼠标的加速等级为 2,则操作系统将从第一个阈
测试得来的距离加倍。这样就允许操作系统将指定鼠标沿 X 轴或 y轴的相对位移加到 4 倍。
一旦应用了加速,系统用期望的鼠标速度换算合成的值。鼠标速度的范围是从 1(最慢)
到 20(最快),并代表基于鼠标移动的距离指示符移动的数量。缺省值是 10,表示对鼠标的
移动设有附加的修改。
函数 mouse_event需要用的应用程序用来合成鼠标事件。也被应用程序用来取得鼠标位
置和鼠标按键状态之外的鼠标信息。例如,想将基于画笔的信息传给自己的应用程序,可以
写一个直接与输入板硬件通信的动态键接库(DLL),获得附加的信息,并保存到一个队列中。
DLL 然后调用 mouse_event,用标准按键和 x/y位置数据,并在参数 dwExtralnfo设置排列的
附加信息的指针或索引。当应用程序需要附加信息时,调用 DLL(连同存贮在 dwEXtralnfo
中的指针或索引),则 DLL 返回附加信息。
Windows CE:Windows CE不支持参数 dwFlags取MOUSE EVENTF WHEEL 常数。
下面是模拟随意点击触摸的例子:
POINT p = {0,0};//定义一个坐标
// w_screen 为触摸屏分辨率宽,h_screen 为触摸屏分辨率高,也可自定义范围
p.x = rand()%w_screen;//x横坐标
p.y = rand()%h_screen;//y纵坐标
::SetCursorPos(p.x,p.y);//将光标移动到 p 坐标位置
www.oseam.net
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//模拟触摸屏消
息
二.利用 keybd_event如何模拟按键事件
函数原型:VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo)
参数:
bVk:定义一个虚据拟键码。键码值必须在 1~254 之间。
bScan:定义该键的硬件扫描码。
dwFlags:定义函数操作的名个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标
志位:
KEYEVENTF_EXETENDEDKEY:若指定该值,则扫描码前一个值为 OXEO(224)的前缀字节。
KEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键将被按下
KEYEVENTF_SILENT:使用该标志模拟击键,而不产生敲击的声音。
dwExtralnfo:定义与击键相关的附加的 32 位值。
返回值:该函数无返回值。
备注:尽管 keybd_event 传递一个与 OEM 相关的硬件扫描码给系统,但应用程序不能用此扫描码。系统
在内部将扫描码转换成虚拟键码,并且在传送给应用程序前清除键码的 UP/down 位。应用程序可以摸拟
PRINTSCREEN 键的按下来获得一个屏幕快照,并把它存放到剪切板中。若要做到这一点,则要将
keybd_event 的 bVk 参数置为 VK_SNAPSHOT,bScan 参数置为 0(用以获得全屏快照)或 hScan 置为 1
(仅获得活动窗口的快照)。WINCE:WindowsCE 支持 dwFlags 参数附加的标志位。即使用
KEYEVENTF_SILENT 标 志 模 拟 击 键 , 而 不 产 生 敲 击 的 声 音 。 WINCE 不 支 持
KEYEVENTF_EXTENDEDKEY 标志。
//模拟按键 VK_NUMPAD7消息
keybd_event( VK_NUMPAD7,1,0,0);
keybd_event( VK_NUMPAD7,1,KEYEVENTF_KEYUP,0);
//模拟重启
keybd_event (VK_OFF, 0, KEYEVENTF_SILENT, 0);
keybd_event (VK_OFF, 0, KEYEVENTF_SILENT|KEYEVENTF_KEYUP, 0);
三.利用定时器实现自动测试
如何实现自动呢,方法很多,其中可以通过 SetTimer 来设置一个定时器,设置需要模
拟事件发生频率,定时的模拟事件。
设置定时器,可在 OnTimer 实现模拟触摸屏和软键盘(或机械按键)时间,从而达到自动
测试的效果。
我们在测试欧视迈(OZEAM)全数字可视对讲系统软件时利用了以上方法,大大地减轻
了测试人员的工作量,同时也保证了软件的健壮性。