亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 >
DirectFB壓力測試工具
作者:網絡轉載 發布時間:[ 2012/12/20 15:19:44 ] 推薦標簽:

GUI應用程序自動測試一直是個難題,通常的做法是先把人工測試過程錄制下來,然后去重放這個測試過程。這種方法的主要缺點是很難自動檢測運行結果的正確性,所以很多人都不屑去使用它。其實工具總是有它的局限性,它能不能發揮它應有的作用,還依賴于人的靈活運用。即不能過分依賴于工具,也不能盲目排斥工具。

在質量保證的過程中,人無疑是重要的,沒有什么比一次性寫出高質量代碼有效的了。但事實是即使有良好的架構設計,輔之于單元測試和代碼評審等一些有效實踐,仍然有些BUG成為漏網之魚,更何況很多團隊這些工作做得并到位。單一工具和方法很難包醫百病,但各種方法和工具綜合起來使用的效果大不一樣了。

前段時間一位同事開發了一個GUI自動測試工具,我們把它用于BUG重現和壓力測試中,取得了不錯的效果。這里介紹一下DirectFB里面事件錄制和重放的方法:

獲得鍵盤設備:
dfb_input_enumerate_devices ((InputDeviceCallback)device_callback,
    &context->keyboard_device, DICAPS_KEYS);


獲得鼠標或觸摸屏設備:
dfb_input_enumerate_devices ((InputDeviceCallback)device_callback,
    &context->mouse_device, DICAPS_AXES | DICAPS_BUTTONS);


向設備注冊事件監聽函數:
dfb_input_attach (context->mouse_device,
    input_device_listener, context, &context->mouse_reaction);
dfb_input_attach (context->keyboard_device,
    input_device_listener, context, &context->keyboard_reaction);


事件監聽函數:
static ReactionResult input_device_listener (const void *msg_data, void *ctx)
{
    DFBContext *context = (DFBContext*)ctx;
    DFBInputEvent *event = (DFBInputEvent*)msg_data;

    event->locks = 0;
    event->flags &= ~DIEF_LOCKS;

    if (fwrite (msg_data, sizeof (DFBInputEvent), 1, context->file) != 1)
    {
        printf ("[%s]: fwrite Error errno = %d ", __func__, errno);

        g_main_loop_quit (context->loop);
    }
    fflush(context->file);

    return RS_OK;
}

事件重放函數:
static gboolean replay_one_event (gpointer user_data)
{
    DFBContext *context = (DFBContext*)user_data;
    off_t cur = 0;

    DFBInputEvent event = context->event;

    if(event.type == DIET_KEYPRESS || event.type == DIET_KEYRELEASE)
    {
        dfb_input_dispatch (context->keyboard_device, &event);
    }
    else
    {
        dfb_input_dispatch (context->mouse_device, &event);
    }

    if (fread (&context->event, sizeof (DFBInputEvent), 1, context->file) == 1)
    {
        guint ms = (context->event.timestamp.tv_sec - event.timestamp.tv_sec) * 1000
            + (context->event.timestamp.tv_usec - event.timestamp.tv_usec)/1000;

        g_timeout_add (ms, replay_one_event, user_data);
    }
    else
    {
        g_main_loop_quit (context->loop);
    }

    return FALSE;
}

注意:DirectFB中的筆點事件是以相對坐標方式表示的,所以要保證重放時光標在同樣的初始位置。如果DirectFB以多進程的方式運行,這個程序可以是一個獨立的進程,否則要放到應用程序的進程中才行。

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 日本欧洲亚洲一区在线观看 | 日本哺乳期xxxxhd奶水 | 欧美理论片大全在线观看 | 亚洲成人一区二区 | 免费欧美黄色 | 黄色在线观看国产 | 国产三级国产精品国产普男人 | 天堂v亚洲国产v一区二区 | 在线播放亚洲精品富二代91 | 日韩精品免费视频 | 国产精品福利久久2020 | 国内小情侣一二三区在线视频 | 免费中文字幕在线观看 | 欧美啪啪一区 | 日韩版码免费福利视频 | 99热热热| 天天做天天添天天谢 | 日本欧洲亚洲一区在线观看 | 日韩精品视频在线免费观看 | 九月婷婷人人澡人人添人人爽 | 在线观看国产精品麻豆 | 中文字幕一区二区三区永久 | 欧美太黄太色视频在线观看 | 18性夜影院午夜寂寞影院免费 | 欧美午夜免费观看福利片 | 亚洲国产观看 | 涩涩片影院 | 欧美日中文字幕 | 日韩永久在线观看免费视频 | 日韩成人精品日本亚洲 | 成年人小视频在线观看 | jizzjizz老师太多水日本 | 黄网址在线看 | 中文三 级 黄 色 片 | 一区二区三区中文国产亚洲 | 丝袜美女在线播放 | 久久精品欧美日韩精品 | 国产精品日韩在线观看 | 天天色综合图片 | 亚洲看片 | 美女视频永久黄网站在线观看 |