>
學(xué)校機(jī)構(gòu) >
北京尚腦互聯(lián)軟件測試培訓(xùn)中心 >
學(xué)習(xí)資訊>
做手機(jī)應(yīng)用軟件測試的要點(diǎn)是什么?
做手機(jī)應(yīng)用軟件測試的要點(diǎn)是什么?
119 2017-05-23
一、對(duì)于產(chǎn)品的手機(jī)項(xiàng)目(應(yīng)用軟件),主要是進(jìn)行系統(tǒng)測試。而針對(duì)手機(jī)應(yīng)用軟件的系統(tǒng)測試,我們通常從如下幾個(gè)角度開展:功能模塊測試,交叉事件測試,壓力測試,容量測試,兼容性測試,易用性/用戶體驗(yàn)測試等。
1、功能模塊測試:首先應(yīng)分析功能模塊的功能項(xiàng),測試每個(gè)功能項(xiàng)是否能夠?qū)崿F(xiàn)對(duì)應(yīng)的功能。一般根據(jù)測試用例(TestCase)或軟件本身的流程就可以完成基本功能測試(相對(duì)簡單,故障也較容易發(fā)現(xiàn)、解決)。
2、交叉事件測試:又叫事件或沖突測試,是指一個(gè)功能正在執(zhí)行過程中,同時(shí)另外一個(gè)事件或操作對(duì)該過程進(jìn)行干擾的測試。例如通話過程中接收到短信或鬧鈴觸發(fā),應(yīng)用軟件運(yùn)行過程中插拔充電器等。執(zhí)行干擾的沖突事件不能導(dǎo)致應(yīng)用軟件異常、手機(jī)死機(jī)或花屏等嚴(yán)重問題。另外,還需要注意各交叉事件的優(yōu)先級(jí)別,檢驗(yàn)系統(tǒng)是否能依據(jù)各事件的優(yōu)先級(jí)別依次進(jìn)行處理。不能因執(zhí)行優(yōu)先級(jí)別高的事件而導(dǎo)致優(yōu)先級(jí)較低的事件吊死。
3、交叉事件測試非常重要,一般能發(fā)現(xiàn)應(yīng)用軟件中一些潛在的問題。另外有中英文模式切換的手機(jī)要注意中英文模式切換后的功能實(shí)現(xiàn)存在的問題(這個(gè)主要針對(duì)手機(jī)應(yīng)用軟件支持語言自適應(yīng)功能),這一點(diǎn)通常會(huì)被測試人員忽略。
4、壓力測試:又叫邊界值容錯(cuò)測試或極限負(fù)載測試。即測試過程中,已經(jīng)達(dá)到某一軟件功能的最大容量、邊界值或最大的承載極限,仍然對(duì)其進(jìn)行相關(guān)操作。例如連續(xù)進(jìn)行短信的接收和發(fā)送,超過收件箱和SIM卡所能存儲(chǔ)的最大條數(shù),仍然進(jìn)行短消息的接收或發(fā)送,以此來檢測軟件在超常態(tài)條件下的表現(xiàn),進(jìn)而評(píng)估用戶能否接受。
對(duì)手機(jī)可以施加的壓力測試類型主要有:
存儲(chǔ)壓力:由于手機(jī)采用的是棧式存儲(chǔ),所以當(dāng)一個(gè)存儲(chǔ)塊滿了之后,如果程序員不做相應(yīng)處理或者處理不好的話,很容易造成其他存儲(chǔ)區(qū)被擦除,從而在UI上出現(xiàn)問題(比如其他功能無法正常使用,出現(xiàn)異常)。
邊界壓力:邊界處理一直是程序員最容易忽略的地方。
響應(yīng)能力壓力:有時(shí)候某個(gè)操作可能處理的時(shí)間很長,在處理期間如果測試者再不斷地進(jìn)行其他操作的話,很容易出現(xiàn)問題。
網(wǎng)絡(luò)流量壓力:執(zhí)行較大數(shù)據(jù)流量的功能的同時(shí),再進(jìn)行其他功能操作,使得網(wǎng)絡(luò)流量始終處于很高的狀態(tài)(如視頻通話時(shí)再進(jìn)行短信等其他功能操作),驗(yàn)證各功能是否依然能正常工作,是否存在因網(wǎng)絡(luò)流量瓶頸而引起某功能異常。
壓力測試用手工測試可能很繁鎖,可以考慮自動(dòng)化測試。遺憾的是,目前還沒有較為大量使用的工具,一般都是由開發(fā)人員配合開發(fā)出的工具,或者高級(jí)的測試人員編寫出的腳本。
5、容量測試:即存儲(chǔ)空間已滿時(shí)的測試,包括手機(jī)用戶可用內(nèi)存和SIM卡的所有空間被完全使用的測試。此時(shí)再對(duì)可編輯的模塊進(jìn)行和存儲(chǔ)空間有關(guān)的任何操作測試,如果軟件在極限容量狀態(tài)下處理不好,有可能導(dǎo)致死機(jī)或嚴(yán)重的花屏等問題的出現(xiàn)。
6、兼容性測試:也就是不同品牌、款型的手機(jī)(針對(duì)目前我們產(chǎn)品來說,主要是針對(duì)不同品牌、款型的手機(jī)上的測試),不同網(wǎng)絡(luò),不同品牌和不同容量大小的SIM卡之間的互相兼容的測試。不同型號(hào)的手機(jī)支持的圖片格式、聲音格式、動(dòng)畫格式不一樣,需要選擇盡可能通用的格式,或者針對(duì)不同的型號(hào)進(jìn)行配置選擇。以短消息為例:中國電信的小靈通接收到從中國移動(dòng)或中國聯(lián)通GSM發(fā)來的短消息,需要驗(yàn)證顯示和回復(fù)功能是否正常等。再比如,應(yīng)用軟件分別在OPPOR7、OPPOA3手機(jī)上運(yùn)行,各功能是否均能正常使用,界面是否均顯示正常等。
7、易用性/用戶體驗(yàn)測試:易用性(Useability)/用戶體驗(yàn)是指在指定條件下使用時(shí),軟件產(chǎn)品被理解、學(xué)習(xí)、使用和吸引用戶的能力,是交互的適應(yīng)性、功能性和有效性的集中體現(xiàn)。手機(jī)操作主要依賴拇指,所以交互過程中不能設(shè)計(jì)的太復(fù)雜,交互步驟不能太多,應(yīng)該盡量設(shè)計(jì)多點(diǎn)快捷方式,易用是對(duì)終端軟件(推而廣之是交互類軟件)最基本、最重要的要求。不好用的軟件很難吸引用戶,更別提提升用戶對(duì)軟件的忠誠度了。易用性體現(xiàn)在:所見即所得、一用便知、一學(xué)就會(huì),方便快捷的完成預(yù)期功能。易用的軟件能讓一個(gè)新用戶快速學(xué)習(xí)、使用我們的軟件,并在使用軟件過程中體現(xiàn)我們的貼心服務(wù),超出用戶預(yù)期的體現(xiàn)是我們追求的目標(biāo)。
8、暴力測試:斷電,重啟,斷網(wǎng)等意外情況發(fā)生時(shí),處理是否正確
二、安全性測試
(1)安全性測試方法
有許多的測試手段可以進(jìn)行安全性測試,目前主要安全測試方法有:
①靜態(tài)的代碼安全測試:主要通過對(duì)源代碼進(jìn)行安全掃描,根據(jù)程序中數(shù)據(jù)流、控制流、語義等信息與其特有軟件安全規(guī)則庫進(jìn)行匹對(duì),從中找出代碼中潛在的安全漏洞。靜態(tài)的源代碼安全測試是非常有用的方法,它可以在編碼階段找出所有可能存在安全風(fēng)險(xiǎn)的代碼,這樣開發(fā)人員可以在早期解決潛在的安全問題。而正因?yàn)槿绱?,靜態(tài)代碼測試比較適用于早期的代碼開發(fā)階段,而不是測試階段。
②動(dòng)態(tài)的滲透測試:滲透測試也是常用的安全測試方法。是使用自動(dòng)化工具或者人工的方法模擬黑客的輸入,對(duì)應(yīng)用系統(tǒng)進(jìn)行攻擊性測試,從中找出運(yùn)行時(shí)刻所存在的安全漏洞。這種測試的特點(diǎn)就是真實(shí)有效,一般找出來的問題都是正確的,也是較為嚴(yán)重的。但滲透測試一個(gè)致命的缺點(diǎn)是模擬的測試數(shù)據(jù)只能到達(dá)有限的測試點(diǎn),覆蓋率很低。
③程序數(shù)據(jù)掃描。一個(gè)有高安全性需求的軟件,在運(yùn)行過程中數(shù)據(jù)是不能遭到破壞的,否則就會(huì)導(dǎo)致緩沖區(qū)溢出類型的攻擊。數(shù)據(jù)掃描的手段通常是進(jìn)行內(nèi)存測試,內(nèi)存測試可以發(fā)現(xiàn)許多諸如緩沖區(qū)溢出之類的漏洞,而這類漏洞使用除此之外的測試手段都難以發(fā)現(xiàn)。例如,對(duì)軟件運(yùn)行時(shí)的內(nèi)存信息進(jìn)行掃描,看是否存在一些導(dǎo)致隱患的信息,當(dāng)然這需要專門的工具來進(jìn)行驗(yàn)證,手工做是比較困難的。
(2)反向安全性測試過程
大部分軟件的安全測試都是依據(jù)缺陷空間反向設(shè)計(jì)原則來進(jìn)行的,即事先檢查哪些地方可能存在安全隱患,然后針對(duì)這些可能的隱患進(jìn)行測試。因此,反向測試過程是從缺陷空間出發(fā),建立缺陷威脅模型,通過威脅模型來尋找入侵點(diǎn),對(duì)入侵點(diǎn)進(jìn)行已知漏洞的掃描測試。好處是可以對(duì)已知的缺陷進(jìn)行分析,避免軟件里存在已知類型的缺陷,但是對(duì)未知的攻擊手段和方法通常會(huì)無能為力。
①建立缺陷威脅模型。建立缺陷威脅模型主要是從已知的安全漏洞入手,檢查軟件中是否存在已知的漏洞。建立威脅模型時(shí),需要先確定軟件牽涉到哪些專業(yè)領(lǐng)域,再根據(jù)各個(gè)專業(yè)領(lǐng)域所遇到的攻擊手段來進(jìn)行建模。
②尋找和掃描入侵點(diǎn)。檢查威脅模型里的哪些缺陷可能在本軟件中發(fā)生,再將可能發(fā)生的威脅納入入侵點(diǎn)矩陣進(jìn)行管理。如果有成熟的漏洞掃描工具,那么直接使用漏洞掃描工具進(jìn)行掃描,然后將發(fā)現(xiàn)的可疑問題納入入侵點(diǎn)矩陣進(jìn)行管理。
③入侵矩陣的驗(yàn)證測試。創(chuàng)建好入侵矩陣后,就可以針對(duì)入侵矩陣的具體條目設(shè)計(jì)對(duì)應(yīng)的測試用例,然后進(jìn)行測試驗(yàn)證。
(3)正向安全性測試過程
為了規(guī)避反向設(shè)計(jì)原則所帶來的測試不完備性,需要一種正向的測試方法來對(duì)軟件進(jìn)行比較完備的測試,使測試過的軟件能夠預(yù)防未知的攻擊手段和方法。
①先標(biāo)識(shí)測試空間。對(duì)測試空間的所有的可變數(shù)據(jù)進(jìn)行標(biāo)識(shí),由于進(jìn)行安全性測試的代價(jià)高昂,其中要重點(diǎn)對(duì)外部輸入層進(jìn)行標(biāo)識(shí)。例如,需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼這幾個(gè)階段都要對(duì)測試空間進(jìn)行標(biāo)識(shí),并建立測試空間跟蹤矩陣。
②精確定義設(shè)計(jì)空間。重點(diǎn)審查需求中對(duì)設(shè)計(jì)空間是否有明確定義,和需求牽涉到的數(shù)據(jù)是否都標(biāo)識(shí)出了它的合法取值范圍。在這個(gè)步驟中,最需要注意的是精確二字,要嚴(yán)格按照安全性原則來對(duì)設(shè)計(jì)空間做精確的定義。
③標(biāo)識(shí)安全隱患。根據(jù)找出的測試空間和設(shè)計(jì)空間以及它們之間的轉(zhuǎn)換規(guī)則,標(biāo)識(shí)出哪些測試空間和哪些轉(zhuǎn)換規(guī)則可能存在安全隱患。例如,測試空間愈復(fù)雜,即測試空間劃分越復(fù)雜或可變數(shù)據(jù)組合關(guān)系越多也越不安全。還有轉(zhuǎn)換規(guī)則愈復(fù)雜,則出問題的可能性也愈大,這些都屬于安全隱患。
④建立和驗(yàn)證入侵矩陣。安全隱患標(biāo)識(shí)完成后,就可以根據(jù)標(biāo)識(shí)出來的安全隱患建立入侵矩陣。列出潛在安全隱患,標(biāo)識(shí)出存在潛在安全隱患的可變數(shù)據(jù),和標(biāo)識(shí)出安全隱患的等級(jí)。其中對(duì)于那些安全隱患等級(jí)高的可變數(shù)據(jù),必須進(jìn)行詳盡的測試用例設(shè)計(jì)。
(4)正向和反向測試的區(qū)別
正向測試過程是以測試空間為依據(jù)尋找缺陷和漏洞,反向測試過程則是以已知的缺陷空間為依據(jù)去尋找軟件中是否會(huì)發(fā)生同樣的缺陷和漏洞,兩者各有其優(yōu)缺點(diǎn)。反向測試過程主要的一個(gè)優(yōu)點(diǎn)是成本較低,只要驗(yàn)證已知的可能發(fā)生的缺陷即可,但缺點(diǎn)是測試不完善,無法將測試空間覆蓋完整,無法發(fā)現(xiàn)未知的攻擊手段。正向測試過程的優(yōu)點(diǎn)是測試比較充分,但工作量相對(duì)來說較大。因此,對(duì)安全性要求較低的軟件,一般按反向測試過程來測試即可,對(duì)于安全性要求較高的軟件,應(yīng)以正向測試過程為主,反向測試過程為輔。
三、常見的軟件安全性缺陷和漏洞
軟件的安全有很多方面的內(nèi)容,主要的安全問題是由軟件本身的漏洞造成的,下面介紹常見的軟件安全性缺陷和漏洞。
(1)緩沖區(qū)溢出
緩沖區(qū)溢出已成為軟件安全的頭號(hào)公敵,許多實(shí)際中的安全問題都與它有關(guān)。造成緩沖區(qū)溢出問題通常有以下兩種原因。①設(shè)計(jì)空間的轉(zhuǎn)換規(guī)則的校驗(yàn)問題。即缺乏對(duì)可測數(shù)據(jù)的校驗(yàn),導(dǎo)致非法數(shù)據(jù)沒有在外部輸入層被檢查出來并丟棄。非法數(shù)據(jù)進(jìn)入接口層和實(shí)現(xiàn)層后,由于它超出了接口層和實(shí)現(xiàn)層的對(duì)應(yīng)測試空間或設(shè)計(jì)空間的范圍,從而引起溢出。②局部測試空間和設(shè)計(jì)空間不足。當(dāng)合法數(shù)據(jù)進(jìn)入后,由于程序?qū)崿F(xiàn)層內(nèi)對(duì)應(yīng)的測試空間或設(shè)計(jì)空間不足,導(dǎo)致程序處理時(shí)出現(xiàn)溢出。
(2)加密弱點(diǎn)
這幾種加密弱點(diǎn)是不安全的:①使用不安全的加密算法。加密算法強(qiáng)度不夠,一些加密算法甚至可以用窮舉法盜齲②加密數(shù)據(jù)時(shí)密碼是由偽隨機(jī)算法產(chǎn)生的,而產(chǎn)生偽隨機(jī)數(shù)的方法存在缺陷,使密碼很容易被盜齲③身份驗(yàn)證算法存在缺陷。④客戶機(jī)和服務(wù)器時(shí)鐘未同步,給攻擊者足夠的時(shí)間來盜取密碼或修改數(shù)據(jù)。⑤未對(duì)加密數(shù)據(jù)進(jìn)行簽名,導(dǎo)致攻擊者可以篡改數(shù)據(jù)。所以,對(duì)于加密進(jìn)行測試時(shí),必須針對(duì)這些可能存在的加密弱點(diǎn)進(jìn)行測試。
(3)錯(cuò)誤處理
一般情況下,錯(cuò)誤處理都會(huì)返回一些信息給用戶,返回的出錯(cuò)信息可能會(huì)被惡意用戶利用來進(jìn)行攻擊,惡意用戶能夠通過分析返回的錯(cuò)誤信息知道下一步要如何做才能使攻擊成功。如果錯(cuò)誤處理時(shí)調(diào)用了一些不該有的功能,那么錯(cuò)誤處理的過程將被利用。錯(cuò)誤處理屬于異??臻g內(nèi)的處理問題,異??臻g內(nèi)的處理要盡量簡單,使用這條原則來設(shè)計(jì)可以避免這個(gè)問題。但錯(cuò)誤處理往往牽涉到易用性方面的問題,如果錯(cuò)誤處理的提示信息過于簡單,用戶可能會(huì)一頭霧水,不知道下一步該怎么操作。所以,在考慮錯(cuò)誤處理的安全性的同時(shí),需要和易用性一起進(jìn)行權(quán)衡。
(4)權(quán)限過大
如果賦予過大的權(quán)限,就可能導(dǎo)致只有普通用戶權(quán)限的惡意用戶利用過大的權(quán)限做出危害安全的操作。例如沒有對(duì)能操作的內(nèi)容做出限制,就可能導(dǎo)致用戶可以訪問超出規(guī)定范圍的其他資源。進(jìn)行安全性測試時(shí)必須測試應(yīng)用程序是否使用了過大的權(quán)限,重點(diǎn)要分析在各種情況下應(yīng)該有的權(quán)限,然后檢查實(shí)際中是否超出了給定的權(quán)限。權(quán)限過大問題本質(zhì)上屬于設(shè)計(jì)空間過大問題,所以在設(shè)計(jì)時(shí)要控制好設(shè)計(jì)空間,避免設(shè)計(jì)空間過大造成權(quán)限過大的問題。
四、做好安全性測試的建議
許多軟件安全測試經(jīng)驗(yàn)告訴我們,做好軟件安全性測試的必要條件是:一是充分了解軟件安全漏洞,二是評(píng)估安全風(fēng)險(xiǎn),三是擁有高效的軟件安全測試技術(shù)和工具。
(1)充分了解軟件安全漏洞
評(píng)估一個(gè)軟件系統(tǒng)的安全程度,需要從設(shè)計(jì)、實(shí)現(xiàn)和部署三個(gè)環(huán)節(jié)同時(shí)著手。我們先看一下CommonCriteria是如何評(píng)估軟件系統(tǒng)安全的。首先要確定軟件產(chǎn)品對(duì)應(yīng)的ProtectionProfile(PP)。一個(gè)PP定義了一類軟件產(chǎn)品的安全特性模板。例如數(shù)據(jù)庫的PP、防火墻的PP等。然后,根據(jù)PP再提出具體的安全功能需求,如用戶的身份認(rèn)證實(shí)現(xiàn)。最后,確定安全對(duì)象以及是如何滿足對(duì)應(yīng)的安全功能需求的。因此,一個(gè)安全軟件的三個(gè)環(huán)節(jié),哪個(gè)出問題都不行。
(2)安全性測試的評(píng)估
當(dāng)做完安全性測試后,軟件是否能夠達(dá)到預(yù)期的安全程度呢?這是安全性測試人員最關(guān)心的問題,因此需要建立對(duì)測試后的安全性評(píng)估機(jī)制。一般從以下兩個(gè)方面進(jìn)行評(píng)估。①安全性缺陷數(shù)據(jù)評(píng)估。
如果發(fā)現(xiàn)軟件的安全性缺陷和漏洞越多,可能遺留的缺陷也越多。進(jìn)行這類評(píng)估時(shí),必須建立基線數(shù)據(jù)作為參照,否則評(píng)估起來沒有依據(jù)就無法得到正確的結(jié)論。②采用漏洞植入法來進(jìn)行評(píng)估。漏洞植入法和可靠性測試?yán)锏墓收喜迦霚y試是同一道理,只不過這里是在軟件里插入一些有安全隱患的問題。采用漏洞植入法時(shí),先讓不參加安全測試的特定人員在軟件中預(yù)先植入一定數(shù)量的漏洞,最后測試完后看有多少植入的漏洞被發(fā)現(xiàn),以此來評(píng)估軟件的安全性測試做得是否充分。
(3)采用安全測試技術(shù)和工具
可使用專業(yè)的具有特定功能的安全掃描軟件來尋找潛在的漏洞,將已經(jīng)發(fā)生的缺陷納入缺陷庫,然后通過自動(dòng)化測試方法來使用自動(dòng)化缺陷庫進(jìn)行轟炸測試。例如,使用一些能夠模擬各種攻擊的軟件來進(jìn)行測試。
安全測試是用來驗(yàn)證集成在軟件內(nèi)的保護(hù)機(jī)制是否能夠在實(shí)際中保護(hù)系統(tǒng)免受非法的侵入。一句通俗的話說:軟件系統(tǒng)的安全當(dāng)然必須能夠經(jīng)受住正面的攻擊——但是它也必須能夠經(jīng)受住側(cè)面的和背后的攻擊。
請(qǐng)聯(lián)系網(wǎng)站客服,了解詳細(xì)的優(yōu)惠課程信息~
優(yōu)質(zhì)、權(quán)威、便捷、省心
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)