【知識詳解】測試相關
- 問:需求分析和系統設計?
- 問:為什麼選擇測試開發(怎麼理解測開)?
- 問:測試應該具備什麼能力?
- 問:測試的體系和組成?
- 問:什麼是介面測試?
- 問:軟體測試的流程?
- 問:軟體測試的宣告週期?
- 問:測試人員常用的工具?
- 問:α和β測試分分別是什麼?
- 問:效能測試、壓力測試、負載測試、穩定性測試都是什麼?
- 問:測試用例的常用方法?
- 問:如何判斷前後端bug?
- 問:web頁面出現了空白,怎麼排查問題?
- 問:比如說登入頁面,怎麼進行安全性測試(SQL注入)?
- 問:設計一個測試用例?(以使用者登入介面測試為例)
- 購物車測試用例?
問:需求分析和系統設計?
需求分析與系統設計是軟體生存期中最重要的兩個步驟,需求分析需要解決的是“做什麼”的問題,而系統設計則是解決“怎麼做”的問題;
- 需求分析主要是確定待開發軟體的功能、效能、介面等要求,包括需要輸入什麼資料,要得到什麼結果,最後應輸出什麼,需求分析就是確定計算機是做什麼的;要達到什麼樣的效果;
- 系統設計:就是要把許多事物和問題抽象起來,然後把這些問題或事物模組化,讓一個大問題變的容易些,然後就是需要解決這些模組化之間耦合的情況;
問:為什麼選擇測試開發(怎麼理解測開)?
我個人理解,開發是一個產品很重要的階段,然後測試也是很重要的,現在比如說開發的java,有很多框架都也在被廣泛應用,所以開發出一個能夠使用的產品變的簡單了,各種產品也都很多,但是對於使用者來說,這麼多的產品裡是會更加註重產品的質量和服務,所以這時候測試人員的價值就體現了,對一個產品進行測試是整個產品階段是很重要的一環,在測試階段多找出產品的bug或不足,那真正使用的時候問題就少了,現在的話也更多的從手工測試逐漸轉變為自動化測試,對產品的質量把控也越來越重視,感覺會很有潛力,未來也會比較有前景,我感覺自己比較適合這個崗位,因為平時考慮問題比較全面,能夠站在別人的角度考慮問題,比較喜歡刨根問底;作為一名測試人員是能夠有較強的成就感的,能夠將一個產品變的越來越好。另外,測試開發要有開發能力,現在很多都在開發測試工具或者是框架,都能提高測試效率,此外也需要有比較強的學習能力,我認為自己比較適合做測試開發。
測試開發這個角色既融入了測試人員的這種質量意識,也要有開發人員的技能;
測試規劃:我覺得對於測試工程師主要有兩個方向把,一個是管理崗位,另一個是技術的崗位,我個人還是的規劃是這種技術的路線,剛開始去把基礎的做好,比如像設計用例、執行測試、環境部署、定位問題等;總結技術和方法,沉澱一下;然後根據技術和自己的興趣,去選擇一個領域深入,比如效能測試、自動化測試、介面測試、安全測試等。目前是這樣的一個打算;
問:測試應該具備什麼能力?
- 持續不斷的學習能力;當然這也是每一個開發人員都應該具有的,不僅是測試,現在技術變化很快,也有很多框架一直在誕生,所以要有不斷的學習能力;
- 好的程式設計能力:要能夠理解各種程式的邏輯關係,能讀好、寫好程式碼;
- 要能夠發現問題,做事細心全面:測試是要能夠測出問題的,測試的時候多發現問題,真正上線就少問題,考慮測試用例的時候要全面,並且具有代表性;
- 要有很好的溝通能力;能夠明確的表明自己的意思,尤其是與開發人員溝通好;
- 要有責任心:既然是一名測試工程師,就要對產品和對使用者負責,要對自己測試過的產品負責。
問:測試的體系和組成?
測試的整體體系如下:
目前針對軟體測試的方向主要集中在:功能測試、介面測試、UI測試、效能測試等幾類;
問:什麼是介面測試?
介面測試主要是用來外部系統與系統之間或者系統內部子系統之間的各個互動點,測試的重點是檢查資料的交換、傳遞還有控制管理的過程;
比如常見的介面測試的工具postman,現在普遍都是採用一種前後端分離的架構,而前後端呼叫又主要都是基於http協議,所以測試介面的時候主要是通過工具或者程式碼去模擬http請求的傳送與接收;
問:軟體測試的流程?
- 首先要先理解需求,檢視需求文件,形成自己對此產品的一個大致思路;
- 編寫測試計劃,主要就是設計測試用例(等價類劃分、邊界值、錯誤推斷、因果圖等);
- 搭建環境、執行測試用例;
- 形成測試報告;
問:軟體測試的宣告週期?
- 需求分析階段:測試人員瞭解需求、對需求進行分解、分析,得出測試需求;
- 測試計劃階段:根據需求編寫測試計劃、測試方案;
- 測試設計、測試開發階段:測試人員搭建測試用例框架,根據需求和設計編寫一部分測試用例;
- 測試執行階段:根據測試用例和計劃執行測試,驗證結果;
- 測試評估階段:在執行的過程中記錄問題,測試完成後編寫測試報告,進行測試評估;
問:測試人員常用的工具?
- Junit:單元測試工具;主要是用來針對程式碼的白盒測試
- Jmeter:基於Java的負載測試工具,現在也很多應用於介面測試,可以通過開發指令碼驗證被測物件的返回結果是否和預期一致;
- Postman:介面測試工具,在沒有UI介面,純粹是資料傳遞或業務邏輯時,可以選擇;
- LoadRunner:經常使用的效能測試工具,可以通過這個工具模擬使用者負載;
- Fidder:抓包工具,或者瀏覽器的f12;
問:α和β測試分分別是什麼?
- α測試是開發人員和使用者一起共同參與的,是一種內部測試;
- β測試是內部測試後的公測,是完全由使用者來完成的;
問:效能測試、壓力測試、負載測試、穩定性測試都是什麼?
壓力測試和負載測試都可以說是效能測試的子集;
- 效能測試:系統在不同的使用者負載情況下系統的響應時間、吞吐量等指標;
- 負載測試:負載測試是個方法,不斷的增大負載來檢視在滿足效能指標下的最大負載數;所以可以說效能測試就是通過不同的負載測試來實現;
- 壓力測試:壓力測試是想通過施加高負載的手段來讓系統處於極限狀態,測試是否能夠執行,是否穩定;
問:測試用例的常用方法?
- 等價類劃分:從無窮多資料中,劃分等價類:有效等價類和無效等價類;從每個等價類中挑選代表性的資料進行測試;
3-20個字元:
有效資料:大於等於3,小於等於20的;
無效資料:小於3,大於20的;
- 邊界值法:找到有效資料和無效資料的邊界值;然後採用邊界值-1、邊界值、邊界值+1測試;
最小邊界值:3;最大邊界值:20;
最小邊界值-1:2;最大邊界值-1:19;
最小邊界值+1:4;最大邊界值+1:21;
- 因果圖法:不同控制元件組合產生不同的結果;
- 錯誤推斷法:根據經驗和直覺推測程式中所有可能存在的錯誤;
問:如何判斷前後端bug?
- 前端bug:1.介面相關;2.佈局相關;3.相容性相關;
(出現樣式問題的是CSS、出現文字問題的是html、出現互動問題的則是javascript) - 後端bug:1.業務邏輯相關;2.效能或資料相關;3.安全性相關;
- 定位的話可以查日誌,或者是查介面,比如說通過f12抓包,檢視http請求,或者通過狀態碼檢視是客戶端或服務端錯誤;
link
問:web頁面出現了空白,怎麼排查問題?
1.先確保網路連線通暢;
2.檢視url地址是否輸入有誤;
3.開啟控制檯檢視報錯資訊;按f12檢視狀態碼等;
4.抓包看是否正常;用介面模擬請求
問:比如說登入頁面,怎麼進行安全性測試(SQL注入)?
- 登入成功後生成的cookie是否是httponly的,否則很容易被指令碼獲取,能夠防止xss攻擊;
- 使用者名稱和密碼是否是加密後發給伺服器的;
- 在使用者名稱和密碼是輸入框是否遮蔽掉了SQL注入問題?
SQL注入是利用某些系統沒有對使用者輸入的資料進行充分的檢查,
在使用者輸入的資料中存在非法的SQL語句段或者命令;
比如:SQL = "SELECT user FROM table WHERE user = " + name;
從前端傳來的name然後進行語句拼接後去資料庫裡查詢
但是,if前端傳來的name變成了 ' ' or '1' = '1';
那這個語句就變成了:
Select uesr from table where name = ' ' or '1' = '1'
那這樣變成了或的關係,而且最後條件恆成立,那即使資料庫裡沒有,也能返回true;
使用preparestatement進行sql語句的預編譯;防止sql注入;
問:設計一個測試用例?(以使用者登入介面測試為例)
- 功能測試:
正確使用者名稱、密碼、驗證碼能登入;
根據三者任意不正確能夠提示有效資訊:比如密碼錯誤、驗證碼錯誤;
點選驗證碼是否能夠重新整理;
點選記住密碼後下次登入能不能不輸入密碼;
使用者名稱和密碼是否大小寫敏感;
輸入的手機號提示未註冊;
輸入不合法的使用者名稱是否有提示;使用者名稱和密碼是否有長度限制;
- 介面測試:
元素是否對齊;
沒有輸入時是否有提示;
相對應的按鈕是否能夠點選;
介面風格是否美觀友好;
- 安全性測試;
有沒有登入次數的限制;
登入錯誤之後限制多長時間不能登入;
支不支援一個賬戶多地登入;
- 效能測試
登入後跳轉的響應時間;
通過工具向登入介面發起大量請求,檢視執行情況;何時崩潰;
- 相容測試:
不同瀏覽器或者不同版本情況下功能是否正常;
不同解析度,不同終端的功能是否正常;
購物車測試用例?
- 介面測試
開啟頁面後,頁面佈局是否合理,是否完整;
不同賣家的上面在不同區域展示,要能夠區分;
頁面的功能按鈕可以正常顯示;
商品的最下方顯示已經失效的物品;
再往下拉最下面顯示“你可能喜歡”
購物車if存在商品降價、庫存不足、限購的話能有字型的顯示;
- 功能測試
購物車頁面裡的功能很多
比如商品頁面的連結跳轉是否正常;
商品未勾選,點選結算;
商品勾選後,點選結算,商品的折扣、優惠券顯示是否正常;
點選結算後能夠跳轉到支付頁面;
增刪改商品數量是否正常,商品數量的限制;
商品降價是否有提示,庫存緊張提示等;
商品下架、店鋪不存在、商品失效等是否顯示灰色,是否能夠清理;
- 效能測試
開啟購物車的時間、編輯購物車比如增刪改物品需要的時間,是否是實時重新整理的;
清空失效的商品需要的時間;
- 相容性測試
不同瀏覽器上從功能是否正常;
不同手機系統比如ios或android或者鴻蒙等系統,功能是否正常;
異常測試
比如一些突發狀況時,這個購物車頁面是否正常,
比如突然來電話,或者網路情況弱網情況下這些功能是否還是正常;