<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            手機軟件自動(dòng)化測試研究報告

            發(fā)布: 2010-9-28 14:18 | 作者: 網(wǎng)絡(luò )轉載 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 384次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

            軟件手機軟件自動(dòng)化測試研究報告

            一、引言

            由于最近一些事務(wù)好久沒(méi)有更新博文了,望關(guān)注我博客的網(wǎng)友們諒解,正好最近一段時(shí)間著(zhù)手自動(dòng)化測試的研究特將我的一些思路及想法寫(xiě)出來(lái)與網(wǎng)友們分享,也算是2010年新年賀禮了。前段時(shí)間我也有一篇關(guān)于自動(dòng)化測試的文章《手機軟件自動(dòng)化測試探索》相對較淺顯,本文在此基礎上進(jìn)行了更進(jìn)一步的研究探索,希望大家能得到更進(jìn)一步的了解。手機軟件的自動(dòng)化測試一直困擾著(zhù)手機軟件測試從業(yè)人員,本文將最近的一些研究新發(fā)現及具體思路作詳盡闡述,希望能給予大家更多的參考萌發(fā)新的思路。

            通過(guò)長(cháng)期的手工測試得出如下可以以自動(dòng)化測試來(lái)解決的問(wèn)題:

            1. 壓力測試:一些連續不斷的操作,比如反復切換歌曲播放及聯(lián)網(wǎng)操作等;

            2. 極限臨界測試:一些極限條件的構造(創(chuàng )建多個(gè)列表)及輸入字符個(gè)數等;

            3. 兼容及中斷:比如在播放或下載歌曲的時(shí)候來(lái)電話(huà)或者信息;

            4. 基本功能回歸測試:這樣大大的節約了時(shí)間和人力成本。

            對于以上的測試很多也是可以通過(guò)手工來(lái)完成,但部分測試采用手工測試是不可靠的,比如最近發(fā)現一個(gè)Bug(在聯(lián)網(wǎng)的一瞬間如果來(lái)一個(gè)信息等中斷操作出現死機),類(lèi)似這種Bug出現條件非?量毯团R界的情況在手工測試中是很難發(fā)現和構造這種測試環(huán)境的,即使發(fā)現了在很大程度上也屬于一種偶然,同時(shí)給開(kāi)發(fā)人員定位這個(gè)問(wèn)題也帶來(lái)了很大的困難!疚恼聛(lái)源:張元禮的博客 http://blog.csdn.net/vincetest】

            面對諸多因素,我們不得不重視手機軟件的自動(dòng)化測試研究。其實(shí)如果掌握了一些自動(dòng)化測試要領(lǐng),從簡(jiǎn)單入手,逐步實(shí)現和突破,相信一定能夠解決手機軟件自動(dòng)化測試的難題。

            二、自動(dòng)化測試原理

            【自動(dòng)化測試原理圖】

            1. TestAgent

            TestAgent為嵌入在手機軟件系統中的一個(gè)測試代理模塊,解決PC端與手機端交互處理及互聯(lián)消息通訊問(wèn)題,這是區別于其他桌面軟件自動(dòng)化測試的關(guān)鍵點(diǎn),也是嵌入式軟件自動(dòng)化測試的主要特征之一。通過(guò)串口或藍牙設備與PC端中的TestTool建立通訊,其具備的主要功能如下:

            1) 接收TestTool發(fā)送的消息并向手機端軟件系統分發(fā)消息及任務(wù)

            2) 監控手機端軟件運行情況并根據相應的約束反饋給PC端的TestTool

            3) 被測軟件的功能(接口)封裝及消息響應

            2. TestTool

            TestTool自動(dòng)化測試工具在PC端用于測試控制及測試操作實(shí)體,與TestAgent對應,該工具與常規的自動(dòng)化測試軟件一樣,其具備的主要功能如下:

            1) 向手機端TestAgent發(fā)送可識別的消息及任務(wù)

            2) 接收來(lái)自手機端TestAgent的反饋結果

            3) 對來(lái)自手機端TestAgent的反饋進(jìn)行測試業(yè)務(wù)的處理

            4) 將測試業(yè)務(wù)的處理結果呈現給測試人員

            三、測試業(yè)務(wù)

            1. 主動(dòng)式測試

            TestTool主動(dòng)式測試是根據我們的測試需求比如(壓力、性能、極限)在TestTool中編寫(xiě)測試腳本控制手機端軟件進(jìn)行測試,或者構造一些手工很難實(shí)現的測試場(chǎng)景,通過(guò)運行腳本向TestAgent發(fā)送消息及任務(wù),TestAgent再向被測軟件分發(fā)消息及任務(wù),并將結果原路返回給TestTool,TestTool再通過(guò)數據處理分析得出測試結果。關(guān)鍵點(diǎn):發(fā)送和分發(fā)消息、接收及處理反饋結果(結果判斷)。

            2. 回歸式測試

            基本功能的回歸測試最為簡(jiǎn)單的方法就是錄制和回放機制,通過(guò)運行錄制的測試腳本達到按照先前的操作順序、步驟、輸入數據等再次測試被測軟件以此達到回歸測試的目的。

            1) 錄制:就是在執行手工測試時(shí)將手工測試的任何操作及返回結果(預期正確的結果)通過(guò)TestAgent在TestTool中保存下來(lái),并進(jìn)行分析處理形成一個(gè)可執行的腳本。錄制的關(guān)鍵點(diǎn):按鍵或觸屏消息、坐標、響應結果(GUI界面)。

            2) 回放:與錄制相對應,運行錄制時(shí)產(chǎn)生的腳本,與主動(dòng)式測試方式不同的是回歸式測試是事先要錄制腳本,通過(guò)錄制腳本來(lái)代替人工編寫(xiě)腳本;胤抨P(guān)鍵點(diǎn):發(fā)送和分發(fā)消息、接收及處理反饋結果(結果判斷)。

            四、關(guān)鍵技術(shù)

            1. 消息傳送機制

            利用手機Modem中提供的AT Command通過(guò)串口向手機端建立命令消息通訊,目前手機廠(chǎng)商提供了常用的AT Command,基本滿(mǎn)足普通的自動(dòng)化測試需求,另外廠(chǎng)商還提供了用戶(hù)自定義AT Command的功能,當標準的AT Command不能滿(mǎn)足自動(dòng)化測試需求時(shí),我們可以利用自定義AT Command來(lái)實(shí)現我們自動(dòng)化測試中所需要的消息通訊。如下為MTK平臺上實(shí)現自定義AT Command的關(guān)鍵樣例代碼:

            view plaincopy to clipboardprint?
            //customer_at_command.c
            #include "kal_non_specific_general_types.h"
            #include "stdio.h"
            #include "string.h"

            #define CUSTOM_SYMBOL '^' // '+' and '/' and ' \ 'is NOT allowed
            #define MAX_UART_LEN 128

            /*****************************************************************************
            * customer command
            *****************************************************************************/
            #define PLAY "play"
            #define STOP "stop"

            kal_uint8 custom_get_atcmd_symbol(void);
            void custom_command_hdlr(char *full_cmd_string);
            extern void rmmi_write_to_uart(kal_uint8 * buffer, kal_uint16 length, kal_bool stuff);

            /*****************************************************************************
            * FUNCTION
            * custom_command_hdlr()
            * DESCRIPTION
            * This function should parse the custom AT command and do correspondent action.
            * Customer should maintain and modify the code.
            * PARAMETERS
            * kal_uint8 * cmd_string
            * RETURNS
            * none
            *****************************************************************************/
            void custom_command_hdlr(char *full_cmd_string)
            {
            char buffer[MAX_UART_LEN];
            char cmd_name[15];
            kal_uint8 index = 3; // we start parsing index after the CUSTOM_SYMBOL
            kal_uint8 tmp_idx = 0;

            while ((full_cmd_string[index] != '=' ) && //might be TEST command or EXE command
            (full_cmd_string[index] != '?' ) && // might be READ command
            (full_cmd_string[index] != 13 )) //carriage return
            {
            cmd_name[tmp_idx] = full_cmd_string[index] ;
            tmp_idx ++;
            index ++;
            }
            cmd_name[tmp_idx] = '\0' ;

            /* just a very basic example : customer can implement their own */
            if (strcmp(cmd_name, PLAY) == 0)
            {
            /* BEGIN: do the following parsing and correspondent action */
            /* */
            /* */
            /* */
            /* END: do the following parsing and correspondent action */
            /* generate final result code: "OK" */
            //Todo 實(shí)現消息分發(fā)或功能調用
            sprintf(buffer, "Hello Play");
            printf("%s\n", "Hello Play");
            rmmi_write_to_uart((kal_uint8*)buffer, (kal_uint16)strlen(buffer), KAL_TRUE);
            }
            else if (strcmp(cmd_name, STOP) == 0)
            {
            /* BEGIN: do the following parsing and correspondent action */
            /* */
            /* */
            /* */
            /* END: do the following parsing and correspondent action */
            /* generate final result code: "OK" */
            //Todo 實(shí)現消息分發(fā)或功能調用
            sprintf(buffer, "Hello Stop");
            printf("%s\n", "Hello Stop");
            rmmi_write_to_uart((kal_uint8*)buffer, (kal_uint16)strlen(buffer), KAL_TRUE);
            }
            else
            {
            /* unrecognized command */
            /* generate final result code: "ERROR" */
            sprintf(buffer, "ERROR");
            printf("%s\n", "ERROR");
            rmmi_write_to_uart((kal_uint8*)buffer, (kal_uint16)strlen(buffer), KAL_TRUE);
            }

            return;
            }

            kal_uint8 custom_get_atcmd_symbol(void)
            {
            return (CUSTOM_SYMBOL);
            }

              2. 圖像識別

            圖像識別主要通過(guò)抓取LCD屏幕顯示圖像進(jìn)行智能識別來(lái)模擬測試工程師的雙眼辨識文字或圖像信息,以此判斷測試結果。主要涉及圖像的獲取和對比分析,智能識別是一個(gè)比較專(zhuān)業(yè)的研究領(lǐng)域,更進(jìn)一步的研究需要進(jìn)行調研,目前我們可以考慮是否能夠通過(guò)第三方工具來(lái)實(shí)現,比如借助目前已經(jīng)成熟的測試工具QTP等。對于圖像獲取在手機平臺上應該具備這樣的接口,或者自行開(kāi)發(fā)這個(gè)接口。

            3. 錄制回放

            錄制的信息及相應的實(shí)現方式如下:

            1) 按鍵消息:由TestAgent捕獲該消息并同步給PC端的TestTool

            2) 筆點(diǎn)消息:由TestAgent捕獲該消息并同步給PC端的TestTool

            3) 坐標:由TestAgent捕獲該坐標信息并同步給PC端的TestTool

            4) 響應結果(GUI界面回放的預期結果):通過(guò)圖像抓取接口抓取圖像并同步給PC端的TestTool(如果做到極致的話(huà)在PC端所呈現的GUI界面與實(shí)際手機GUI界面同步一致,等同于PC機上的顯示為手機GUI的一個(gè)鏡像)

            5) 時(shí)鐘同步:操作步驟的時(shí)間點(diǎn)、操作的先后順序、輸出結果響應時(shí)間

            6) 錄制腳本組裝:TestTool將所有的錄制信息進(jìn)行處理并組裝成一套可運行的測試腳本,要求運行該腳本后能夠與錄制時(shí)的操作完全一樣,并能將回放時(shí)的實(shí)際結果與預期結果進(jìn)行比較從而得出執行結果。

            7) 回放:主要是運行組裝好的測試腳本,將回放時(shí)的實(shí)際結果與預期結果進(jìn)行比較從而得出執行結果,關(guān)鍵點(diǎn)還是圖像識別。

            4. 測試管理

            1) 腳本語(yǔ)言:可以選用Python、TCL作為腳本語(yǔ)言,用一些開(kāi)源的工具進(jìn)行腳本文件的管理維護。

            2) 測試數據:需要建立一個(gè)數據倉庫管理數據,比如錄制時(shí)產(chǎn)生的消息、坐標、GUI圖像信息等。

            3) 測試結果管理:主要涉及測試報告的呈現及保存。

            五、 輔助工具及設備

            1. 串口線(xiàn)

            2. 超級終端(PC機自帶)或者手機廠(chǎng)商提供的配套工具

            3. 腳本編寫(xiě)、調試、維護及管理工具(開(kāi)源的比較多)

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: 手機軟件 研究報告 自動(dòng)化


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>