測試
-
- 軟體測試要知道的知識
-
- 軟體測試的生命周期
- bug的級别
- bug的生命周期
- 與開發人員産生争如何解決
- 靈活開發的流程
- V模型和W模型
- 測試用例
-
- 測試用例的設計方法
- 測試的分類
-
- 按開發階段分
- 按測試實施分
- 按是否運作分
- 按是否手工分
- 按是否檢視代碼分
- selenium
-
- selenium工具集
- webdriver
- 經常被問到的問題
-
- 請說一下手動測試與自動化測試的優缺點
- 測試項目具體工作是什麼
- 測試用例的邊界
- 軟體品質的六個特征
- 詳談設計測試用例的方法
- APP性能測試的名額
- 當PC網路故障時,如何排除障礙
- web測試和app測試的不同點
- 如何測試網絡協定
軟體測試要知道的知識
軟體測試的生命周期
需求分析 ——> 測試計劃 ——> 測試設計、測試開發 ——> 測試執行 ——> 測試評估
bug的級别
-
Blocker(崩潰)
造成系統崩潰、當機、死循環、導緻資料庫丢失、與資料庫連接配接錯誤等問題
-
Critical(嚴重)
系統主要功能喪失,資料庫儲存調用錯誤,使用者資料丢失等但是不影響其他功能的測試
-
Major(一般)
功能沒有完全實作但是不影響使用,如操作時間長、查詢耗時久等問題
-
Minor(次要)
界面設計、性能缺陷、建議性問題
bug的生命周期

