我們將從檢查功能測試開始,關(guān)注安全性银舱,互操作性瘪匿,兼容性,準(zhǔn)確性和適用性。我們將討論用于創(chuàng)建功能性移動測試的各種傳統(tǒng)和非傳統(tǒng)技術(shù)驱闷。接下來帚豪,我們繼續(xù)討論非功能性測試,特別是性能顽染,可用性漾岳,可靠性和可移植性。
簡介
讓我們首先澄清功能測試和非功能測試家乘』妊颍考慮一下ATM。 ATM可以讓您做什么仁锯?它可以讓您提取現(xiàn)金耀找,存款,查詢余額和轉(zhuǎn)賬业崖。在語法上野芒,這些都是動詞短語,即動詞和名詞双炕。
ATM需要很快狞悲、可靠的處理。這些是副詞妇斤。系統(tǒng)能做什么一般是功能摇锋。而如何做到的副詞和形容詞就是非功能性的。
沒有適用于所有應(yīng)用程序的質(zhì)量特性術(shù)列表站超,或者對所有應(yīng)用程序同等重要荸恕。正如我前面提到的,對于銀行應(yīng)用而言死相,安全性是大問題融求,而對單機(jī)紙牌游戲,則遠(yuǎn)沒有那么重要算撮。
參考資料
- 全文 http://www.reibang.com/p/b0eb98724f98
- [書籍:ASTQB-BCS移動測試基礎(chǔ)指南 Mobile Testing An ASTQB-BCS Foundation Guide - 2018.pdf](http://www.reibang.com/p/a252732f8f1c
- 本文涉及的python測試開發(fā)庫 謝謝點(diǎn)贊生宛!
- 本文相關(guān)海量書籍下載
- 2018最佳人工智能機(jī)器學(xué)習(xí)工具書及下載(持續(xù)更新)
功能測試
功能測試是關(guān)于應(yīng)用程序的功能。它主要關(guān)注四個主要特征:
- 準(zhǔn)確性;
- 適用性;
- 安全;
- 互操作性肮柜。
準(zhǔn)確性測試檢查應(yīng)用程序是否真正為您提供了正確的答案陷舅。例如,對電子商務(wù)應(yīng)用程序進(jìn)行的一項(xiàng)精度測試將檢查運(yùn)費(fèi)的錯誤計(jì)算素挽。
適用性測試檢??查應(yīng)用程序是否提供了它應(yīng)該提供的功能蔑赘。應(yīng)用程序可以準(zhǔn)確地工作但不適合,因?yàn)樗鼪]有執(zhí)行您需要執(zhí)行的操作的功能。例如缩赛,航空公司應(yīng)用程序的一項(xiàng)適用性測試會檢查它是否不僅可以搜索航班耙箍,還可以在您找到航班后完成預(yù)訂。
安全測試檢查應(yīng)用程序是否可以拒絕未經(jīng)授權(quán)訪問數(shù)據(jù)和功能酥馍,同時允許授權(quán)訪問數(shù)據(jù)和功能辩昆。例如,藥房應(yīng)用程序的一項(xiàng)安全測試將確保每個客戶都可以訪問他們自己的處方數(shù)據(jù)旨袒,但不能訪問任何其他客戶的處方數(shù)據(jù)汁针。
互操作性測試檢查應(yīng)用程序是否與其使用或使用它的其他應(yīng)用程序正常工作。例如砚尽,餐館定位應(yīng)用程序的一個互操作性測試施无,確保您可以點(diǎn)擊餐館的電話號碼,這個動作將正確地導(dǎo)致電話應(yīng)用程序撥打該餐廳的電話號碼必孤。
大多數(shù)測試人員在考慮進(jìn)行功能測試時會想到準(zhǔn)確性和適用性的測試猾骡。
安全漏洞往往是被動的而不是主動的。我所說的安全漏洞是被動的敷搪,是指某人 - 無論是黑客兴想,犯罪分子,心懷不滿的工作人員還是安全測試人員 - 都必須嘗試?yán)寐┒磥碜尠踩收习l(fā)生赡勘。對比一個簡單的準(zhǔn)確性錯誤嫂便,它會給任何人錯誤的答案,無論是否有意導(dǎo)致失敗闸与。因此毙替,重要的是要考慮安全風(fēng)險可能存在的方式,以便您可以測試它們践樱。讓我們來看看其中的一些風(fēng)險蔚龙。
首先,移動應(yīng)用通常是通過網(wǎng)絡(luò)訪問信息映胁,這可能涉及通過公共Wi-Fi網(wǎng)絡(luò)發(fā)送和接收信息。這樣的公共網(wǎng)絡(luò)具有內(nèi)在的風(fēng)險甲雅,因?yàn)榉缸锓肿雍苋菀妆O(jiān)控它們的流量解孙。因此,發(fā)送到應(yīng)用程序或從應(yīng)用程序發(fā)送的任何敏感數(shù)據(jù)都需要加密抛人。
移動設(shè)備本身受到攻擊弛姜,因?yàn)槿藗儠螺d并安裝應(yīng)用程序而不會提出明顯的問題:“誰創(chuàng)建了這個應(yīng)用程序?”現(xiàn)在妖枚,大多數(shù)人廷臼,在使用他們的PC時,要知道他們不應(yīng)該打開他們不認(rèn)識的人發(fā)送的附件,但同樣的人會下載并安裝由他們不認(rèn)識的人創(chuàng)建的應(yīng)用程序荠商。任何這樣的應(yīng)用程序都可以想象成為特洛伊木馬寂恬。
此外,人們并不總是在他們的移動設(shè)備或其PC上建立良好的安全性莱没。移動設(shè)備更容易丟失初肉。
當(dāng)人們用手機(jī)換另一部手機(jī)時,他們可能會對新手機(jī)過于興奮而不記得擦拭舊手機(jī)饰躲,因此可能會留下私人和機(jī)密信息牙咏。即使它被擦除,你也要問嘹裂,“擦除的安全級別是多少妄壶?”只是刪除一些內(nèi)容是不夠的,只是覆蓋一次內(nèi)存位置通常不足清理數(shù)據(jù)寄狼。
移動應(yīng)用程序也帶來了特殊挑戰(zhàn)丁寄,因?yàn)樗鼈冇袝r會使用許多不同的通信渠道。其中一些本質(zhì)上是不安全的例嘱,或者以不安全的方式易于使用狡逢。對于大多數(shù)PC和筆記本電腦而言,唯一固有的不安全通道是Wi-Fi拼卵。
但是奢浑,移動應(yīng)用程序除了可能不安全的Wi-Fi之外還使用其他渠道。例如腋腮,假設(shè)您通過短信與某人發(fā)短信雀彼。這是不安全的,因?yàn)槟木W(wǎng)絡(luò)運(yùn)營商可以訪問這些消息〖垂眩現(xiàn)在徊哑,一個有安全意識的人會說,“不聪富,我從來沒有這樣做過莺丑。我使用Telegram應(yīng)用程序《章“好的梢莽,但你正確使用它嗎?默認(rèn)情況下奸披,如果您與Telegram中的某人開始聊天昏名,則表示不安全。您必須啟動加密聊天阵面,并且當(dāng)您開始聊天時轻局,告訴應(yīng)用程序在您結(jié)束聊天時讓線程自毀洪鸭,以使消息真正安全。特別指出仑扑,微信的功能過多览爵,已經(jīng)爆出多起詐騙與安全事件。
所以夫壁,僅僅因?yàn)槟橙耸褂镁哂邪踩缘能浖⒉灰馕吨麄円砸环N安全的方式使用它拾枣。例如,很多人使用的密碼非常簡短或明顯梅肤。幾乎所有應(yīng)用程序的用戶都不會擁有相同的安全思維姨蝴。不僅僅是用戶可能不安全同木。開發(fā)人員有時也這樣秕硝。因此,在測試應(yīng)用時,請查看敏感信息存儲在設(shè)備上或存儲在應(yīng)用中的情況棺滞。
最后,您可能想要考慮一下您的應(yīng)用程序在越獄后的iPhone行為刽严,或root后的Android手機(jī)管削,或等效修改后的其他型號的手機(jī)。這可能會改變您應(yīng)用的安全行為。現(xiàn)在,你的經(jīng)理們可能會說,“嘿,人們不應(yīng)該這樣做袋坑,設(shè)備供應(yīng)商也不支持咒精,所以我們?yōu)槭裁匆獡?dān)心會發(fā)生什么歇拆?”我想這個問題的答案取決于風(fēng)險與您的應(yīng)用有關(guān)的安全漏洞渠啊。
讓我們看一下安全測試的開源思想庫:OWASP贯溅。
OWASP是開放式Web應(yīng)用程序安全項(xiàng)目,他們的網(wǎng)站是安全意識的寶庫, OWASP專注于創(chuàng)建與安全相關(guān)的資源,而不是工具,而是信息盟劫。 在OWASP網(wǎng)站上急迂,可用的資源是主要移動應(yīng)用程序安全風(fēng)險列表猴娩。比如:
弱服務(wù)器端控制:當(dāng)服務(wù)器端通過本機(jī)應(yīng)用程序或混合應(yīng)用程序信任身份驗(yàn)證時蟆豫,就會出現(xiàn)這種情況愤估。例如,如果本機(jī)應(yīng)用程序與服務(wù)器建立連接闹炉,則服務(wù)器端軟件可能會認(rèn)為該用戶是應(yīng)用程序聲稱的用戶。這可以很容易地在設(shè)備端被擊敗,或者通過直接與服務(wù)器呈現(xiàn)給更多接口交互來繞過。
設(shè)備或服務(wù)器端的不安全數(shù)據(jù)存儲:這是另一個主要風(fēng)險嚣伐。比如設(shè)備丟失了基茵,服務(wù)器被黑了。
不安全的數(shù)據(jù)傳輸:此處的問題示例包括私有識別信息的不正確或弱加密箱吕,或者在您應(yīng)該或以弱的方式使用這些渠道時不使用HTTPS或FTPS等安全協(xié)議怎栽。
意外數(shù)據(jù)泄漏:例如,必須解密加密數(shù)據(jù)才能使用它 - 假設(shè)我們在設(shè)備上存儲有關(guān)用戶病歷的私人信息行您,我們允許用戶添加捌斧,修改和刪除信息舆吮。必須解密該信息以便向用戶顯示。如果該信息存儲在臨時位置与学,并且可以訪問臨時位置,則可能再次在服務(wù)器端或客戶端導(dǎo)致數(shù)據(jù)泄漏嘉抓。
弱的身份驗(yàn)證和授權(quán):身份驗(yàn)證問題可能導(dǎo)致使用移動應(yīng)用程序的人不是我們認(rèn)為正在使用移動應(yīng)用程序的人索守。事實(shí)上,其他一些人設(shè)法掌握了這個人的證書抑片。授權(quán)問題可能導(dǎo)致某人能夠訪問他們實(shí)際上無法訪問的功能和數(shù)據(jù)卵佛,或者在訪問被撤銷或過期后保留訪問權(quán)限。
加密失敗:這里的一個示例問題是截汪,使用較弱的加密算法(可能出于向后兼容性或速度的目的)會使應(yīng)用程序容易受到攻擊疾牲。即使是強(qiáng)大的算法也可能因使用不良密碼而變?nèi)酢?/p>
客戶端注入:這是攻擊者強(qiáng)制或欺騙應(yīng)用程序使用專門用于劫持應(yīng)用程序本身的數(shù)據(jù)。這可以用于例如將個人識別信息從設(shè)備上載到因特網(wǎng)上的某個目標(biāo)數(shù)據(jù)存儲庫衙解,使用該應(yīng)用程序作為不知情的利用工具阳柔。
通過不受信任的輸入做出無效的安全決策:當(dāng)您的應(yīng)用具有其他應(yīng)用可訪問的界面時,可能會出現(xiàn)這些問題蚓峦。如果攻擊者可以弄清楚如何利用這些界面盔沫,他們可以強(qiáng)制您的應(yīng)用程序執(zhí)行操作或泄露敏感信息,而無需用戶知道這種情況枫匾。例如,使用特洛伊木馬類型下載的應(yīng)用程序可能會發(fā)生此類攻擊拟淮。
不正確的會話處理:大部分互聯(lián)網(wǎng)都運(yùn)行在所謂的無狀態(tài)協(xié)議(如SOAP和HTTP)上干茉。然而,人們通過認(rèn)證和接受授權(quán)的過程來執(zhí)行敏感活動很泊,這需要一個狀態(tài)的概念角虫。例如,可以通過cookie或其他令牌處理狀態(tài)信息委造,但是如果不能安全處理戳鹅,這些cookie和其他令牌可以泄露給攻擊者,從而允許攻擊者像執(zhí)行身份驗(yàn)證一樣執(zhí)行操作昏兆。
缺乏二進(jìn)制保護(hù):當(dāng)有人獲得您的應(yīng)用程序的二進(jìn)制文件并設(shè)法對其進(jìn)行反向工程時枫虏,可能會發(fā)生這種情況。這可能是為了竊取算法爬虱,產(chǎn)生應(yīng)用程序的淘汰隶债,或者弄清楚如何訪問應(yīng)用程序使用的敏感信息。
首先跑筝,在對應(yīng)用程序進(jìn)行安全性測試時死讹,請確保合適的人員和正確的應(yīng)用程序可以訪問他們有權(quán)訪問的功能和數(shù)據(jù)。
相反曲梗,請確保不應(yīng)訪問某些功能和數(shù)據(jù)的人員和應(yīng)用程序不能這樣做赞警。這是聲明的后半部分,它更加復(fù)雜虏两,需要更多的思考和更多的工作愧旦。通過對基于角色的安全性的分析,可以列出對于正確的人和正確的應(yīng)用程序來說碘举,它們對他們應(yīng)該訪問的內(nèi)容的訪問權(quán)限忘瓦,并且該列表可以用作一組測試條件。但是,要識別與檢查錯誤的人或應(yīng)用程序相關(guān)的所有有趣的測試條件耕皮,以及訪問他們不應(yīng)該訪問的內(nèi)容要困難得多境蜕。
在存儲數(shù)據(jù)時,至少應(yīng)對敏感數(shù)據(jù)進(jìn)行加密凌停,并以強(qiáng)大粱年,安全的方式加密。當(dāng)數(shù)據(jù)在傳輸過程中時罚拟,無論再次使用哪種協(xié)議台诗,至少應(yīng)該對敏感數(shù)據(jù)進(jìn)行安全加密。雖然這里顯而易見的是蜂窩網(wǎng)絡(luò)或Wi-Fi網(wǎng)絡(luò)赐俗,但不要忘記移動設(shè)備和連接到它的設(shè)備之間的數(shù)據(jù)流動拉队,比如藍(lán)牙鍵盤。在任何情況下阻逮,您的應(yīng)用都不應(yīng)以明文形式發(fā)送敏感數(shù)據(jù)粱快,即未加密的數(shù)據(jù)。
最后叔扼,如果您參與測試內(nèi)部應(yīng)用程序事哭,請確保測試所有移動設(shè)備是否正確遵循安全策略,包括人們自己的設(shè)備(如果他們帶來工作)瓜富。有很多公司的恐怖故事都是從人們丟失設(shè)備沒有得到妥善保護(hù)并獲得公司信息開始的鳍咱。
現(xiàn)在,您使用此安全測試的程度取決于安全性對您的應(yīng)用程序的重要程度与柑。如果你正在進(jìn)行紙牌游戲谤辜,那里沒有太多的安全風(fēng)險。如果你正在編寫一個訪問銀行賬戶的應(yīng)用程序仅胞,那就完全不同了每辟。
互操作性在移動設(shè)備上是一個大問題,因?yàn)樵S多應(yīng)用程序使用其他應(yīng)用程序來執(zhí)行某些操作干旧,因此無需在應(yīng)用程序本身中構(gòu)建該功能渠欺。比如分享微博。還有與服務(wù)器組件的互操作性椎眯,當(dāng)移動應(yīng)用程序通過網(wǎng)絡(luò)與服務(wù)器端的接口進(jìn)行通信時挠将,就會發(fā)生這種情況。本地和遠(yuǎn)程互操作性也可能發(fā)生编整。假設(shè)我使用Yelp找到餐館舔稀,然后點(diǎn)擊餐館的地址。 Yelp調(diào)用設(shè)備上的地圖應(yīng)用程序掌测,并將地址傳遞給該應(yīng)用程序内贮。除非已經(jīng)下載了當(dāng)前位置的地圖,否則地圖應(yīng)用程序可以使用該網(wǎng)絡(luò)來聯(lián)系其指定的在線地圖庫。從測試的角度來看夜郁,請注意這是用戶的單個用例什燕,但是在此過程中的任何一點(diǎn)都可能發(fā)生故障。
如果您的控件之外的應(yīng)用程序是新的或更改的竞端,那么這也會帶來一些測試挑戰(zhàn)屎即。例如,如果Google更改了手機(jī)上的默認(rèn)Android相機(jī)應(yīng)用事富,則此類更改可能會破壞Facebook功能技俐,允許我將圖片直接插入到帖子中。
這些東西在更新期間確實(shí)會被破壞统台。我的Android手機(jī)一度自動更新了它的操作系統(tǒng)雕擂,盡管事實(shí)上我曾兩次要求它不這樣做。無論如何贱勃,它繼續(xù)并更新了手機(jī)捂刺。這導(dǎo)致了大量的東西無法運(yùn)作。例如募寨,首次更新手機(jī)時,大部分聯(lián)系信息都丟失了森缠。然而 - 這真的很奇怪 - 第二天神奇地回來了聯(lián)系信息拔鹰。它去了哪里?為什么會回來贵涵?我不知道列肢。然而,大多數(shù)無法操作的東西宾茂,如Facebook瓷马,Twitter和許多其他應(yīng)用程序必須卸載并重新安裝。
雖然互操作性有時被稱為兼容性跨晴,但實(shí)際上存在差異欧聘。互操作性涉及在應(yīng)用程序或組件之間進(jìn)行的活動對話端盆,在哪里使用另一個來完成特定的事情怀骤。談話可以看作是橫向的。兼容性更加垂直焕妙〗祝或者,可以將兼容性視為一種特殊形式的互操作性焚鹊,它可以查看您的應(yīng)用程序如何與設(shè)備提供的組件痕届,操作系統(tǒng)以及托管應(yīng)用程序的移動設(shè)備的類似固有功能進(jìn)行互操作。
例如,如果您的應(yīng)用在瀏覽器中運(yùn)行或以其他方式使用瀏覽器研叫,則兼容性測試從識別您的應(yīng)用支持的不同瀏覽器開始锤窑。對于某些基于瀏覽器的應(yīng)用程序,尤其是本機(jī)應(yīng)用程序蓝撇,您必須識別不同的支持設(shè)備以及這些設(shè)備的不同配置方式果复。無論您的應(yīng)用程序是否更改,您還必須準(zhǔn)備好測試發(fā)生的更改渤昌。
記住動態(tài)設(shè)置中存在互操作性和兼容性也很重要虽抄。測試條件與相互依賴性有關(guān),比如使用設(shè)備為設(shè)備充電独柑,與設(shè)備和應(yīng)用程序進(jìn)行數(shù)據(jù)通信數(shù)據(jù)沒有出錯迈窟。條件組合是移動應(yīng)用測試的關(guān)鍵部分。 了解應(yīng)用程序中的相互依賴關(guān)系忌栅。
我建議測試人員與開發(fā)人員密切合作车酣,以了解這些相互依賴關(guān)系何時何地發(fā)揮作用。然后索绪,思維測試人員可以弄清楚如何更好地創(chuàng)建適合其用戶群的特定測試湖员。
為了兼容性和互操作性,您應(yīng)該使用基于風(fēng)險的測試來確定關(guān)注的位置瑞驱。您可以使用等價類來識別所涉及的每個因素的不同相關(guān)選項(xiàng)娘摔。如果風(fēng)險足夠高,您可以考慮進(jìn)行組合測試唤反,至少對于那些您擔(dān)心會相互干擾的因素凳寺。
如果您的應(yīng)用程序已在運(yùn)行,您應(yīng)該有一些日志彤侍。您可以應(yīng)用一些分析來幫助您弄清楚您的用戶群是什么樣的肠缨,使用了哪些不同的配置,等等盏阶。
如果您剛開始測試移動應(yīng)用程序晒奕,那么移動設(shè)備與典型PC可能不同的方式會有所不同。通常PC的主要區(qū)別在于內(nèi)存大小名斟,磁盤空間和CPU功率吴汪。移動設(shè)備還要考慮,如屏幕尺寸蒸眠,屏幕分辨率漾橙,電池續(xù)航時間等±憧ǎ快速設(shè)備充電器會嚴(yán)重破壞應(yīng)用程序的數(shù)據(jù)或功能霜运。
有不同的網(wǎng)絡(luò)提供商及其數(shù)據(jù)計(jì)劃和數(shù)據(jù)限制脾歇,這可能會影響您的應(yīng)用的工作方式或可以使用的方式。此外淘捡,移動設(shè)備自然而然地移動藕各。這會影響連接的質(zhì)量,速度和類型焦除,因此從測試的角度來看激况,您必須考慮其他因素。
移動設(shè)備通常支持外部設(shè)備膘魄,您的應(yīng)用可能會使用外部設(shè)備或影響應(yīng)用的工作方式乌逐。例如,對于我的手機(jī)创葡,我有一個USB轉(zhuǎn)HDMI轉(zhuǎn)換器浙踢。
外圍設(shè)備可能包括藍(lán)牙鍵盤,耳機(jī)灿渴,揚(yáng)聲器洛波,HDMI視頻適配器,信用卡讀卡器等骚露。不同型號手機(jī)是不同的蹬挤。即使在單一型號的手機(jī)中,也可能存在連接性棘幸,安全性闻伶,與類似設(shè)備的互操作性,傳感器數(shù)據(jù)如何為應(yīng)用程序提供等等够话。比如使用不同的存儲卡。
了解您的應(yīng)用程序在特定設(shè)備上的限制光绕。了解閾值女嘲,限制以及應(yīng)用程序如何處理這些限制是測試人員可以與項(xiàng)目團(tuán)隊(duì)共享的重要信息。
測試設(shè)計(jì):使用經(jīng)典技術(shù)在審查了功能之后诞帐,讓我們看看它與測試設(shè)計(jì)的關(guān)系欣尼。在測試設(shè)計(jì)期間,您必須考慮應(yīng)用程序的功能停蕉,支持的設(shè)備功能以及這兩者的交叉方式愕鼓。還要記住,應(yīng)用程序使用的設(shè)備功能以及應(yīng)用程序不使用的設(shè)備功能慧起,可能會以某種方式與您的應(yīng)用程序進(jìn)行交互菇晃。假設(shè)您有一個播放音樂的應(yīng)用程序,例如在您玩游戲時播放背景音樂的單用戶游戲蚓挤。它可能適用于藍(lán)牙耳機(jī)或其他音頻設(shè)備磺送,但蜂窩網(wǎng)絡(luò)呢驻子?起初你可能會說,“不估灿,那里確實(shí)不應(yīng)該有任何互動”崇呵,但是當(dāng)你正在玩背景音樂游戲的過程中發(fā)生電話時會發(fā)生什么?如果您接聽電話馅袁,則需要暫停游戲域慷,包括暫停音樂。我在手機(jī)上發(fā)現(xiàn)了一些情況并不總能正常使用汗销。如果我使用的是使用音頻功能的應(yīng)用程序并接聽電話犹褒,則音頻會繼續(xù)播放。很明顯大溜,有些東西沒有經(jīng)過適當(dāng)?shù)臏y試化漆。
如果您的應(yīng)用程序下載和上傳數(shù)據(jù),您還應(yīng)該考慮連接钦奋,數(shù)據(jù)要求和數(shù)據(jù)計(jì)劃座云,特別是如果它可以通過蜂窩網(wǎng)絡(luò)這樣做。電池是一種化學(xué)物質(zhì)付材,通過一系列持續(xù)的化學(xué)反應(yīng)來儲存和發(fā)電朦拖。如果你經(jīng)常使用它,它會開始變熱厌衔。如果你經(jīng)常使用它璧帝,那就會改變它的行為。因此富寿,您必須在測試設(shè)計(jì)期間考慮功耗和電池行為睬隶。使用您的應(yīng)用程序并為您的設(shè)備充電也會產(chǎn)生巨大的熱量,甚至可能會燒壞電池調(diào)制解調(diào)器页徐。但是苏潜,應(yīng)用程序可以控制情況,根據(jù)閾值關(guān)閉應(yīng)用程序变勇,并根據(jù)已知的安全溫度值再次啟動應(yīng)用程序恤左。例如,如果溫度過高搀绣,iPhone將在屏幕上顯示錯誤消息飞袋,
關(guān)閉所有應(yīng)用程序。但是链患,如果在操作系統(tǒng)的幫助下將閾值內(nèi)置到應(yīng)用程序中巧鸭,應(yīng)用程序可以避免這種情況。危險溫度大于80攝氏度麻捻,而更安全的溫度范圍是55攝氏度至60攝氏度[閾值]蹄皱。同樣览闰,提前獲得這些知識可以幫助減輕災(zāi)難。
如果你在整天插在墻上的設(shè)備上測試你的應(yīng)用程序巷折,這是不現(xiàn)實(shí)的;它不僅在功率方面不切實(shí)際压鉴,而且在設(shè)備位置方面也是如此。真正的設(shè)備會被移動锻拘。這意味著設(shè)備 - 因此您的應(yīng)用程序 - 必須處理信號強(qiáng)度變化油吭。更改位置也會影響設(shè)備的溫度,這會影響您的應(yīng)用署拟。例如婉宰,如果您的應(yīng)用程序在很多地方之外使用,設(shè)備可能會變熱推穷,這會影響設(shè)備性能心包,甚至可能導(dǎo)致設(shè)備關(guān)閉。如果您的應(yīng)用消耗大量電力馒铃,這將加劇蟹腾,因?yàn)檫@會使設(shè)備變熱。
有關(guān)操作系統(tǒng)和應(yīng)用程序架構(gòu)的技術(shù)細(xì)節(jié)也會影響您設(shè)計(jì)測試的方式区宇。
測試人員需要與應(yīng)用程序的開發(fā)人員密切合作娃殖,并詢問有關(guān)系統(tǒng)集成的相互依賴性的問題。如果測試人員可以閱讀代碼并了解他們的應(yīng)用程序正在執(zhí)行的操作议谷,那么這也非常有用炉爆。 閱讀日志文件有助于了解應(yīng)用程序?qū)嶋H執(zhí)行的操作。
測試人員應(yīng)該觀看應(yīng)用程序并查看日志文件并進(jìn)行比較卧晓。
在您的研究中芬首,請?zhí)貏e注意受影響的應(yīng)用或應(yīng)用使用的受支持設(shè)備的各個方面。這包括屏幕尺寸逼裆,屏幕分率郁稍,GPS,磁力計(jì)波附,電話子系統(tǒng),陀螺儀昼钻,加速度計(jì)和支持設(shè)備可能包含的任何其他傳感器等功能掸屡。盡可能多地收集有關(guān)設(shè)備功能的信息,以支持不同的受支持設(shè)備然评。
不要認(rèn)為相同的設(shè)備功能在兩個不同的設(shè)備上以相同的方式工作仅财。例如,如果您的應(yīng)用使用GPS碗淌,則GPS功能在Android手機(jī)和Apple手機(jī)上的工作方式可能不同盏求。
安裝抖锥,重新安裝,升級和卸載通常序號徹底測試碎罚,這些安裝過程的穩(wěn)健性甚至比標(biāo)準(zhǔn)PC應(yīng)用程序更為關(guān)鍵磅废,因?yàn)樵诖诉^程中可能會出現(xiàn)各種中斷,通知荆烈,連接狀態(tài)更改以及后臺甚至前臺活動拯勉。
此外,請考慮支付相關(guān)行為與這些安裝狀態(tài)流程的交集憔购,包括從贊助模式到付費(fèi)模式的更改宫峦,反之亦然(如果允許)。如果訂閱付款模型的到期或取消需要觸發(fā)安裝狀態(tài)更改玫鸟,則這尤其危險导绷。
最后,讓我提一下非功能性測試屎飘。在服務(wù)器端組件負(fù)載很重的情況下測試應(yīng)用程序的功能行為是一件明智的事情妥曲,因?yàn)檫B接超時和數(shù)據(jù)更新延遲會影響功能行為。
將測試技術(shù)應(yīng)用于測試設(shè)計(jì)在測試設(shè)計(jì)期間枚碗,請記住使用基礎(chǔ)測試技術(shù)逾一,甚至可能使用高級測試技術(shù)。目前肮雨,我們可以專注于基礎(chǔ)技術(shù):
等價劃分是一項(xiàng)重要的技術(shù)遵堵,幾乎適用于所有測試環(huán)境,也適用于其他技術(shù)的構(gòu)建塊怨规,如決策表和成對測試陌宿。使用等價劃分的一個示例是識別不同的支持設(shè)備。
邊界值分析是等價分區(qū)的擴(kuò)展波丰。
有序等價分區(qū)是這樣一種分區(qū)壳坪,當(dāng)分區(qū)的兩個成員不相同時,一個成員大于另一個成員掰烟。
邊界值可以影響功能和非功能行為爽蝴,例如測試在線撲克游戲中的最小和最大玩家數(shù)量。
在測試影響應(yīng)用程序應(yīng)該和不應(yīng)該執(zhí)行的操作的條件組合時纫骑,決策表非常有用蝎亚,尤其是對于快速發(fā)生的事務(wù)。例如先馆,如果您要支付申請費(fèi)用发框,可能有不同的付款方式,例如信用卡煤墙,借記卡梅惯,Paypal宪拥,支付寶等。這些條件以及諸如郵政編碼和PIN信息之類的相關(guān)條件可以相互作用以確定支付行為的工作方式铣减。
當(dāng)系統(tǒng)的行為取決于過去發(fā)生的事情以及相關(guān)條件在過程中可能發(fā)生變化時她君,基于狀態(tài)的測試非常有用。例如徙歼,應(yīng)用程序行為通常會根據(jù)連接的類型犁河,速度和狀態(tài)而更改,并且對連接的更改可能會更改系統(tǒng)在進(jìn)程中的行為方式魄梯。
用例是描述正常桨螺,異常和錯誤處理方案的有用方法。例如酿秸,考慮視頻服務(wù)灭翔。我們可以做一些事情奥洼,比如查看我們的視頻隊(duì)列枣接,添加到隊(duì)列寥枝,從隊(duì)列中刪除空扎,重新排序隊(duì)列,等等瓶殃。
探索性測試是將創(chuàng)造力和靈活性應(yīng)用于測試任務(wù)的好方法早歇。當(dāng)事件序列和條件組合難以預(yù)測或受到許多變化時娃豹,它尤其有用退客。例如骏融,您可以使用探索性測試來查看在使用應(yīng)用程序時可能發(fā)生的外部中斷等事情,以及應(yīng)用程序是否以合理的方式處理這些內(nèi)容萌狂。
錯誤猜測:最初由Glenford Myers描述的錯誤猜測的概念后來被James Whittaker詳細(xì)描述為軟件攻擊的概念档玻。 8攻擊的一個例子是嘗試根據(jù)路由器安全性可能較弱的假設(shè)來攔截來自路由器的Wi-Fi信息。
基于缺陷的測試類似于錯誤猜測茫藏,但它基于過去存在的缺陷而不是您懷疑可能存在的缺陷误趴。例如,如果您保留了在應(yīng)用程序或類似應(yīng)用程序中看到的缺陷列表务傲,或者您在類似應(yīng)用程序中聽到或讀過的缺陷列表凉当,則可以設(shè)計(jì)可能會暴露此類缺陷的測試。
最后售葡,在考慮條件看杭,配置選項(xiàng)等時,考慮組合測試和分類樹等組合技術(shù)天通,這些條件泊窘,配置選項(xiàng)等應(yīng)該是獨(dú)立的熄驼,但可能會以意想不到的方式進(jìn)行交互像寒。例如烘豹,如果風(fēng)險足夠高,您可能決定使用成對測試來查找連接類型诺祸,連接設(shè)置和通信功能之間的交互携悯。
用戶觀點(diǎn)和場景與用例類似,但它們涉及額外的細(xì)節(jié)筷笨,例如用戶技能憔鬼,用戶位置,照明胃夏,天氣轴或,連接類型和強(qiáng)度,附件和外圍設(shè)備以及設(shè)備運(yùn)動仰禀。
當(dāng)您掌握用戶技能時照雁,如果愿意,可以將其提升到另一個級別答恶,并使用所謂的用戶角色測試饺蚊。用戶角色涉及嘗試將自己置于用戶的腦海中。由于移動應(yīng)用程序用戶群可能非常龐大且多樣化悬嗓,因此能夠以不同用戶的方式查看應(yīng)用程序非常重要污呼。記得,每個用戶在某些方面都是獨(dú)一無二的包竹,但角色測試包括關(guān)注用戶與您的應(yīng)用互動的方式燕酷,您可以對其進(jìn)行分區(qū)以識別應(yīng)用和移動設(shè)備互動的相關(guān)風(fēng)格,接近應(yīng)用的方式映企,情感狀態(tài)和意圖使用應(yīng)用程序悟狱,等等。
例如堰氓,考慮對您的應(yīng)用一無所知的首次使用者如何使用它挤渐。考慮一個偶然的用戶双絮,偶爾使用你的應(yīng)用程序的人浴麻,不時會使用它。頻繁用戶如何使用您的應(yīng)用囤攀?專家软免?一個人對您的應(yīng)用程序或移動設(shè)備使用情況感到困惑,這與受到威脅的用戶類似焚挠,但有點(diǎn)不同膏萧?一個生氣或同樣不耐煩的用戶怎么樣?如果惡意用戶試圖滲透您的應(yīng)用并最終侵入您的服務(wù)器呢?那些正在評估您的應(yīng)用程序以進(jìn)行審核或考慮使用它的人呢榛泛?擁有強(qiáng)大技術(shù)技能的用戶怎么樣蝌蹂?年輕用戶怎么樣?老用戶曹锨?
同樣孤个,如果您正在創(chuàng)建一個您期望的應(yīng)用程序 - 或者已經(jīng)擁有 - 一個非常多樣化的用戶群,那么角色測試對您來說非常有用沛简。如果您有良好的可用性要求齐鲤,那么確定相關(guān)的用戶角色以及受歡迎和不受歡迎的用戶將更容易,但這是一種罕見的奢侈品椒楣。我們稍后會回到這個主題给郊。
最后,為您的應(yīng)用程序開發(fā)和使用重要測試條件的清單是一種經(jīng)過驗(yàn)證的最佳實(shí)踐捧灰,可以幫助您避免忘記每個版本中的重要測試條件丑罪。檢查清單應(yīng)包括主要功能,不同連接類型和速度的效果凤壁,以及任何不同的設(shè)置或配置選項(xiàng)吩屹。您最初可以使用等價分區(qū)和邊界值分析等技術(shù)創(chuàng)建這些清單。隨著時間的推移拧抖,隨著您的應(yīng)用程序的發(fā)展煤搜,檢查表應(yīng)隨之發(fā)展。
頭腦風(fēng)暴是一種用于識別測試條件唧席,設(shè)計(jì)測試和改進(jìn)測試條件的協(xié)作技術(shù)擦盾。
1.第一步是確定您計(jì)劃如何捕獲在TestStorming會話期間收集的信息。這可以是思維導(dǎo)圖的形式淌哟,白板迹卢,活動掛圖或電子表格。
2.第二步是確定會議的范圍徒仓。這涉及設(shè)置一些時間限制和一組合理的功能來考慮腐碱。畢竟,您和您的同事可能無法在一次會話中進(jìn)行所有測試分析和設(shè)計(jì)掉弛。
3.這是第三步症见,它側(cè)重于較大測試問題的某些子集,特別是您認(rèn)為最重要的質(zhì)量特征殃饿。
第四步是指派一名協(xié)調(diào)人谋作,一位會議負(fù)責(zé)人。理想情況下乎芳,此人具有測試經(jīng)驗(yàn)和促進(jìn)經(jīng)驗(yàn)遵蚜,以及對移動應(yīng)用程序的預(yù)期行為的深入了解帖池。
這使我們進(jìn)入第五步,邀請不同的參與者吭净。正如頭腦風(fēng)暴會議中的典型情況一樣碘裕,您需要一個跨職能的團(tuán)隊(duì),就像參與前面描述的風(fēng)險分析過程的利益相關(guān)者團(tuán)隊(duì)一樣(第38頁)攒钳。在此背景下,這意味著開發(fā)人員雷滋,測試人員和業(yè)務(wù)利益相關(guān)者〔怀牛現(xiàn)在,理想情況下晤斩,我們希望團(tuán)隊(duì)中的每個人都具有創(chuàng)造力焕檬,注重細(xì)節(jié),禮貌和知識淵博澳泵。所需知識包括預(yù)期的應(yīng)用程序使用实愚,組織目標(biāo)和測試,以及應(yīng)用程序的使用方式兔辅。這問了很多參與者腊敲。更現(xiàn)實(shí)的是,瞄準(zhǔn)一個團(tuán)隊(duì)维苔,每個人都有創(chuàng)造力碰辅,參與,愿意參與介时,并能夠提供一些有用的意見没宾。
6.第六步是會話本身。首先回顧風(fēng)險沸柔,要求循衰,以前發(fā)現(xiàn)的缺陷以及其他相關(guān)背景信息。完成此審核后褐澎,您要求每位參與者確定他們的前五個測試條件会钝。這些可能與審查中涉及的項(xiàng)目有關(guān),也可能是全新的想法工三。畢竟顽素,這是頭腦風(fēng)暴。
7.第七步是優(yōu)化測試條件列表徒蟆。這涉及識別和解決重疊胁出。它涉及組合條件,這些條件基本上是彼此重新陳述段审,保持措辭最佳或拋光措辭以結(jié)合兩者的優(yōu)點(diǎn)全蝶。它還涉及將有用的副產(chǎn)品(如項(xiàng)目風(fēng)險和需求缺陷)重定向到適當(dāng)?shù)娜藛T。分類測試條件可以幫助這個過程
。
8.第八步是審查抑淫。這涉及到參與者決定測試的測試條件绷落,并且暫時有效地包裝了該過程的頭腦風(fēng)暴部分。
9.第九步是測試人員采用這組測試條件并創(chuàng)建測試用例始苇。您可能無法為所有條件創(chuàng)建實(shí)際測試用例砌烁。如果您打算使用探索性測試,您可能只是圍繞某些條件包裝測試章程催式。無論哪種方式函喉,對于每種情況,您必須確定相關(guān)的測試神諭荣月。請記住管呵,測試神諭是您咨詢的內(nèi)容,用于評估測試結(jié)果是正確還是不正確哺窄。對于每種情況捐下,您還必須確定適當(dāng)?shù)母采w深度。
10.步驟10是運(yùn)行測試并記錄結(jié)果萌业,結(jié)果像往常一樣進(jìn)行測試執(zhí)行坷襟。
11.最后,步驟11涉及確定是否存在特別有用的某些測試生年。如果是這樣啤握,您可以捕獲它們以便重復(fù)使用。
TestStorming的價值就像您合作的任何其他流程一樣;團(tuán)隊(duì)晶框,總的來說排抬,有相關(guān)的知識和經(jīng)驗(yàn),可以幫助您避免遺漏任何東西授段。如果您能讓利益相關(guān)者審查您作為測試人員創(chuàng)建的測試條件蹲蒲,您是否可以在沒有實(shí)際頭腦風(fēng)暴會議的情況下獲得許多相同的好處?是的侵贵,可能是這樣届搁,但頭腦風(fēng)暴在避免差距和建立共識方面更為強(qiáng)大。
比如以下是我認(rèn)為機(jī)票訂購的前五個測試條件窍育。賬戶安全卡睦;快速獲取準(zhǔn)確的航班狀態(tài)信息;旅行管理功能比如是否提供飯漱抓;流媒體視頻娛樂表锻。;付款信息乞娄,我的護(hù)照信息和其他個人識別信息安全存儲瞬逊。
非功能測試
關(guān)注
- 性能;
- 可用性;
- 移植性;
- 可靠性显歧。
軟件的可維護(hù)性方面最好通過靜態(tài)測試技術(shù)來解決,例如評論和靜態(tài)代碼分析确镊,所以不列在這里士骤。
性能測試性能測試涉及響應(yīng)時間,資源利用率和吞吐量蕾域。資源利用涉及在特定負(fù)載水平下查看資源消耗拷肌。您檢查的特定資源將取決于您預(yù)計(jì)會發(fā)生瓶頸的位置。通常旨巷,它們包括CPU利用率巨缘,內(nèi)存利用率,磁盤利用率契沫,磁盤帶寬利用率,網(wǎng)絡(luò)帶寬利用率等昔汉。
另外還有負(fù)載測試懈万、壓力測試、可伸縮性測試等靶病。
在移動設(shè)備上会通,由于內(nèi)存耗盡導(dǎo)致的應(yīng)用程序崩潰很容易且經(jīng)常發(fā)生。
瓶頸也可以在連接上娄周。例如涕侈,如果系統(tǒng)的設(shè)計(jì)假設(shè)客戶端和服務(wù)器端之間始終存在大而寬的數(shù)據(jù)管道,就像通常在辦公室或工廠中運(yùn)行的PC客戶端 - 服務(wù)器應(yīng)用程序一樣煤辨,那就是對于依賴移動連接的系統(tǒng)而言裳涛,這不是一個特別明智的設(shè)計(jì)決策。
當(dāng)您從客戶端查看應(yīng)用程序本身時众辨,有許多問題需要詢問其性能端三。如果應(yīng)用程序尚未運(yùn)行,它需要多長時間才能啟動鹃彻?當(dāng)人們做其他事情時郊闯,有延遲嗎?應(yīng)用程序有時會很快蛛株,有時會很慢嗎团赁?
如果應(yīng)用程序正在執(zhí)行某些操作且用戶必須等待,是否會讓用戶發(fā)布其狀態(tài)谨履?我個人更喜歡進(jìn)度條欢摄,前提是進(jìn)度更新頻繁且準(zhǔn)確。然而笋粟,像小旋轉(zhuǎn)輪一樣令人沮喪剧浸,至少你知道發(fā)生了什么事锹引。如果你點(diǎn)擊某些東西并且應(yīng)用程序就在那里,那總是讓我想知道唆香,“嗯嫌变,我是否點(diǎn)擊了那個圖標(biāo)?應(yīng)用程序是否意識到我點(diǎn)擊了圖標(biāo)躬它?“這通常會讓我開始一遍又一遍地點(diǎn)擊腾啥。
您還應(yīng)該考慮資源使用情況,例如CPU冯吓,內(nèi)存倘待,網(wǎng)絡(luò)帶寬等,正如我所提到的那樣组贺。請記住凸舵,您的應(yīng)用程序正在移動設(shè)備上運(yùn)行,并與許多其他應(yīng)用程序共享內(nèi)存和帶寬失尖,電池電量和CPU利用率以及所有其他資源啊奄。要測試這一點(diǎn),您需要找出其他應(yīng)用程序的典型組合掀潮,以及它們通常會做什么菇夸。背景加載的這一方面在客戶端是關(guān)鍵的,因?yàn)橘Y源是如此有限仪吧。
要考慮的另一個問題是完成各種工作需要多長時間才能完成某些用例 - 以及這對人們是否會令人沮喪庄新。性能對可用性有影響。
不要忘記考慮客戶端代碼效率薯鼠,即看待性能的白盒方式择诈。理想情況下,您的技術(shù)足以參與代碼審查并查看這些問題出皇。
嘗試查看競爭應(yīng)用吭从。你很可能有一些競爭對手,所以下載它們并對它們進(jìn)行基準(zhǔn)測試恶迈。您還可以對不競爭但正在執(zhí)行類似操作的應(yīng)用程序的性能進(jìn)行基準(zhǔn)測試涩金。對目標(biāo)用戶使用的其他應(yīng)用程序的性能進(jìn)行基準(zhǔn)測試。如果您要升級現(xiàn)有的應(yīng)用程序暇仲,顯然您不希望它變慢步做。所有這些都是績效目標(biāo)的良好來源。
不要將性能測試留到項(xiàng)目結(jié)束或發(fā)布奈附。系統(tǒng)構(gòu)建時的性能測試全度。我們常常看到的是斥滤,組織要等到發(fā)布之前才進(jìn)行性能測試将鸵,然后性能結(jié)果不是很好勉盅。在最糟糕的情況下 - 這是令人驚訝的頻繁 - 這些人發(fā)現(xiàn)調(diào)整是不夠的。他們實(shí)際上必須對系統(tǒng)進(jìn)行重大的重新設(shè)計(jì)顶掉,這非常昂貴并且對發(fā)布計(jì)劃非常具有破壞性草娜。
記得在測試實(shí)驗(yàn)室中安裝便宜的舊設(shè)備;不要只用最快和最新的東西來測試。
保持高水平并概述性能測試方法痒筒。不要試圖編寫完整的性能測試計(jì)劃宰闰。
可用性、簡單性簿透、學(xué)習(xí)曲線等都需要考慮移袍。
必須盡可能多地了解其支持的平臺(包括硬件)的另一個原因,固件老充,操作系統(tǒng)功能和限制葡盗。
恢復(fù)是指所有應(yīng)用程序再次啟動和運(yùn)行所需的時間,以及能夠在崩潰之前執(zhí)行的操作啡浊。
與性能測試類似觅够,可靠性測試具有客戶端元素和服務(wù)器端元素。對于服務(wù)器端元素虫啥,例如故障頻率蔚约,故障恢復(fù)速度以及能力容忍不利的外部事件奄妨。 對于客戶端元素涂籽,您需要考慮應(yīng)用程序的可靠性以響應(yīng)潛在的破壞性事件。例如砸抛,當(dāng)您的應(yīng)用通過Wi-Fi或藍(lán)牙連接時评雌,當(dāng)連接斷開,重新連接或以其他方式更改時直焙,您的應(yīng)用如何響應(yīng)景东?同樣,檢查電池和充電狀態(tài)變化會發(fā)生什么變化奔誓,例如讓電池變得非常斤吐,非常低,還是經(jīng)常連接和斷開充電器厨喂?如果設(shè)備過熱怎么辦和措?如果硬件傳感器或外圍設(shè)備出現(xiàn)故例如,如果我在應(yīng)用程序中輸入內(nèi)容時關(guān)閉藍(lán)牙鍵盤蜕煌,它不會導(dǎo)致應(yīng)用程序崩潰派阱,應(yīng)用程序也不應(yīng)無限期掛起,直到鍵盤返回斜纪。相反贫母,應(yīng)用程序應(yīng)無縫恢復(fù)到軟鍵盤文兑,如果藍(lán)牙鍵盤重新連接,它應(yīng)無縫切換回外部鍵盤腺劣。
共享資源的稀缺性是可靠性挑戰(zhàn)的另一個來源绿贞。您的存儲,內(nèi)存和CPU資源有限誓酒。此外樟蠕,您可能遇到內(nèi)存泄漏意味著可用內(nèi)存比應(yīng)有的更少的情況。使您的應(yīng)用程序更加困難的是靠柑,您通常擁有許多同居應(yīng)用程序寨辩,其中一些應(yīng)用程序在后臺無形運(yùn)行。當(dāng)內(nèi)存耗盡或網(wǎng)絡(luò)帶寬占用背景應(yīng)用消耗大量且可能不同數(shù)量的這些資源時歼冰,您的應(yīng)用會發(fā)生什么靡狞?
盡管有一個奇怪的名字,“monkey”是可靠性測試的有用工具隔嫡〉榕拢可用性不僅包括測量失敗之間的平均時間,還包括平均修復(fù)時間腮恩。
另外還有在不支持的設(shè)備等情況的錯誤消息梢杭。
習(xí)題
某在線購物的應(yīng)用程序支付接口支持支付寶、云閃付秸滴、蘇寧支付武契。需要同時測試有效和無效的等價分區(qū),那么理論上測試的最少數(shù)量是多少荡含?
A.3
B.6
C.7
D.10
測試應(yīng)用程序正確性的要檢查以下哪兩個屬性咒唆?
A 響應(yīng)時間。
B 適用性释液。
C 安全性全释。
D 互操作性。
E 準(zhǔn)確性误债。