全(quán)國服務熱(rè)線 : 4000-020-230

當前位置:首頁 > 技(jì)術支持 > 技術文章

技術文章 產品知識 下載中心

技術(shù)文章

如何自動測試歐視邁(OZEAM)全數字可視對講係統軟件(jiàn)的穩定性?
發布日期:2012-03-15 15:25:00     作者:    已有  閱讀過本文

     摘要:本文闡述了一種模擬觸摸屏自動點屏和模擬按鍵事件的方法(fǎ),利(lì)用定時器實現自動測試歐視邁全數字可視對講係統軟(ruǎn)件的穩定性,減少測試人員的(de)工作量。

        關鍵詞:自動(dòng)測試 軟件穩定性 全(quán)數(shù)字可(kě)視對講係統 歐視邁(mài) OZEAM模擬觸摸(mō)屏點屏 模擬按鍵事件(jiàn)

 

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

 

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

 

    一.利用函數mouse_event模擬觸摸(mō)屏觸摸事件

    函數功(gōng)能:該函數綜合(hé)鼠標擊鍵(jiàn)和(hé)鼠標動作。

  函數原型:

  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

  );

  參(cān)數:

  dwFlags:標誌位集,指定點擊按鈕和鼠標(biāo)動作(zuò)的多種情況。此參數裏的各(gè)位可以是下列值的(de)任何合理組合:

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

  MOUSEEVENTF_MOVE:表明發生移動。

  MOUSEEVENTF_LEFTDOWN:表明(míng)接按下鼠(shǔ)標左鍵。

  MOUSEEVENTF_LEFTUP:表明鬆開鼠標左鍵。

  MOUSEEVENTF_RIGHTDOWN:表(biǎo)明按下鼠標右鍵(jiàn)。

  MOUSEEVENTF_RIGHTUP:表明鬆開鼠標右鍵。

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

  MOUSEEVENTF_MIDDLEUP:表明鬆開鼠標中鍵(jiàn)。

  MOUSEEVENTF_WHEEL:在(zài)Windows NT中(zhōng)如果鼠標有一(yī)個輪,表明鼠標輪(lún)被移動。移動(dòng)的數量由dwData給出。

  dx:指定鼠標沿x軸的絕對位置或者(zhě)從上次鼠標事件產生以來(lái)移動的數(shù)量,依賴於MOUSEEVENTF_ABSOLUTE的設置。給出的絕對數據作為鼠(shǔ)標的實際X坐標;給出的相對數據作為移動的mickeys數。一個mickey表示鼠標(biāo)移動(dòng)的數量,表明鼠標已經移動(dòng)。

  dy:指定鼠標沿y軸的(de)絕對位置或者從上次鼠標事件產生以來移動的數量,依賴(lài)於MOUSEEVENTF_ABSOLUTE的設置。給出的絕對數據作為鼠標的實際(jì)y坐標,給出的相對數(shù)據作為(wéi)移(yí)動的mickeys數(shù)。

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

  如果dwFlagsS不是(shì)MOUSEEVENTF_WHEEL,則dWData應為零。

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

  返回值:無。

  備注:如果(guǒ)鼠標被移動,用設置MOUSEEVENTF_MOVE來表明,dX和dy保留移動的信息。給出的信息是絕對或(huò)相對整數值。

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

  如(rú)果沒指定MOUSEEVENTF_ABSOLUTE,dX和dy表示相對於上次鼠標事件產生的位置(即上次報告的位置)的(de)移動。正值(zhí)表示鼠標向右(或下)移動;負值表示鼠標向左(或上)移動(dòng)。

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

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

  一旦應用了加速,係統用期望(wàng)的鼠標速度換算合成的值。鼠(shǔ)標速度的範圍是從1(最慢(màn))到20(最快(kuài)),並代表(biǎo)基於鼠標移動的距離(lí)指示符移動的數量。缺省(shěng)值(zhí)是10,表示對鼠標的移動設有(yǒu)附加的修改。

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

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

 

    下(xià)麵是模擬隨意點擊觸摸的例子:

POINT p = {0,0};//定(dìng)義一個坐標

// w_screen 為觸摸屏分辨率寬,h_screen為觸摸屏分辨率高,也可自定義範圍

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

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

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

mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//模(mó)擬觸摸屏消(xiāo)息

 

 

二.利用keybd_event如何模擬按鍵事件

 

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

 

參數:  

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

    bScan:定義(yì)該鍵的硬件掃描碼。  

    dwFlags:定義函數操作的名個方麵的(de)一(yī)個標誌位集。應用程序可使用如下一些預定(dìng)義常數的組合設置標誌位:  

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

    KEYEVENTF_KEYUP:若指定該值,該鍵將被釋放;若未指定該(gāi)值,該鍵(jiàn)將被(bèi)按下

    KEYEVENTF_SILENT:使(shǐ)用該標誌(zhì)模擬擊鍵,而不產生(shēng)敲擊的聲音。

    dwExtralnfo:定義與擊鍵相關的附加的32位值。  

   

返回值:

    該函數無(wú)返回值。  

備注:

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

 

三.利用定時器實(shí)現自動測試

    如(rú)何實現自動呢,方法很多,其中可(kě)以通過SetTimer來設(shè)置一個(gè)定時器,設置需(xū)要模擬事(shì)件發生頻率,定時的模擬事件。

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

 

   我們在測試歐(ōu)視邁(OZEAM)全(quán)數字可視對講係(xì)統軟件時利用了以上方法,大大地減輕了測試人員的工作量,同(tóng)時也保證了軟件的健(jiàn)壯性。


返回
上(shàng)一(yī)篇  如何辨別真假全數字可視對講係統?
【推薦閱讀】

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

關注我們:
©2016 廣州市歐智智能科技有(yǒu)限公司 版權所有.All Rights Reserved.      粵ICP備10043508號-1
業務服(fú)務
客服電話

4000-020-230

168开奖网官方网址>>168开奖网六合>>168开奖网一肖一码100准王中王香港