- new : 新發現的bug,為經評審決定是否要指派給開發人員進行修改
- open:确認是bug,并且認為需要修改,指派給相關開發人員
- rejected:如果認為不是bug,則拒絕修改
- delay:如果認為暫時不需要修改或者暫時不能修改,則延遲修改
- fixed:開發人員修改後表示成fixed狀态,測試人員進行回歸測試
- closed:修改狀态的bug經測試人員回歸測試後通過,則關閉bug
- reopen:如果回歸測試驗證bug仍然存在,則需要重新打開bug,開發人員重新修改
與開發人員産生争如何解決
- 先檢查自身,是否bug描述不夠準确,及bug的定級是否準确
- 站在使用者的角度考慮,讓開發人員盡量了解到bug可能會造成的不良結果
-
如果進過多輪溝通,開發人員仍不接受,可以發起bug評審
決定如何處理bug
分析缺陷産生的原因,找出預防的政策
靈活開發的流程
靈活開發有很多種,其中scrum是比較流行的一種
- 先由産品經理整理user story(使用者故事),形成左側的product backlog(産品代辦事項)
- 釋出計劃會議:product owner(産品經理)負責講解user story,對其進行評估和排序,釋出計劃會議的産出就是制定出一期疊代要完成的story清單,Spring backlog
- 疊代計劃會議:項目團隊對每個story進行任務分解,分解的标準是完成這個story的所有任務,每個任務都有明确的負責人,并完成工時的初評估
- 每日例會:每天scrum master(項目經理)召集站立會議,團隊成員彙報昨天任務完成情況和今日計劃,及遇到的問題
- 示範會議:疊代結束後,展開示範會議,相關人員都受邀參加,團隊負責向大家展示本次疊代取得的成果,期間記錄大家的回報記錄,由product owner整理,形成新的story
- 回顧會議:項目團隊對本期疊代進行總結,發現不足,制定改進計劃,下一次疊代繼續改進
V模型和W模型
V模型
局限性:僅僅把測試作為在編碼之後的一個階段,沒有在需要階段就進入測試
W模型
特點:開發與測試并行進行,有利于盡早的發現問題
測試用例
測試用例是為了實施測試而向被測試的系統提供的一組集合,集合包括:測試環境、操作步驟、測試資料、預期結果等
測試用例的設計方法
- 等價類:依照需求将輸入劃分為若閣個等價類
需求:超市買水果
有效等價類:蘋果、桃子、梨
無效等價類:青菜、大米、衣服
- 邊界值:對輸入輸出的邊界值進行測試
- 輸入框長度為1-11,取邊界值:0、1、11、12
- 運動員的參賽項目為1-3項,取邊界值:0項、1項、3項、4項
- 查詢面頁面有999行,每50行一頁,取邊界值:輸出0行、1行、50行、51行、999行、1000行
-
因果圖:表明程式輸入條件和輸出動作之間的互相關系
恒等:
如果輸入為真,那麼輸出就為真軟體測試相關小結
與:
如果兩個輸入都為真,那麼輸出就為真
或:
如果輸入中有一個為真,那麼輸出就為真
非:
隻有輸入為假,輸出才為真
案例:
假設業務單據的處理規則為:“淘寶618活動,提單已送出,訂單合計金額大于300元或有紅包,則進入優惠”
對于本業務規則,首先通過分析所有可能的資料和可能的輸出,得到以下結果:
輸入:訂單已送出、金額大于300、有紅包
輸出:優惠、不優惠
進行第二步,找出輸入與輸出之間的對應關系,通過分析可以看出以下對應關系
(1)訂單已送出,訂單金額大于300元,有紅包,則優惠
(2)訂單已送出,訂單金額大于300元,無紅包,則優惠
(3)訂單已送出,訂單金額小于等于300元,有紅包,則優惠
(4)訂單已送出,訂單金額小于等于300元,無紅包,不優惠
(5)訂單未送出,不優惠
為了友善畫出因果圖和判定表,需要對所有輸入和輸出編号
c1:訂單已送出
c2:訂單金額大于300元
c3:有紅包
e1:優惠
e2:不優惠
- 畫出因果圖
![]()
軟體測試相關小結 - 畫判斷表:有3個條件,輸出有2個值,是以表的列數為2×2×2=8
![]()
軟體測試相關小結 最終的測試用例
1、2、3、4、5(包含6、7、8)
- 正交排列
- 場景設計:想象需求的場景來設計測試用例
- 錯誤猜測法:根據直覺找出有可能出現的錯誤,有針對性的設計測試用例
測試的分類
按開發階段分
-
單元測試
測試階段:編碼後或編碼前
測試對象:最小子產品
測試方法:白盒測試
測試内容:子產品接口測試,局部資料結構測試,路徑測試,錯誤處理測試,邊界測試
-
內建測試
測試階段:單元測試之後
測試對象:子產品間的接口
測試方法:黑盒測試+白盒測試
測試内容:子產品之間的資料傳輸,子產品之間的沖突,子產品組裝功能的正确性,全局資料結構
-
系統測試
測試階段:內建測試之後
測試對象:整個系統
測試方式:黑盒測試
測試内容:功能、界面、可靠性、易用性、性能、相容性、安全性等
-
回歸測試
回歸測試指修改了代碼後,重新進行測試以确認修改後沒有引入新的錯誤
-
冒煙測試
一般在開發人員開發完畢後給測試人員進行測試時,測試人員會先進行冒煙測試,冒煙測試就是讓産品運作起來,測試能否正常啟動
-
驗收測試
最後一個階段的測試,確定産品準備就緒
測試階段:系統測試之後
測試對象:整個系統
測試方法:黑盒測試
測試内容:功能、界面、可靠性、易用性、性能、相容性、安全性
按測試實施分
-
α測試
α測試是由使用者在開發環境下進行的測試
-
β測試
β測試是由軟體的最終使用者在一個或多個場所進行測試
α測試和β測試的差別:
- 測試場所不同:α測試指用把使用者請開發方的場地來測試,β測試是一個或多個使用者在不同場所進行測試
- α測試的環境是受開發方控制的,使用者數量較少,時間比較集中;β測試的環境是不受開發方控制的
- α測試先于β測試
-
第三方測試
介于開發方和使用者之間的第三方測試
按是否運作分
-
靜态測試
指不運作被測程式本身,通過分析源程式的文法、結構、過程等檢查程式的正确性
代碼靜态分析和文檔測試都屬于靜态測試
-
動态測試
指通過運作程式,檢查運作結果和預期結果的差異,并分析運作效率,正确性
按是否手工分
-
手工測試
由手工一個一個去輸入測試用例,然後觀察結果
優點:思維發散,缺點:執行效率慢
-
自動化測試
簡單說就是以人為驅動的測試行為轉化為機器執行的一個過程
自動化測試步驟:
- 完成功能測試,版本基本穩定
- 根據項目特性,選擇合适項目的自動化測試工具,并搭建環境
- 提取手工測試的測試用例轉化為自動化測試的用例
- 通過工具、代碼實作自動化的構造輸入,自動檢測輸出結果是否符合預期
- 生成自動化測試報告
- 持續改進,腳本優化
按是否檢視代碼分
-
黑盒測試
也叫軟體測試,把被測試軟體當成一個黑盒子,不關心内部結構,隻關心軟體的輸入和輸出資料
-
白盒測試
基于代碼的測試,需要打開盒子,研究裡面的代碼和執行結果
-
灰盒測試
是介于白盒測試和黑盒測試之間的一種測試,多用于內建測試階段,不僅關心輸入輸出的正确性、同時要關注程式内部情況
selenium
selenium工具集
selenium 1(環境殺傷):seleniumRC(已被webdriver替代)、seleniumIDE(錄制自動化測試腳本)、selenium GRID(分布式)
selenium 2:webdriver(Google)
selenium 3:增加了一些浏覽器的原生驅動,safari(蘋果),edge(微軟)
webdriver
原理
浏覽器相當于計程車,webdriver相當于司機,腳本相當于乘客
腳本(乘客)把指令傳達給webdriver(司機),webdriver(司機)來根據指令驅動浏覽器執行腳本指令(開車)
經常被問到的問題
請回答單元測試、內建測試、系統測試、驗收測試、回歸測試中哪步最重要
這些測試步驟分别在軟體開發的不同階段對軟體測試,自認為對軟體完整功能進行測試的系統測試很重要,因為此時單元測試和內建測試已完成,能夠對軟體所有功能進行測試,也能夠覆寫系統所有聯合的部件,能夠驗證系統全局是否滿足需求規格的定義,是以系統測試很重要
回答內建測試和系統測試的差別,以及它們的應用場景
差別:
1、先後設計用例順序不同:從w模型來講,一般都是先設計系統測試計劃用例,在設計內建測試
2、用例粒度不同:系統測試用例相對接近使用者接受測試用例,內建測試用例比系統測試用例更詳細,而且對于接口部分要重點設計
3、執行順序不同:先執行內建測試,待到內建測試出現問題都修複後,再做系統測試
應用場景
內建測試:完成單元測試之後,個子產品聯調測試,集中在個子產品間連接配接的接口是否一緻、各子產品間的資料流和控制流是否按照設計實作其功能、以及結果的正确性驗證等,可以是整個産品的內建測試,也可以是組合的大子產品的內建測試;內建測試主要針對程式内部結構進行測試,特别是對程式子產品之間的接口進行測試,測試方法一般選黑盒、白盒測試相結合
**系統測試:**針對整個産品的全面測試,即包含個子產品的驗證性測試和功能性測試,又包括對整個産品的健壯性、安全性、可維護性及各種性能參數的測試。做系統測試要嚴格按照《需求規格說明書》的标準,一般都使用黑盒測試
黑盒測試和白盒測試又哪些方法
黑盒測試方法有:等價類劃分,邊界值分析,錯誤推測,因果圖法
白盒測試方法有:邏輯覆寫法,程式插樁法,基本路徑法,符号測試,錯誤驅動測試
請說一說黑盒與白盒的測試方法
黑盒測試:
主要着眼于程式外部結構,不考慮内部邏輯結構,針對軟體界面和軟體功能進行測試。“黑盒”法是窮舉輸入測試,隻有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程式的所有錯誤。對于測試用例,不僅要測試所有合法的輸入,而且還要對那些不合法但是可能出現的輸入情況進行測試。
常用的黑盒測試方法:等價類劃分法,邊界值分析法,因果圖法,場景法,正交實驗設計法,判定表驅動分析法,錯誤推測法,功能圖分析法
白盒測試:
也稱為結構測試或邏輯驅動測試,是針對被測單元内部是如何進行工作的測試。它根據程式的控制結構設計測試用例,主要用于軟體或程式驗證,白盒測試法檢查程式内部邏輯結構,對所有的邏輯路徑進行測試,是一種窮舉路徑的測試方法,但即使每條路徑都測試過了,仍然有可能存在錯誤,因為窮舉路徑測試無法檢查出程式本身是否違反了設計規範
白盒測試需要遵循的原則有:1. 保證一個子產品中的所有獨立路徑至少被測試一次;2. 所有邏輯值均需要測試真與假兩種情況;3. 檢查程式的内部資料結構,保證其結構的有效性;4. 在上邊界及可操作範圍内運作所有循環
常用白盒測試方法:
靜态測試:不用運作程式的測試,包括代碼檢查、靜态結構分析、代碼品質度量、文檔測試等等,它可以由人工進行,充分發揮人的思維優勢,也可以借助軟體工具自動進行
動态測試:需要執行代碼,通過運作程式找到問題,包括功能确認與接口測試、覆寫率分析、性能分析、記憶體分析
白盒測試中的邏輯覆寫包括語句覆寫、判定覆寫、條件覆寫、判定/條件覆寫、條件組合覆寫和路徑覆寫。六種覆寫标準發現錯誤的能力呈由弱到強的變化:
1.語句覆寫每條語句至少執行一次
2.判定覆寫每個判定的每個分支至少執行一次
3.條件覆寫每個判定的每個條件應取到各種可能的值
4.判斷/條件覆寫同時滿足判定覆寫條件覆寫
5.條件組合覆寫每個判定中各條件的每一種組合至少出現一次
6.路徑覆寫使程式中每一條可能的路徑至少執行一次
請說一下手動測試與自動化測試的優缺點
手工測試優點:
1、測試人員具有經驗和對錯誤的猜測能力
2、測試人員具有審美能力和心理體驗
3、測試人員具有是非判斷和邏輯能力
手工測試缺點:
1、重複的手工回歸測試,代價太大,容易出錯
2、依賴于軟體測試人員的能力
自動化測試優點:
1、對程式的回歸測試更友善,這可能是自動化測試最主要的任務,特别是在程式修改比較頻繁時,效果更明顯。由于回歸測試的動作和用例是完全設計好的,測試期望的結果也是完全可以預料的,将回歸測試自動運作,大大提高測試效率
2、可以運作更多更繁瑣的測試,可以在較短的時間内運作更多的測試
3、可以執行一些手工測試困難或不可能進行的測試。比如,模拟大量使用者同時通路操作
4、更好的利用資源,将繁瑣的任務自動化,可以提高準确性,也可以讓測試人員有更多的精力設計更好的測試用例。
5、自動化測試具有一緻性和可重複性,每次測試的結果和執行的内容一緻性可以保障
6、測試的複用性,由于自動測試通常采用腳本技術,這樣就有可能隻需要做少量的修改,實作在不同測試過程中使用相同的用例
自動化測試缺點:
1、不能取代手工測試
2、手工測試比自動化測試發現的缺陷更全面
3、對測試品質的依賴性極大
4、測試自動化不能提高有效性
5、自動化測試可能會制約軟體開發,由于自動測試比手動測試更脆弱,所有維護會受到限制,進而制約軟體的開發
6、工具本身不具備思維發散能力
測試項目具體工作是什麼
搭建測試環境
撰寫測試用例
執行測試用例
寫測試計劃,測試報告
測試,并送出bug表單
跟蹤bug修改情況
執行自動化測試,編寫腳本,執行,分析,報告
進行性能測試,壓力測試等其他測試,執行,分析,調優,報告
測試用例的邊界
邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法
常用的邊界值
- 對16-bit的整數而言,32767和-32768是邊界
- 螢幕上光标在最左上、最右下位置
- 報表的第一行和最後一行
- 資料元素的第一個和最後一個
- 循環的第0次、第1次和倒數第2次、最後一次
軟體品質的六個特征
- 功能特征:與一組功能及其指定性質有關的一組屬性,這裡的功能是滿足明确或隐含的需求的那些功能
- 可靠特性:在規定的一段時間和條件下,與軟體維持其性能水準的能力有關的一組屬性
- 易用特性:由一組規定或潛在使用者為使用軟體所需作的努力和所作的評價有關的一組屬性
- 效率特性:在規定條件下軟體的性能水準與所使用的資源量之間關系有關的一組屬性
- 可維護特性:與進行指定的修改所需的努力有關的一組屬性
- 可移植特性:與軟體從一個環境轉移到另一個環境的能力有關的一組屬性
詳談設計測試用例的方法
黑盒測試
-
等價類劃分
等價類劃分是将系統的輸入域劃分為若幹部分,然後從每部分選取少量代表性資料進行測試。等價類可以劃分為有效等價類和無效等價類,設計測試用例時兩種都要考慮
-
邊界值分析法
邊界值分析法是對等價類劃分的一種補充,邊界值分析法就是假定大多數錯誤出現在輸入條件的邊界上,邊界值分析法是通過優先選擇不同等價類間的邊界值覆寫有效等價類和無效等價類更有效的進行測試,是以該方法要和等價類劃分法結合使用
-正交試驗法
正交是從大量的試驗點中挑選出适量的、有代表性的點。正交試驗設計是研究多因素多水準的一種設計方式,它是一種基于正交表的高效率、快速、經濟的試驗設計方法
-狀态遷移法
狀态遷移法是對一個狀态在給定的條件内能夠産生需要的狀态變化,狀态遷移法是設計足夠的用例達到對系統狀态的覆寫、狀态、條件組合、狀态遷移路徑的覆寫
-流程分析法
流程分析法主要針對測試場景類型屬于流程測試場景的測試項下的測試子項進行設計,這是從白盒測試中路徑覆寫分析法借鑒來的一種重要方法
-輸出域分析法
輸出域分析法是對輸出域進行等價類和邊界值分析,确定是要覆寫的輸出域樣點,反推得到應該輸入的輸入值,進而構造出測試用例
-判定表分析法
判定表是分析和表達多種輸入條件下系統執行不同動作的工具,他可以把複雜的邏輯關系和多種條件組合的情況表達的即具體又明确
-因果圖法
因果圖是用于描述系統輸入輸出之間的因果關系、限制關系。因果圖的繪制過程是對被測系統的外部特征模組化過程,根據輸入輸出的因果圖可以得到判定表,進而規劃處測試用例
-錯誤猜測法
錯誤猜測法主要是針對系統對于錯誤操作時對于操作的處理法的猜測法,進而設計測試用例
-異常分析法
異常分析法是針對系統有可能存在的異常操作,軟硬體缺陷引起的故障進行分析,分析發送錯誤時系統對于錯誤的處理能力和恢複能力依次設計測試用例
APP性能測試的名額
1、記憶體:記憶體消耗測試節點的設計目标是為了讓應用不占用過多的系統資源,且及時釋放記憶體,保障整個系統的穩定性。當然關于記憶體測試,在這裡我們需要引入幾個概念:空閑狀态、中等規格、滿規格
空閑狀态指打開應用後,點選home鍵讓應用背景運作,此時應用處于的狀态叫做空閑;中等規格和滿規格指的是對應用的操作時間的間隔長短不一,中等規格時間較長,滿規格時間較短
記憶體測試中存在很多測試子項:
空閑狀态下的應用記憶體消耗,中等規格轉态下的應用記憶體消耗,滿規格狀态下的應用記憶體消耗,應用記憶體峰值,應用記憶體洩漏,應用是否常駐記憶體,壓力測試後的記憶體使用
2、CPU:
使用Android提供的view plaincopy在CODE上檢視代碼片派生到我的代碼片adbshell dumpsys CPUinfo | grep packagename >/ address/CPU.txt來擷取;使用top指令view plaincopy在CODE上檢視代碼片派生到我的代碼片adbshell top | grep packagename >/ address/CPU.txt來擷取。
3、流量:
網絡流量測試是針對大部分應用而言的,可能還要部分應用會關注網速、弱網之類的測試
流量測試包括以下測試項:
應用首次啟動流量提示;
應用背景連續運作2小時的流量值;
應用高負荷運作的流量峰值;
4、電量
- 測試手機安裝目标APK前後待機功耗有無明顯差異
- 常見使用場景中能夠正常進入待機,待機電流在正常範圍内
- 長時間連續使用有無異常耗電現象
5、啟動速度
第一類:首次啟動——應用首次啟動所花費的時間
第二類:非首次啟動——應用非首次啟動花費的時間
第三類:應用界面切換——應用界面内切換所花費的時間
6、滑動速度、界面切換速度
7、與伺服器互動的網路速度
當PC網路故障時,如何排除障礙
- 首先排除解除故障,即確定網線是可以正常使用的,然後禁用網卡後再啟用,排除偶然故障。打開網絡與共享中心視窗,單擊視窗左上側"更改擴充卡設定"右擊其中的"本地連接配接"或"無線網路連接配接",單擊快捷菜單的"禁用"指令,即可禁用所選網路,接下來再重新開機網絡,檢視
-
使用 Ipconfig 檢視計算機的上網參數
1、單擊"開始 | 所有程式 | 指令提示符",打開cmd視窗
2、輸入ipconfig,按 Enter 确認,可以看機器的配置資訊,輸入 ipconfig/all 可以看到IP位址和網卡實體位址等相關網絡詳細資訊
-
使用ping指令測試網絡的連通性,定位故障範圍
在cmd中輸入"ping 127.0.0.1",資料顯示本機分别發送和接受的4個資料包,如丢包率為零可判斷本機網路協定工作正常,如顯示"請求逾時"則表明本機網卡的安裝或TCP/IP協定有問題,接下來就應該檢查網卡和TCP協定,解除安裝後重裝
-
ping本機IP
在确認127.0.0.1位址能被ping通的情況下,繼續使用ping指令測試本機的IP位址能否被ping通,如不能,說明本機的網卡驅動程式不正确,或者網卡與網線之間連接配接有故障,也有可能是本地的路由表面收到了破壞,此時應檢查本機網卡狀态是否為已連接配接,網絡參數是否設定正确,如果正确但不能ping通,就應該重新安裝網卡驅動程式。丢失率為零,可以判斷網卡安裝配置沒有問題
-
ping網關
網關位址能被ping通的話,表明本機網絡連接配接以及正常,如果指令不成功,可能是網關裝置存在問題,也可能是本機上網參數設定有誤,檢查網絡參數
web測試和app測試的不同點
系統架構方面:
web項目一般都是b/s構架,基于浏覽器
app項目則是c/s,必須要有客服端,使用者需要安裝用戶端
web項目隻要更新服務端,客服端就會同步更新
app項目則需要用戶端和服務端都更新
性能方面:
web頁面主要關系響應時間
app則還需要關心流量、電量、CPU、GPU、Memory等等
相容方面:
web基于浏覽器的,是以更傾向于浏覽器和電腦硬體,電腦系統的方向相容
web不必考慮用戶端的安裝解除安裝
app測試則還要看分辨率,螢幕尺寸,還有看裝置系統
而app是用戶端,則必須測試安裝、更新、解除安裝。除了正常的安裝,更新,解除安裝還要考慮到異常場景,包括安裝時的中斷、弱網、安裝後删除安裝檔案
如何測試網絡協定
主要包括四種類型的測試:
一緻性測試:檢測協定實作本身與協定規範的符合程度
互操作性測試:基于某一協定檢測不同協定實作間互操作互通信的能力
性能測試:檢測協定實作的性能名額,比如資料傳輸速度、連接配接時間、執行速度、吞吐量、并發度
健壯性測試:檢測協定在現在各種惡劣環境下運作的能力,比如注入幹擾封包,通信故障,信道被切斷