全國(guó)服務熱線 : 4000-020-230

當前位置:首頁 > 技術支持 > 技術文章

技術文章 產(chǎn)品知識 下載中(zhōng)心

技術文章

如何自動測試歐視邁(OZEAM)全(quán)數字(zì)可視對講係(xì)統軟件的穩定(dìng)性?
發布(bù)日期:2012-03-15 15:25:00     作者:    已有  閱讀過本文(wén)

     摘要:本文闡述了一種模擬觸摸屏自動點屏(píng)和模擬按鍵事件的方(fāng)法,利用定時器實現自動測試歐視邁全數字可(kě)視對講係統軟件(jiàn)的穩(wěn)定性,減少測試(shì)人員的工作(zuò)量。

        關鍵詞:自動測試 軟件穩定性 全數字可視對講(jiǎng)係統(tǒng) 歐視邁 OZEAM模擬觸摸屏點(diǎn)屏 模(mó)擬按鍵事件(jiàn)

 

     我們在研發歐視邁(OZEAM)全(quán)數字可視對講係統應用軟件時,必須對(duì)軟件的穩定性進行測試。穩定性測(cè)試是在保證功(gōng)能完整正確的前(qián)提下,必不可少的一項測試內容,通過對軟件穩定性的測試可以觀察在一個運行周期內、一定(dìng)的壓力條件下(xià),軟件的出錯機率(lǜ)、性能劣化(huà)趨勢等。進而大(dà)大減(jiǎn)少軟件上(shàng)線後的崩潰卡死等現象,為軟件的逐(zhú)步優化提供方向及驗證(zhèng)。

 

    下麵針對WINCE下有界麵和按鍵功能的程序,介紹(shào)一種模擬觸摸屏自動點屏和模擬按鍵事件的方法,從而測試(shì)程(chéng)序穩定性。

 

    一.利用函數mouse_event模擬觸摸屏觸摸事件

    函數功(gōng)能:該函數綜合鼠標擊(jī)鍵和鼠標動作。

  函數原型:

  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:標誌位集,指(zhǐ)定點擊按鈕和鼠(shǔ)標動作的多種情況。此參數裏(lǐ)的各位可以是下(xià)列值的任何合理組(zǔ)合:

  MOUSEEVENTF_ABSOLUTE:表明參數dX,dy含有規範(fàn)化的絕對坐標。如果不設置此(cǐ)位,參數含有相對數據:相對於(yú)上次位置的改動位置。此標誌可被設置,也可不設置,不管鼠標的類型或與係統相連的類似於鼠標的設備的類型如何。要得到關於相對鼠標動作的信息,參見下麵備注(zhù)部分。

  MOUSEEVENTF_MOVE:表明發生移動。

  MOUSEEVENTF_LEFTDOWN:表(biǎo)明接按下鼠標左鍵。

  MOUSEEVENTF_LEFTUP:表明鬆開鼠標左(zuǒ)鍵。

  MOUSEEVENTF_RIGHTDOWN:表明按下鼠標右(yòu)鍵。

  MOUSEEVENTF_RIGHTUP:表明鬆開鼠(shǔ)標右鍵。

  MOUSEEVENTF_MIDDLEDOWN:表明按下鼠標中(zhōng)鍵(jiàn)。

  MOUSEEVENTF_MIDDLEUP:表明(míng)鬆開鼠標中(zhōng)鍵。

  MOUSEEVENTF_WHEEL:在Windows NT中如果鼠標有一個輪(lún),表明鼠標輪被移動。移(yí)動的(de)數量由dwData給出。

  dx:指(zhǐ)定鼠標沿x軸的絕對位(wèi)置或者從上次鼠標事件產生以來移動的數量,依賴於MOUSEEVENTF_ABSOLUTE的設置。給出的絕(jué)對數據作(zuò)為鼠標的實際X坐標;給出的相對數據作為移動的mickeys數。一個mickey表示(shì)鼠標移動的數量,表明鼠標已經移動。

  dy:指定鼠標沿y軸(zhóu)的絕對位置或者從上次鼠標(biāo)事件(jiàn)產生以來移動的數(shù)量,依賴於MOUSEEVENTF_ABSOLUTE的設置。給出的絕對數據作為鼠標的實際y坐標,給出的相對數據作為移動的mickeys數。

  dwData:如果dwFlags為MOUSEEVENTF_WHEEL,則dwData指定鼠(shǔ)標輪移動的數量。正值表明鼠標輪向前轉動,即遠離用戶的方向(xiàng);負值表明鼠標輪向後轉動,即朝向用戶。一個輪擊定(dìng)義(yì)為WHEEL_DELTA,即120。

  如果dwFlagsS不是MOUSEEVENTF_WHEEL,則(zé)dWData應為零。

  dwExtralnfo:指定與鼠標事件相關的附加32位值。應用程序調用函數GetMessgeExtraInfo來獲得此附加信息(xī)。

  返回值:無。

  備注:如果鼠標被移動,用(yòng)設置MOUSEEVENTF_MOVE來表(biǎo)明,dX和(hé)dy保留移動的(de)信(xìn)息。給出的(de)信息是絕對或相對整數值。

  如果(guǒ)指定了MOUSEEVENTF_ABSOLUTE值,則dX和dy含有標準化的絕對坐標,其值在0到65535之間。事件程序將此坐標映射到顯示表麵。坐(zuò)標(biāo)(0,0)映射(shè)到(dào)顯(xiǎn)示表麵的左(zuǒ)上角,(65535,65535)映射到右下角。

  如果沒指定(dìng)MOUSEEVENTF_ABSOLUTE,dX和dy表示相對於上次鼠標事件產生的位置(即上次報告的位(wèi)置)的移動。正值表示(shì)鼠標向右(或下)移動;負值表(biǎo)示鼠標向左(或上)移(yí)動。

  鼠標的(de)相對移動服從鼠標速度和加速度等級的設置,一個最終用戶用鼠標控製(zhì)麵板應用(yòng)程序來設置這些值,應用程(chéng)序用函數SystemParameterslnfo來取(qǔ)得和設置這些值。

  在應用加速時係統對指定相對(duì)鼠標移動提供了兩個測試。如果指定的沿X軸y軸的距離比第一個鼠標閾值大(dà),並且鼠標(biāo)的加速等級非零,則操作係統將距離加倍。如果(guǒ)指定的沿X軸或y軸(zhóu)的距離比第二(èr)個鼠標閾值大,並且鼠標的加速等級為2,則操作係統將(jiāng)從第一個閾測試得來的距離加倍。這樣就允許操(cāo)作係統將指定(dìng)鼠標沿X軸或y軸的(de)相(xiàng)對位移加到4倍。

  一旦應用了加速,係統用期望的鼠標速度換算合成的值。鼠標速(sù)度的範圍是從1(最慢)到20(最快),並(bìng)代表基於鼠標移動的距離指示符移動的數量。缺省值是10,表示對鼠標的移動設有附加(jiā)的修改。

  函數mouse_event需要用的應用程序用來合(hé)成鼠標(biāo)事(shì)件。也(yě)被應用程序用來取得鼠(shǔ)標位置和鼠標按鍵狀態之外的鼠標信息。例如,想將(jiāng)基於畫筆的信息傳給自己的(de)應用程序,可以寫一個直接(jiē)與輸入板硬件通信的動態(tài)鍵接庫(DLL),獲得附加的信息,並保(bǎo)存到一個隊列中。DLL然後調用 mouse_event,用標準按鍵和x/y位置數據,並在參數dwExtralnfo設置排列的附加信息的指針或索引。當應用(yòng)程序需要附加信息時,調用 DLL(連同存貯在dwEXtralnfo中(zhōng)的指針或索引),則DLL返回附加信息。

