版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1基于日志分析的基于日志分析的AndroidAndroid測試方法的測試方法的研究與實(shí)現(xiàn)研究與實(shí)現(xiàn) 基于日志分析的基于日志分析的AndroidAndroid測試方法的研究與實(shí)現(xiàn)測試方法的研究與實(shí)現(xiàn)摘摘 要要隨著科技發(fā)展,Andriod操作系統(tǒng)在手機(jī)市場的占有率越發(fā)突出,但用戶在享受Andriod操作系統(tǒng)所提供的便利的同時(shí),往往會因?yàn)閼?yīng)用的功能、性能等方面的缺陷而不滿。因此測試是不可或缺的,在一次又一次地測試中發(fā)現(xiàn)并解決問題,是每一個(gè)好產(chǎn)品的必經(jīng)之路。身為為測試人員,不光要懂得找到bug,還應(yīng)該及時(shí)的將bug的錯(cuò)誤信息準(zhǔn)確地反饋給開發(fā)?;诖吮疚膶⑨槍ndroid的日志系統(tǒng)進(jìn)行設(shè)計(jì)并實(shí)現(xiàn),使得
2、測試更加系統(tǒng)化,效率變得更高。 該系統(tǒng)是為Windows環(huán)境中基于Python語言和Android調(diào)試橋(adb)的Android日志系統(tǒng),實(shí)現(xiàn)了對設(shè)備日志的及時(shí)存儲并加入了開啟自動化測試工具的功能。本文的研究的目的是為了讓用戶通過該軟件使日志讀取更加方便,并且方便用戶分析和定位錯(cuò)誤,希望能通過該系統(tǒng),讓測試人員可以及時(shí)的保留現(xiàn)場,從而達(dá)到提高Andriod設(shè)備測試效率的最終目的。關(guān)鍵詞:關(guān)鍵詞:Andriod;python;日志分析;測試2ResearchResearch andand implementationimplementation ofof AndroidAndroid test
3、test methodmethod basedbased onon loglog analysisanalysisAbstractWith the continuous advance of Internet technology and the popularity of mobile device, Android operating system is becoming more and more significant in the mobile phone market. However, while enjoying the convenience provided by Andr
4、oid operating system, users are often dissatisfied with the function and performance of the application. Therefore, examination is indispensable. This is the only way for all good products to find and solve problems in multiple tests. As a tester, we must know how to find the error and give the deve
5、loper the error information in time. On this basis, this paper designs and implements the Android log system to make the test more systematic and efficient.Under the windows environment, based on Python language and Android debug bridge (ADB), Android log system adds the function of timely storage o
6、f device logs and opening automatic test tools. The purpose of this paper is to make it more convenient for users to read logs through the software, and to facilitate users to analyze and retrieve errors. I hope that through this system, testers can keep the scene in time and achieve the ultimate go
7、al of improving the testing efficiency of Android devices. Keywords: Android; Python; log analysis; 3目目 錄錄1 1 引言引言 .7 71.1 背景內(nèi)容 .71.2 論文研究目的 .81.3 論文結(jié)構(gòu) .82 2 系統(tǒng)相關(guān)技術(shù)系統(tǒng)相關(guān)技術(shù) .9 92.1 LOGGING模塊 .92.2 ANDRIOD ANR模塊 .132.3 PYTHON TKINTER模塊 .152.4 PYINSTALLER庫 .162.5 ADB DEVICES模塊.182.6 ANDRIOD ANR模塊 .192.7
8、 SUBPROCESS模塊 .212.8 PATHLIB模塊 .232.9 SYS模塊.253 3 總體設(shè)計(jì)總體設(shè)計(jì) .27273.1 需求分析 .273.2 系統(tǒng)設(shè)計(jì) .283.3 系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì) .283.4 WINDOWS系統(tǒng)通過ADB獲取ANDROID日志.283.5 MONKEY TEXT.303.6 ANDRIOD LOG類型 .314 4 功能模塊設(shè)計(jì)功能模塊設(shè)計(jì) .32324.1 日志獲取功能模塊設(shè)計(jì) .324.2 截圖模塊設(shè)計(jì) .324.3 Monkey模塊設(shè)計(jì) .325 5 測試測試 .33335.1 界面測試 .335.2 功能測試 .335.3 測試用例及執(zhí)行結(jié)果 .
9、37參考文獻(xiàn)參考文獻(xiàn) .4141謝辭謝辭 .42424附錄附錄 源代碼源代碼 .434351 1 引言引言隨著科技發(fā)展,Andriod操作系統(tǒng)在手機(jī)市場的占有率越發(fā)突出,人們在享受Andriod系統(tǒng)帶來的便利的同時(shí),往往會因?yàn)閼?yīng)用的功能、性能等方面的缺陷而不滿。因此應(yīng)用的測試是不可或缺的,在測試中發(fā)現(xiàn)并解決問題,是每一個(gè)好產(chǎn)品的必經(jīng)之路。同時(shí)身為為測試人員,不光要發(fā)現(xiàn)bug,更應(yīng)該及時(shí)的將bug的錯(cuò)誤信息準(zhǔn)確地反饋給開發(fā)。基于此本文將針對Android的日志系統(tǒng)進(jìn)行設(shè)計(jì)并實(shí)現(xiàn),使得測試更加系統(tǒng)化,效率變得更高。 該系統(tǒng)是為Windows環(huán)境中基于Python語言和Android調(diào)試橋(adb)
10、的Android日志系統(tǒng)開發(fā)的。目的是通過該軟件使日志讀取更加方便,并且方便用戶分析和定位錯(cuò)誤。1.11.1 背景內(nèi)容背景內(nèi)容隨著Andriod系統(tǒng)的廣泛普及,根據(jù)IDC新報(bào)告:Android系統(tǒng)市場占比最高,為77.14%,高居榜首,iOS操作系統(tǒng)的市場占比為22.83%,位居第二。而其他移動操作系統(tǒng)的比例僅為0.04。但隨著Android系統(tǒng)的普及,也漸漸出現(xiàn)了一系列的問題,首當(dāng)其沖的就是應(yīng)用方面的性能與穩(wěn)定性。Andriod操作系統(tǒng)能占據(jù)全球手機(jī)市場榜首的原因有以下幾點(diǎn):1.平臺的開放性:Andriod操作系統(tǒng)的開放性允許任何手機(jī)開發(fā)人員參與Andriod應(yīng)用程序的開發(fā),得益于此,大量的
11、開發(fā)團(tuán)隊(duì)使Andriod系統(tǒng)日漸成熟,應(yīng)用軟件也無比豐富。2.系統(tǒng)開源:Andriod給予開發(fā)一個(gè)自由的環(huán)境,不會受到各種規(guī)則的束縛,擁有高自由度,也因此誕生了許多新奇的應(yīng)用。3.豐富的硬件支持:Andriod產(chǎn)品早已不單單局限于手機(jī),我們?nèi)粘I钪性S多常見的產(chǎn)品也都是Andriod操作系統(tǒng)。Andriod系統(tǒng)的高自由度與豐富的應(yīng)用程序吸引了大量的新用戶。由于Android平臺具有開源和易于發(fā)布的功能,因此Android應(yīng)用每天都在增長。作為用戶和開發(fā)人員的共同需求,第三方應(yīng)用程序市場發(fā)展迅速,但因無法規(guī)范管理,對第三方應(yīng)用程序市場的審查并不完善,導(dǎo)致許多第三方應(yīng)用市場上的app往往存在著安全
12、漏洞或嚴(yán)重bug,類如兼容性差,易卡死、黑屏等問題,極大地影響了Android用戶的體驗(yàn)。現(xiàn)今,人們對智能手機(jī)的依賴越發(fā)嚴(yán)重,同時(shí)許多無法保證功能及性能的應(yīng)用讓用戶深惡痛絕,也往往因此嚇退了許多潛在用戶。故而保證Andriod系統(tǒng)的應(yīng)用質(zhì)量已成為許多公司眼中至關(guān)重要的一環(huán)。 61.21.2 論文研究目的論文研究目的軟件測試的目的在于提高產(chǎn)品的質(zhì)量,保障用戶使用期間產(chǎn)品的穩(wěn)定性,并規(guī)避由于各種邊際操作和不規(guī)則使用導(dǎo)致的產(chǎn)品缺陷。用戶希望看到的是通過各種操作路徑檢測到的產(chǎn)品。產(chǎn)品需在質(zhì)量上通過行業(yè)標(biāo)準(zhǔn)測試和規(guī)格測試,并且在產(chǎn)品穩(wěn)定性和功能性方面通過行業(yè)標(biāo)準(zhǔn)測試級別。開發(fā)人員希望進(jìn)行測試,以檢測由于
13、開發(fā)過程中考慮不足和結(jié)構(gòu)錯(cuò)誤而導(dǎo)致的產(chǎn)品缺陷。并通過修改和重新測試的過程不斷修復(fù)這些漏洞,最終達(dá)到可以滿足用戶需求的目的。而測試人員希望通過自己的測試,使產(chǎn)品在特定的操作路徑下暴露其缺陷,進(jìn)而發(fā)現(xiàn)產(chǎn)品中的不足。如果嘗試成功,則表明該產(chǎn)品在此操作路徑下存在缺陷。同時(shí),可以預(yù)見的是,用戶可能具有與此操作路徑相同的過程,從而遇到相同的產(chǎn)品缺陷,影響使用的體驗(yàn)。這可能會引起用戶的不滿,最終導(dǎo)致大量客戶的流失,這將影響到產(chǎn)品的后續(xù)推廣,并極大地?fù)p害產(chǎn)品和公司的聲譽(yù)。因此,測試人員在這里要預(yù)先模擬這樣的操作,發(fā)現(xiàn)缺陷的存在并防止由此類問題而導(dǎo)致的客戶流失。想要對所有的測試路徑進(jìn)行測試是不大現(xiàn)實(shí)的,因?yàn)橥ㄟ^
14、排列組合可知測試路徑是無窮無盡的,而且在大量的缺陷將會在用戶經(jīng)過長期的使用之后才會暴露出來,故而測試的過程不可能完全排除所有問題,檢測出所有的設(shè)計(jì)缺陷,因此提高測試的效率是必然的。測試不僅是要體驗(yàn)產(chǎn)品并以用戶身份使用產(chǎn)品,更重要的是要發(fā)現(xiàn)產(chǎn)品中的缺陷并查找bug。作為應(yīng)用的測試人員,總會因?yàn)闊o法發(fā)現(xiàn)bug以及定位問題所在而煩惱,特別是在于穩(wěn)定性測試方面,需要投入較長的測試時(shí)間,從而測試人員的工作難度也因此提升。作為測試,有時(shí)無法找到必現(xiàn)的路徑來復(fù)現(xiàn)bug,只能通過保留現(xiàn)場或者加大測試壓力去再次復(fù)現(xiàn),但更重要的是如何幫助開發(fā)去發(fā)現(xiàn)問題所在,如何提供相應(yīng)的log信息給開發(fā)分析。我們可以使用一種An
15、droid SDK工具:Android Debug Bridge來調(diào)試Android,其中包括管理生成的Android日志。本文的目的就是使用python語言設(shè)計(jì)一個(gè)基于Android 的日志分析工具,幫助開發(fā)人員及時(shí)有效的獲取bug所產(chǎn)生的日志,并保存測試日志,便于分析長時(shí)測試所出現(xiàn)的偶現(xiàn)bug,提高解決問題的效率。1.31.3 論文論文結(jié)構(gòu)結(jié)構(gòu)本文一開始介紹了當(dāng)時(shí)的背景內(nèi)容、以及設(shè)計(jì)系統(tǒng)的目的與意義。然后再接著介紹本系統(tǒng)使用到的技術(shù),接著介紹系統(tǒng)的總體設(shè)計(jì)。會按模塊詳細(xì)的介紹,然后會附上測試案例,以及自己本次過程的總結(jié),最后會附上自己參考過的文獻(xiàn)以及致謝內(nèi)容。72 2 系統(tǒng)相關(guān)技術(shù)系統(tǒng)相關(guān)
16、技術(shù)2.12.1 logginglogging模塊模塊Python中有一個(gè)專門負(fù)責(zé)輸出運(yùn)行日志的模塊,它的名字叫l(wèi)ogging。通過它,您可以設(shè)置日志輸出級別,管理日志的路徑等。與直接打印相比,它有以下優(yōu)點(diǎn):您可以設(shè)置不同的日志級別,讓日志模塊只輸出重要信息,而不顯示大量調(diào)試信息。若將所有信息打印到標(biāo)準(zhǔn)輸出,這會嚴(yán)重影響了開發(fā)人員從標(biāo)準(zhǔn)輸出中查看其他數(shù)據(jù);開發(fā)人員可以決定在哪里以及如何輸出日志記錄。logging模塊主要由3部分組成:1.Logger 日志記錄器Logger提供了一個(gè)可由應(yīng)用程序代碼直接使用的接口。從不會直接實(shí)例化它。它通常是通過記錄模塊級別的函數(shù)logging.getLogg
17、er(名稱)獲得的,如果未提供名稱,則使用root。名稱以點(diǎn)名(a.b.c)命名。以相同名稱多次調(diào)用logging.getLogger()將返回相同的logger對象。在這種命名方法中,后記錄器是前記錄器的子記錄器,并自動繼承父記錄器的日志信息。因此,只要配置了頂級記錄器,就無需一次配置應(yīng)用程序的所有記錄器,然后子記錄器將根據(jù)需要繼承。logging模塊中的Logger對象主要有以下幾種作用:首先,它向應(yīng)用程序公開了幾種方法,以便應(yīng)用程序可以在運(yùn)行時(shí)寫入日志。其次,Logger對象根據(jù)日志信息的嚴(yán)重性或過濾器對象(默認(rèn)過濾功能)決定如何處理日志信息。.最后,logger還負(fù)責(zé)將日志信息傳輸?shù)较?/p>
18、關(guān)的handlers。2.Handler 日志處理器簡而言之,Handler是日志記錄模塊中最常用的類。它確定您的LogRecord最終出現(xiàn)的位置。83.Formatter 格式化器,控制日志輸出的格式,指明了最終輸出中日志記錄的布局Formatter屬性如下:表2-1Formatter屬性屬性名稱格式說明name%(name)s日志的名稱asctime%(asctime)s可讀時(shí)間,默認(rèn)格式2003-07-08 16:49:45,896,逗號之后是毫秒filename%(filename)s文件名,pathname的一部分pathname%(pathname)s文件的全路徑名稱funcNam
19、e%(funcName)s調(diào)用日志多對應(yīng)的方法名levelname%(levelname)s日志的等級levelno%(levelno)s數(shù)字化的日志等級lineno%(lineno)d被記錄日志在源碼中的行數(shù)module%(module)s模塊名msecs%(msecs)d時(shí)間中的毫秒部分process%(process)d進(jìn)程的IDprocessName %(processName)s進(jìn)程的名稱thread%(thread)d線程的IDthreadName%(threadName)s線程的名稱9relativeCreated%(relativeCreated)d日志被創(chuàng)建的相對時(shí)間,以毫秒
20、為單位典型的日志記錄的步驟是這樣的:1.創(chuàng)建logger2.創(chuàng)建handler3.定義formatter4.給handler添加formatter5.給logger添加handler用代碼簡單實(shí)現(xiàn)則是:import logging # 1、創(chuàng)建一個(gè)logger logger = logging.getLogger(mylogger) logger.setLevel(logging.DEBUG) # 2、創(chuàng)建一個(gè)handler,用它進(jìn)行日志文件寫入 fh = logging.FileHandler(test.log) fh.setLevel(logging.DEBUG) # 3、再創(chuàng)建一個(gè)han
21、dler,用于輸出到控制臺 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 4、定義處理器的輸出格式(formatter)formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s) # 5、給處理器添加formatterfh.setFormatter(formatter) ch.setFormatter(formatter) # 6、給logger添加handler logger.addHandler(fh) 10log
22、ger.addHandler(ch) 具體實(shí)現(xiàn)代碼如下圖:112.22.2 AndriodAndriod anranr模塊模塊ANR:應(yīng)用程序沒有響應(yīng),也就是說,應(yīng)用程序沒有響應(yīng)。在安卓系統(tǒng)上,如果你的應(yīng)用程序暫時(shí)沒有響應(yīng),系統(tǒng)會出現(xiàn)一個(gè)對話框,提示用戶對當(dāng)前狀態(tài)進(jìn)行操作,用戶可以選擇等待程序繼續(xù)運(yùn)行,或者強(qiáng)制關(guān)閉程序,這便稱為ANR。因此,在一個(gè)流暢、合理的應(yīng)用程序中不會顯示anr,影響用戶的體驗(yàn)。默認(rèn)情況下,在安卓系統(tǒng)中,Activity的最大等待時(shí)間是5秒,而通常若是發(fā)生了ANR,用戶往往需要等待8s以上。最后,讓我們看一下Google官方文檔中有關(guān)ANR的解釋如圖2-2:圖2-2 an
23、r模塊解釋簡而言之,ANR是谷歌引入的一套機(jī)制,目的是讓應(yīng)用程序能夠足夠快地響應(yīng)用戶的請求。一般anr問題的日志在/data/anr/目錄中。我們可以通過adb導(dǎo)出日志:adb pull /data/anr/traces.txt d:/此命令將手機(jī)內(nèi)存中的anr目錄下的相關(guān)文件復(fù)制到計(jì)算機(jī)上的D盤,但有時(shí)會導(dǎo)致錯(cuò)誤,于是我們可以通過這條命令:adb shell ls /data/anr/ 來查看手機(jī)內(nèi)anr目錄下的文件,經(jīng)過實(shí)際操作,可發(fā)現(xiàn)anr目錄下的trace文件并不只有一個(gè),所以無法指定的推出某一個(gè)trace文件,具體情況如下圖3-2-1:12圖3-2-1 查看anr文件夾因此在導(dǎo)出文件
24、時(shí),我選擇將anr目錄完整導(dǎo)出,導(dǎo)出及打開后效果如下圖3-2、3-3:圖3-2-2 anr導(dǎo)出目錄圖3-2-3 追蹤文件打開132.32.3 PythonPython TkinterTkinter模塊模塊Tkinter是一個(gè)使用Python設(shè)計(jì)窗口的模塊。在python語言中,我們可以使用Tkinter模塊來實(shí)現(xiàn)GUI界面的設(shè)計(jì)與生成。例如,如果我們要開發(fā)一個(gè)計(jì)算器,那么計(jì)算器這個(gè)功能只是一個(gè)程序的輸入及輸出。若無GUI界面,用戶對于這個(gè)功能的體驗(yàn)將十分糟糕。使用Tkiner模塊為程序制作一個(gè)GUI界面是十分有必要的。Python擁有許多的GUI庫。為什么選擇Tkinter呢,首先它是最簡潔且
25、易上手的。第二個(gè)原因在于它是python的內(nèi)置庫,它不需要針對他去進(jìn)行下載和安裝,可以隨時(shí)使用。第三是從開發(fā)角度出發(fā)。Python是一種腳本語言。如果您想使用python來開發(fā)特別復(fù)雜龐大的桌面應(yīng)用,那么使用它并不容易。Python就像一種靈活的小配件,一般不用作主要的開發(fā)語言。在我們的工作中,如果我們需要制作一個(gè)小工具,我們肯定需要向這個(gè)工具添加一個(gè)GUI界面。一個(gè)好的GUI界面不僅能讓自己使用的更順手,還能分享給其他非專業(yè)人員使用,讓用戶與系統(tǒng)的交互變得更加的容易。Tkinter模塊就像是涂料。我們都看過美術(shù)系學(xué)生的素描場景。首先,畫畫的前期準(zhǔn)備工作需要先將一個(gè)畫架支起來,然后將畫板放于畫
26、架上,再將畫布放置再畫板上,構(gòu)思內(nèi)容,用鉛筆繪制草圖,使用調(diào)色板調(diào)色,最后使用畫筆進(jìn)行繪畫。總結(jié)以下在本系統(tǒng)中用到的Tkinter模塊里的參數(shù)1.Label:顯示文字或圖像。2.Button:按鈕,可以執(zhí)行我們?yōu)樗孪荣x予的操作3.Text:文本顯示,同時(shí)可插入圖像4.Frame:容器小部件。框架可以有邊框和背景。舉一個(gè)Tkinter模塊的簡單實(shí)例來介紹:# 1.導(dǎo)入Tkinterimport tkinter as tk # 2.建立一個(gè)新的窗口,實(shí)例化Tkinterobject = tk.Tk()# 3.設(shè)置一個(gè)標(biāo)題 object.title(My Window) # 4.手動設(shè)置窗口的長寬
27、object.geometry(500 x300) # 5.創(chuàng)建一個(gè)展示用的標(biāo)簽Root = tk.Label(window, text=Hello!Welcome to ZHBIT, bg=blue, font=(Arial, 20), width=15, height=18) # 6.使用標(biāo)簽Root.pack() # 7.令標(biāo)簽在界面上循環(huán)展示 14object.mainloop()在系統(tǒng)中具體實(shí)現(xiàn)代碼如下圖2-3:圖2-3tkinter模塊2.42.4 PyinstallerPyinstaller庫庫PyInstaller是python里一個(gè)非常好用的第三方庫,可以在Windows及其
28、他操作系統(tǒng)下,將Python源文件打包為可執(zhí)行文件。加入我們將Python源程序打包為可執(zhí)行文件,那么這個(gè)Python程序即使在未裝Python的環(huán)境中的電腦下也可正常運(yùn)行,同時(shí)也易于傳輸和管理。PyInstaller不是python內(nèi)置的模塊,它屬于第三方庫,因此我們需要手動來安裝它。安裝PyInstaller模塊也十分簡單,對于安裝PyInstaller模塊,通常有兩種安裝方法,一種是直接去官網(wǎng)下載對應(yīng)的庫,然后再手動安裝,另一種也是我更推薦的,我們可以直接通過pip進(jìn)行在線的安裝,只需要輸入簡單的指令,系統(tǒng)便會幫我們安裝完畢,省去一切麻煩。安裝指令如下:pip install pyins
29、taller -i http:/ -trusted-host 成功安裝后,可看到如圖2-4-1:15圖2-4-1 pyinstaller安裝pyinstaller模塊要如何使用呢,它的基本流程一般都是這樣的:1.在要打包的python文件的目錄中執(zhí)行以下命令:pyinstaller -F 你的python文件名.py2.其中res文件夾為項(xiàng)目的資源目錄,整個(gè)exe用到的圖片均放置在里面,其中若要為程序設(shè)置一個(gè)好看的圖標(biāo),只需要在命令中加入-i 圖標(biāo)名稱。同時(shí)圖標(biāo)也將保存至res目錄下。3.執(zhí)行打包好的可執(zhí)行文件,測試系統(tǒng)功能是否能正常運(yùn)行。Pyinstaller模塊常見的參數(shù)如下圖2-4-2:
30、16圖2-4-2 pyinstaller常見參數(shù)2.52.5 ADBADB 模塊模塊在測試時(shí),我們絕對需要檢查設(shè)備連接是否成功以及是否可以獲取設(shè)備信息。可以實(shí)現(xiàn)adb設(shè)備,直接在命令行控制臺中輸入“ adb設(shè)備”,可以看到下圖2-5-1: 圖2-5-1adb devices輸出在實(shí)際使用中,我們需要考慮多個(gè)設(shè)備的連接,因?yàn)樵O(shè)備的序列號是不同的,因此我們需要分別獲取它們的序列號并將其存儲在列表中,然后才能在后續(xù)的adb調(diào)試中使用。多個(gè)設(shè)備。我們通過調(diào)用subprocess模塊,可在Python中生成一個(gè)新進(jìn)程,連接到相應(yīng)的輸出管道。在對應(yīng)的輸出管道中,subprocess可以獲取相應(yīng)的返回值。s
31、ubprocess模塊中有一個(gè)重要且常用的類:popen,我們可以通過它來實(shí)現(xiàn)模塊與進(jìn)程之間的交互,舉個(gè)例子,我們通過stdin獲取標(biāo)準(zhǔn)輸入值。在操作過程中,根據(jù)返回值popen可以進(jìn)行判斷,若判斷返回的列表為空,則輸出提醒用戶連接未正確連接。如果返回值為1,則直接執(zhí)行下一步功能操作;如果列表中的數(shù)字大于1,則提示用戶輸入設(shè)備的序列號。需要進(jìn)行該操作的設(shè)備,確認(rèn)后進(jìn)行日志采集,同時(shí)連接時(shí)發(fā)生沖突或影響其他設(shè)備的正常運(yùn)行。具體代碼如下圖2-5-2:17圖2-5-2 系統(tǒng)代碼2.2.6 6 AndriodAndriod anranr模塊模塊ANR:即應(yīng)用程序沒響應(yīng)。在Android中,如果你的應(yīng)用
32、程序長時(shí)間無響應(yīng),系統(tǒng)會顯示一個(gè)對話框,用戶可以選擇,繼續(xù)等待或關(guān)閉,在一些卡頓的應(yīng)用程序中,用戶常常會遇到類似的情況,因此,程序響應(yīng)性能的設(shè)計(jì)非常重要,這樣系統(tǒng)就不會頻繁的出現(xiàn)該問題,在默認(rèn)情況下,一個(gè)進(jìn)程在Android中的最長執(zhí)行時(shí)間為4秒,而當(dāng)ANR發(fā)生時(shí),往往用戶需要等待超過8s,這是非常嚴(yán)重的問題。最后,讓我們看一下Google官方文檔中有關(guān)ANR的解釋,如圖2-6-1:18圖2-6-1 anr模塊解釋通常ANR問題的日志都存放在一個(gè)固定的目錄下,因此我們可以通過adb導(dǎo)出相關(guān)日志文件:adb pull /data/anr/traces.txt d:/此命令的目的是將anr目錄里的
33、跟蹤文件,發(fā)送到我們指定的目錄下,但有時(shí)會有錯(cuò)誤提示,無法找到相關(guān)的文件,具體原因我們可以使用以下命令來查看:adb shell ls /data/anr/ 通過該命令,可以查看手機(jī)內(nèi)anr目錄下的文件,經(jīng)過實(shí)際操作,可發(fā)現(xiàn)anr目錄下的trace文件并不只有一個(gè),所以無法指定的推出某一個(gè)trace文件,具體情況如下圖2-6-2:圖2-6-2 查看anr文件夾因此在導(dǎo)出文件時(shí),我選擇將anr目錄完整導(dǎo)出,導(dǎo)出及打開后效果如下圖2-6-3:19圖2-6-3 anr導(dǎo)出目錄2.2.7 7 subprocesssubprocess模塊模塊Python中的subprocess模塊是一個(gè)非常方便且實(shí)用的
34、模塊,在進(jìn)行有關(guān)進(jìn)程創(chuàng)建的項(xiàng)目時(shí),我們可以通過模塊內(nèi)的相應(yīng)函數(shù)連接至進(jìn)程的輸入和輸出管道,并獲得通道內(nèi)的字符。2-7-1 subprocess模塊常見函數(shù)20subprocess模塊中最常使用到的類也是本系統(tǒng)所使用到的類:Popen,使用subprocess模塊的popen類,我們可以輕松的完成進(jìn)程的管理亦或是新建一個(gè)進(jìn)程等類似操作,我們可以通過popen類所封裝的如表2-7-1內(nèi)的函數(shù),方便的實(shí)現(xiàn)一些常見的需求。想要了解更多有關(guān)popen類的用法,則還需要掌握它的部分常見參數(shù),如下表2-7-2表2-7-2 popen類的常見參數(shù)使用subprocess模塊的簡單實(shí)例:import subpr
35、ocess cmd = replaceconfig.exe -a merge -m -p game_config.format(data)res = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)res.stdout.read()在系統(tǒng)中具體實(shí)現(xiàn)代碼如下圖2-7:21圖2-7 subprocess模塊使用2.2.8 8 pathlibpathlib模塊模塊根據(jù)官方解釋,這個(gè)模塊可以適用于不同的操作系統(tǒng),它主要負(fù)責(zé)文件系統(tǒng)路徑。路徑類分為來自純路徑的特定路徑及計(jì)算操作的純路徑和,如果從未使用過此模塊,或者不確定項(xiàng)目中的哪個(gè)類是正
36、確的,則pathlib始終是您所需要的。它被用作運(yùn)行代碼的平臺上的特定路徑。Pathlib模塊包含6個(gè)類,具體如下圖2-8圖2-8 pathlib的6個(gè)類經(jīng)過系統(tǒng)的學(xué)習(xí),我總結(jié)了一些pathlib模塊的常見使用場景,下面我簡單舉例介紹此模塊的具體用法:#導(dǎo)入模塊22from pathlib import Path#1.獲取當(dāng)前文件路徑p1=Path(_file_) #2.獲取當(dāng)前文件的目錄p2 = Path.cwd() #3.獲取當(dāng)前文件目錄的父目錄p3=Path.cwd().parent #4.路徑拼接p=Path.cwd().joinpath(aa) #5.獲取當(dāng)前文件的信息st=Path
37、(_file_).stat() #6.獲取p1的父路徑p=p1.parent z=p1.parents #7.判斷pp是否為文件a=pp.is_file() #8.判斷pp是否目錄a=pp.is_dir() #9.判斷p2是否是絕對路徑a=p2.is_absolute() #10.判斷p2是否符合某一個(gè)模式a=p2.match(d:*) 在系統(tǒng)中部分代碼如下圖2-8:圖2-8 pathlib的使用232.2.9 9 syssys模塊模塊Sys模塊是Python中常用的模塊之一。它包含許多復(fù)雜的操作方法和變量,用于處理Python運(yùn)行時(shí)的配置和資源,因此它與系統(tǒng)環(huán)境的交互不同于當(dāng)前程序。sys其
38、實(shí)是系統(tǒng)的縮寫,它可以用于獲取操作系統(tǒng)的信息與系統(tǒng)的配置。例如,獲取系統(tǒng)版本、確定文件和文件夾是否存在,創(chuàng)建文件夾等等。sys模塊常用的參數(shù)如下表2-9:sys模塊的常見使用操作有以下幾種:1.獲得python版本的信息import syssys.version2.獲取當(dāng)前操作系統(tǒng)的信息import syssys.platform243.sys模塊的輸入、輸出import syssys.stdoutsys.stdinsys.stderr在系統(tǒng)中部分代碼如下圖2-9:圖2-9 sys模塊使用253 3 總體設(shè)計(jì)總體設(shè)計(jì)3.13.1 需求分析需求分析需求分析是指對用戶需求和業(yè)務(wù)流程的全面,準(zhǔn)確的分
39、析與調(diào)查。用戶需求被轉(zhuǎn)換為對系統(tǒng)功能的設(shè)計(jì),以實(shí)現(xiàn)系統(tǒng)必須達(dá)到的目標(biāo),可以實(shí)現(xiàn)的目標(biāo)以及過程的實(shí)現(xiàn)方式。需求分析的原則:(1)應(yīng)將需求分類歸納,逐一拆分,再尋找需求與需求之間的關(guān)系,構(gòu)建需求間的層次結(jié)構(gòu)。復(fù)雜的問題應(yīng)該基于性能、特定功能等,層層細(xì)化后進(jìn)行分解和個(gè)別分析。(2)確定分析模型,該模型包括代表研究對象特征的幾個(gè)重要表示。邏輯視圖可以顯示目標(biāo)函數(shù)與信息處理之間的關(guān)系,物理視圖由系統(tǒng)操作和處理環(huán)境決定,以確定數(shù)據(jù)結(jié)構(gòu)和功能。綜合以上原則,將分為兩個(gè)方面進(jìn)行需求分析1.功能性需求首先系統(tǒng)最重要的功能在于日志獲取至本地,日志保存目錄則默認(rèn)設(shè)為程序所在文件夾。其次作為測試常常會有需記錄手機(jī)當(dāng)前
40、狀態(tài)的需求,因此應(yīng)為用戶添加一鍵截圖并保存至本地的功能。最后系統(tǒng)應(yīng)有退出程序的選項(xiàng),保證系統(tǒng)的操作易上手。圖2-5 客戶用例圖2.非功能需求分析在分析系統(tǒng)需求時(shí),功能需求是非常重要的,它關(guān)系到用戶需求。但同時(shí)非功能需求也是需求分析重要的一部分,它直接關(guān)系到用戶在系統(tǒng)中的體驗(yàn),反映了系統(tǒng)的穩(wěn)定性。本系統(tǒng)主要從以下幾個(gè)方面進(jìn)行分析: 日志獲取截圖Monkey261.)系統(tǒng)的響應(yīng)時(shí)間:用戶使用功能,系統(tǒng)響應(yīng)、加載所需要的時(shí)間。 2.)可靠性需求:出現(xiàn)非常規(guī)操作是否會能正常運(yùn)行。 3.)易用性需求:易用性及系統(tǒng)用戶界面的美觀3.23.2 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)本系統(tǒng)的設(shè)計(jì)遵循以下原則:(1) 單一模塊原則:
41、每個(gè)類應(yīng)具有單一功能,并且這一功能由此類完全封裝。(2) 實(shí)用性原則:GUI界面應(yīng)簡潔實(shí)用,易于使用且便于使用。(3) 可靠性原則:系統(tǒng)應(yīng)是穩(wěn)定可靠的,完成后應(yīng)進(jìn)行相關(guān)測試,驗(yàn)證系統(tǒng)的穩(wěn)定性。3.3.3 3 系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì)系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì)為了系統(tǒng)的實(shí)用性,使用Tkinter模塊為系統(tǒng)設(shè)計(jì)了GUI界面,加強(qiáng)了用戶與系統(tǒng)的交互,讓系統(tǒng)變得更加的簡單與易上上手。同時(shí)將python的py文件使用pyinstaller打包為可執(zhí)行文件,增強(qiáng)了系統(tǒng)的泛用性,即使在沒有安裝python環(huán)境或者第三方庫的電腦環(huán)境下,也可正常的運(yùn)行該系統(tǒng)。當(dāng)使用者不是相關(guān)的技術(shù)人員,可執(zhí)行文件對于用戶來說,更加熟悉與親切。
42、3.43.4 WindowsWindows系統(tǒng)通過系統(tǒng)通過adbadb獲取獲取AndroidAndroid日志日志1.通過官網(wǎng)下載Andriod-sdk-windows,下載并解壓完成后,可得到如下圖2-7-1:圖2-7-1 adb目錄2.配置adb在“系統(tǒng)屬性”“高級系統(tǒng)設(shè)置”“環(huán)境變量”;如圖2-7-2:27圖2-7-2 系統(tǒng)屬性在系統(tǒng)變量里尋找Path,雙擊進(jìn)入后,在右側(cè)菜單選擇新建路徑,如圖2-7-3:圖2-7-3 配置環(huán)境變量在terminal窗口中輸入命令adb ,若打印如下圖2-7-4,則配置成功28圖2-7-4 配置成功通過數(shù)據(jù)線把手機(jī)連接至電腦,同時(shí)在terminal窗口中輸
43、入adb logcat,即可成功輸出當(dāng)前手機(jī)log信息,具體信息可見下圖2-7-5:圖2-7-5 獲取log信息以上是在Windows系統(tǒng)環(huán)境下安裝并使用adb獲取Android log的基本流程。3.53.5 MonkeyMonkey texttextMonkey是安卓的內(nèi)置模塊,Monkey測試的原理是套接字通信用于模擬按鍵輸入、觸摸屏輸入等操作,檢查設(shè)備在計(jì)劃時(shí)間內(nèi)是否因長時(shí)間的模擬操作而出現(xiàn)異常。Monkey一般的使用步驟:1. 確認(rèn)設(shè)備是否連接成功,通常使用adb devices即可2. 確認(rèn)待測應(yīng)用的包名,查看已安裝應(yīng)用的包名,命令為:adb shell pm list packa
44、ges -33. 執(zhí)行monkey測試的命令: adb shell monkey -p 所需要測試的應(yīng)用包名 -v 所需要測試的次數(shù) monkey29Monkey測試的優(yōu)缺點(diǎn)也很突出,個(gè)人總結(jié)下它的優(yōu)點(diǎn)在于:功能強(qiáng)大, 主要用于壓力和穩(wěn)定性測試。缺點(diǎn):本身不提供截屏功能,本身無法完成錄制、回放,無法幫助開發(fā)人員回溯現(xiàn)場,因此Monkey test與本文研究的日志系統(tǒng)正是相輔相成的,通過Monkey進(jìn)行長時(shí)間的穩(wěn)定性測試,發(fā)現(xiàn)應(yīng)用中的缺陷,再由日志系統(tǒng)去定位bug,可以很有效的提高測試的效率。圖3-5 Monkey執(zhí)行結(jié)果3.63.6 AndriodAndriod loglog類型類型了解And
45、riod log的分類,可以幫助我們根據(jù)日志的類型獲取所需的信息。Android日志類型可簡單分為兩種,用于打印的是所有應(yīng)用里面的信息的日志為logcat以及用于記錄內(nèi)核信息的kernel。其中l(wèi)ogcat再往下細(xì)分還包括如下表五種。表2-8 Anddriod log類型ID說明Main_logMainlog是最大的一個(gè)日志緩沖區(qū),用于記錄應(yīng)用程序及系統(tǒng)產(chǎn)生的打印日志,例如應(yīng)用的程序的運(yùn)行情況、信號信息等等。Events_logEventslog主要記錄事件操作日志,例如觸摸屏操作、按鍵操作等等信息。Radio_logRadio_log主要記錄來自RIL層的日志,這類型日志主要來源于通信等相關(guān)
46、模塊Crash_logCrach_log主要用來記錄崩潰日志,這類型日志大部分來自于手機(jī)應(yīng)用。System_logSystem_log主要用于記錄系統(tǒng)組件的日志,是緩沖區(qū)的主要部分。304 4 功能模塊設(shè)計(jì)功能模塊設(shè)計(jì)本系統(tǒng)按需求分析,劃分了兩個(gè)主要的功能模塊。接下來,我將具體的介紹這兩個(gè)相應(yīng)的功能模塊設(shè)計(jì)。4.14.1 日志獲取日志獲取功能模塊設(shè)計(jì)功能模塊設(shè)計(jì)用戶通過可執(zhí)行文件打開系統(tǒng)后,若是有多臺設(shè)備,將會提示用戶輸入相應(yīng)的產(chǎn)品設(shè)備號。若無設(shè)備連接,將提示用戶連接設(shè)備。之后會彈出一個(gè)簡單的GUI界面,在界面上,點(diǎn)擊日志獲取的按鈕,便可一鍵獲取已連接到電腦的設(shè)備日志。若僅有一臺設(shè)備連接至電腦
47、,將直接執(zhí)行日志獲取的功能。日志保存路徑將在該系統(tǒng)所在目錄下的log文件夾。日志獲取將按照實(shí)現(xiàn)所歸納的分類進(jìn)行保存,日志保存完成后,會有相應(yīng)的打印提示用戶日志獲取完畢。4.24.2 截圖模塊設(shè)計(jì)截圖模塊設(shè)計(jì)用戶通過可執(zhí)行文件打開系統(tǒng)后,若是有多臺設(shè)備,將會提示用戶輸入相應(yīng)的產(chǎn)品設(shè)備號。若無設(shè)備連接,將提示用戶連接設(shè)備。之后將彈出一個(gè)簡潔的GUI界面,在界面上,點(diǎn)擊截圖按鈕,便可一鍵獲取已連接到電腦的設(shè)備當(dāng)前屏幕截圖。4.4.3 3 MonkeyMonkey模塊設(shè)計(jì)模塊設(shè)計(jì)用戶通過可執(zhí)行文件打開系統(tǒng)后,若是有多臺設(shè)備,將會提示用戶輸入相應(yīng)的產(chǎn)品設(shè)備號。若無設(shè)備連接,將提示用戶連接設(shè)備。之后會彈出
48、一個(gè)簡潔的GUI界面,在界面上,點(diǎn)擊Monkey按鈕,會出現(xiàn)相應(yīng)提示,詢問用戶需要執(zhí)行測試的次數(shù),輸入相應(yīng)次數(shù)后,將開始進(jìn)行相應(yīng)次數(shù)的Monkey test。315 5 測試測試測試主要分為兩個(gè)部分:界面測試和功能測試。5.15.1 界面界面測試測試界面測試在測試過程中是不可缺失的一環(huán),測試時(shí)首先關(guān)注界面的一致性,是否出現(xiàn)個(gè)別頁面板塊脫離整體,顏色是否適當(dāng)、字體是否統(tǒng)一等。從細(xì)節(jié)來說,則是關(guān)注到具體每一個(gè)板塊是否有錯(cuò)別字、是否出現(xiàn)語病和歧義以及圖文不一致,不對齊等問題。在測試過程中從整體到個(gè)體,由框架流程到每一個(gè)板塊的每一個(gè)功能,都要細(xì)心檢查,記錄出現(xiàn)的問題,方便以后改善。測試結(jié)果如下:系統(tǒng)字
49、體統(tǒng)一,無錯(cuò)別字,功能模塊對齊,無歧義及語病,如圖5-1。圖5-1 界面測試5.25.2 功能功能測試測試功能測試是對針對產(chǎn)品功能方面進(jìn)行的測試,并根據(jù)測試方案與測試用例,逐一測試功能是否達(dá)到開發(fā)的預(yù)期,滿足用戶的需求。功能測試的原則:1)測試宜早不宜遲2)不要一味做窮盡測試,要抓住測試的重點(diǎn),提高測試的效率3)合格的測試用例一定包括兩個(gè)部分,測試場景與預(yù)期結(jié)果4)設(shè)計(jì)測試用例時(shí),應(yīng)多多考慮邊緣操作、非常規(guī)操作,把自己作為用戶,考慮到每一個(gè)細(xì)節(jié)。5)測試計(jì)劃與用例每一條都要嚴(yán)格的執(zhí)行,落實(shí)到位,保證測試的準(zhǔn)確性,嚴(yán)謹(jǐn)性以下是功能測試時(shí)的截圖:32圖5-2-1 截圖33圖5-2-2 日志保存圖5-2-3 輸入monkey執(zhí)行次數(shù)34圖5-2-4 monkey執(zhí)行完畢圖5-2-5 無設(shè)備連接355.35.3 測試用例及執(zhí)行結(jié)果測試用例及執(zhí)行結(jié)果表5-3-1 屏幕截圖用例用例 ID 00001 用例名稱 屏幕截圖用例描述 用戶在系統(tǒng)中使用截圖功能 用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保護(hù)鼻子健康教案反思
- 角形的邊說課稿
- 教師職業(yè)病健康知識講座
- 展覽合同終止合同協(xié)議范例
- 市政工程保溫板施工合同
- 消費(fèi)者權(quán)益爭議解決協(xié)議
- 房屋建筑施工合同審計(jì)
- 辦公樓廁所翻新合同樣本
- 家電企業(yè)會計(jì)人員聘用協(xié)議
- 酒店窗戶安裝施工協(xié)議
- 技術(shù)合作協(xié)議技術(shù)引進(jìn)
- 2024年抗菌藥物業(yè)務(wù)學(xué)習(xí)培訓(xùn)課件
- 2024年可行性研究報(bào)告投資估算及財(cái)務(wù)分析全套計(jì)算表格(含附表-帶只更改標(biāo)紅部分-操作簡單)
- 期中測試(試題)-2024-2025學(xué)年四年級上冊數(shù)學(xué)人教版
- 公共衛(wèi)生與預(yù)防醫(yī)學(xué)繼續(xù)教育平臺“大學(xué)習(xí)”活動線上培訓(xùn)欄目題及答案
- 2024年中級經(jīng)濟(jì)師考試題庫及參考答案(綜合題)
- 小學(xué)體育課學(xué)生學(xué)情分析報(bào)告
- 2024春期國開電大《應(yīng)用寫作(漢語)》形考任務(wù)1-6參考答案
- 超聲科質(zhì)量控制制度及超聲科圖像質(zhì)量評價(jià)細(xì)則
- 尋方問藥縱橫談智慧樹知到答案章節(jié)測試2023年浙江中醫(yī)藥大學(xué)
- JGJ_T231-2021建筑施工承插型盤扣式鋼管腳手架安全技術(shù)標(biāo)準(zhǔn)(高清-最新版)
評論
0/150
提交評論