windows ces:windows ces不支持參數 dwFlags取MOUSE EVENTF WHEEL常數。

 

    下麵是(shì)模擬隨(suí)意點擊觸摸的例子:

POINT p = {0,0};//定義一個坐標

// w_screen 為觸摸屏分辨率寬,h_screen為觸摸屏分辨(biàn)率高,也可自定(dìng)義範圍

p.x = rand()%w_screen;//x橫(héng)坐標

p.y = rand()%h_screen;//y縱坐標

::SetCursorPos(p.x,p.y);//將(jiāng)光標移動(dòng)到p坐標位置

mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//模擬觸摸(mō)屏消息

 

 

二.利用keybd_event如(rú)何模擬(nǐ)按鍵事件

 

    函(hán)數原型:VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo)

 

參數:  

    bVk:定義一個(gè)虛據擬鍵碼。鍵(jiàn)碼值必須在1~254之間。  

    bScan:定義該鍵的硬件掃描碼。  

    dwFlags:定義函數操作的(de)名個方麵(miàn)的一(yī)個標誌位(wèi)集(jí)。應用程序可使用如(rú)下一些預定義(yì)常數的組合設(shè)置標誌位:  

    KEYEVENTF_EXETENDEDKEY:若指定該值(zhí),則掃描碼(mǎ)前一個值為OXEO(224)的前綴(zhuì)字節。

    KEYEVENTF_KEYUP:若指定該值,該鍵將被釋放;若未指(zhǐ)定該值(zhí),該鍵將被按下

    KEYEVENTF_SILENT:使用該標誌模(mó)擬(nǐ)擊鍵,而不產生(shēng)敲擊(jī)的聲音。

    dwExtralnfo:定義與擊鍵相(xiàng)關的(de)附加(jiā)的32位值。  

   

返回值:

    該函數無返回值。  

備注:

    盡管keybd_event傳遞一個與OEM相關的(de)硬件掃描碼給係統,但應(yīng)用程序不能用此掃描碼。係統在內部將掃描碼轉換成虛擬鍵碼,並且在傳送(sòng)給應用程序前清除鍵碼的UP/down位。應用(yòng)程序可以摸擬PRINTSCREEN鍵的(de)按(àn)下來獲得一個屏幕快照,並把它存放到(dào)剪切板中。若要做到(dào)這一點,則要將keybd_event的bVk參數置為(wéi)VK_SNAPSHOT,bScan參數置(zhì)為0(用以獲得全屏快照)或hScan置為1(僅獲得活動窗口的快照)。WINCE:WindowsCE支(zhī)持dwFlags參數(shù)附加的標誌位。即(jí)使用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);

 

三.利用定時器實現自動測試

    如何實現自動呢,方法很多,其(qí)中可以通過SetTimer來(lái)設置一個(gè)定時器,設置需要模擬事件發生頻(pín)率,定時的模擬事件。

設置定(dìng)時器,可在OnTimer實現模(mó)擬觸(chù)摸屏和軟鍵盤(或機械按鍵)時間,從而達到自動測試的效果。

 

   我們在測試歐視(shì)邁(OZEAM)全數字可視對講係統軟件時利(lì)用了以(yǐ)上方法,大(dà)大地減輕(qīng)了測試人員的工作量,同時也保(bǎo)證了軟件的健壯性。


返(fǎn)回
【推薦閱讀】

24小時全國服務熱線:4000-020-230

關(guān)注我們:
©2016 廣州市红桃视频app最新版下载安装-红桃视频2025最新版免费版下载-红桃视频智能科技(jì)有限公(gōng)司 版權所有.All Rights Reserved.      粵ICP備10043508號-1
網(wǎng)絡支持:艾迪品牌策劃設計
業務服務
客服電話

4000-020-230

红桃视频app最新版下载安装-红桃视频2025最新版免费版下载-红桃视频