【成为一个优秀的软件测试工程师】
掌握軟件測試必備的技能
- 學習內容:
- 1.專業知識點
- 1.1 軟件功能測試技術
- 1.2 Web自動化測試的初級應用能力
- 1.3 接口測試的初級應用能力
- 1.4 App自動化
- 2.非專業知識點
- 2.1 Linux操作系統
- 2.2 Oracle數據庫
- 2.3 mysql數據庫
學習內容:
1.專業知識點
1.1 軟件功能測試技術
一、掌握:軟件需求規格說明書的評審,測試計劃,測試用例設計技術,環境搭建,測試執行(缺陷提交、回歸測試)、測試報告等。
1.測試用例設計技術(重點)
1) 測試用例八要素:用例編號,測試項目,測試標題,重要級別,預置條件,測試輸入,操作步驟,預期輸出
2) 關注需求是否發生變更,是否需要修改用例,或者新增測試用例
3)會參考需求文檔進行設計
4)概要設計(0、1級用例)、詳細設計
2.缺陷提交(重點)
1) Bug標題,Bug時間點,Bug描述,Bug出現步驟,附件(圖片,視頻),Bug嚴重程度(致命,嚴重,一般,提示),優先級(高,中,低)
例子:【RedmiXXX】【MIUI 12.0.6】【黑屏】【嚴重】【15:00附近】連續按三次音量下鍵,手機黑屏,后續使用熄屏鍵可以恢復
3.回歸測試
1)問題單流程:
問題提交人提交-----測試經理組審核----開發人員實施修改-----審核人員審核修改----歸檔-----測試經理組織測試------測試人員回歸測試
2)回歸測試(Regression testing):指在發生修改之后重新測試,先前的測試以保證修改的正確性。軟件產生新版本,都需要進行回歸測試,驗證以前發現和修復的錯誤是否在新軟件版本上再次出現。
3)實際操作:將開發人員實施修改好的bug,按照測試經理的測試策略,進行測試
4)回歸測試分兩種情況:回歸測試和多輪回歸測試
回歸測試:開發人員實施修改后,回歸測試通過,問題關閉
多輪回歸測試:開發人員實施修改后,回歸測試通過,問題在下幾個版本繼續測試。具體幾輪,看測試經理的測試意見。
5)小概率回歸和重新定級,都需要和測試經理商量
4.軟件需求規格說明書的評審
1)項目,項目經理,產品(需求)經理,測試人員,開發人員
2)需求文檔的目的:為了消除歧義,完善需求細節,最后達成共識
3)開發人員會根據需求文檔編寫概要設計文檔,測試人員會根據需求文檔編寫測試計劃和測試用例
4)如何評審需求文檔,需要做到六點:
一,正確性,對照用戶原始需求,檢查產品人員是否偏離需求
二,明確性,檢測文檔中是否用語清晰,明確,不存在歧義
三,完整性,檢查是否覆蓋了所有需求,是否存在遺漏
四,限制性,是否清楚描述,這個軟件能做什么,不能做什么
五,優先級,需求文檔中,哪些功能優先級高,是否做了標識和編號
六,一致性,檢查需求文檔中內容是否前后一致,不沖突,不矛盾
5)測試人員需要參與需求文檔的評審,正確理解其意思后,才能開始測試軟件是否達到需求文檔中的規格
5.測試計劃
1)人員安排、任務安排,進度安排
2)編寫測試策略。策略中包含:測試需求點分析,測試模塊劃分,測試整體的方向,風險的評估與規避措施,測試通過的準備等等
3)測試計劃的模板:一、文檔標識 二、測試目的 三、測試范圍 四、測試環境 五、測試策略 六、測試管理
6.環境搭建
1)測試環境的搭建:在測試環境部署待測軟件系統的過程
2)軟件環境,例如windows 10操作系統和IE11瀏覽器
硬件環境,例如計算機配置為酷睿i7的CPU、三星8GB的內存
3)B/S(browser/server)(瀏覽器/服務器)(重點)
B/S:使用瀏覽器訪問服務器的模式。首先通過瀏覽器發送請求,服務器接收請求后,響應請求。
前臺(用戶計算機):呈現給用戶的視覺和基本的操作。
后臺(Web服務器,數據庫服務器):用戶瀏覽網頁時,我們看不見的后臺數據跑動。后臺包括前端,后端。
前端:對應我們寫的html 、javascript 等網頁語言作用在前端網頁。
后端:對應jsp、javaBean 、dao層、action層和service層的業務邏輯代碼。(包括數據庫)
為什么jsp是后端呢?
主要是:jsp的運行原理----在tomcat服務器運行的。
4)C/S(Client/server)(客戶端/服務器)
C/S:在訪問服務器之前,通過在計算機上建立一個客戶端軟件,來進行訪問。
7.測試執行
1)查看郵件,群消息等等。分析是否存在,與自己測試模塊相關風險問題。
2)按照測試用例進行測試(按用例等級(0,1,2,3),按用例的模塊,按測試的模塊(界面功能,性能,安全性,易用性,兼容性))
))
冒煙測試:0,1級用例
門檻測試:2級及以上的用例
8.測試報告
1)測試報告中包含:人員,版本,范圍,測試方法,需求的變更,測試風險,測試結論等等。
2)測試報告是一份描述測試過程,測試范圍,測試環境,測試結果的文檔。用來分析總結系統存在的風險以及測試結論。
3)測試過程,測試過程,測試范圍,測試環境,測試結果,附件清單
二、掌握: 軟件測試的方法
1)從是否關注內部結構:
1、黑盒測試:又稱功能測試,是通過測試來檢測每個功能是否都能正常使用。所測試的軟件像是一個黑盒子,看不見內部結構。測試點是“軟件界面”和”軟件功能“。
2、白盒測試:又稱結構測試、基于代碼的測試。與黑盒測試相反,所測試的軟件像是一個白盒子,可以看內部結構,需要測試軟件產品的內部結構和處理過程,不需測試軟件產品的功能
2)測試設計方法:
等價類劃分法(將測試的范圍劃分成幾個互不相交的子集)
邊界值分析法(選出的測試用例,應選取正好等于、剛剛大于、剛剛小于邊界的值)
錯誤推測法(在測試程序時,人們可以根據經驗或直覺推測程序中可能存在的各種錯誤)
判定表法(適合于邏輯判斷復雜的場景,通過窮舉條件獲得結果,對結果再進行優化合并,會得到一個判斷清晰的策略)
正交實驗法(在各因素互相獨立的情況下,設計出一種特殊的表格,找出能以少數替代全面的測試用例)
狀態遷移法(主要關注在測試狀態轉移的正確性上面)
場景法(業務流把各個孤立的功能點串起來,建立整體業務感)
思維導視圖(使用思維導圖的方式,更直觀)
3)按階段分為:
1、單元測試(Unit Testing):
單元測試是最微小規模的測試,測試的是某個功能或代碼塊。由程序員而非測試員來做,因為它需要知道內部程序設計和編碼的細節知識。
2、集成測試(Integration Testing):
集成測試是指一個應用系統的各個部件的聯合測試,以決定他們能否在一起共同工作并沒有沖突。部件可以是代碼塊、獨立的應用、網絡上的客戶端或服務器端程序。這種類型的測試尤其與客戶服務器和分布式系統有關。一般集成測試以前,單元測試需要完成。它在單元測試以后和在系統測試之前。
3、系統測試(System Testing): (全面測試)(黑盒測試)
系統測試是將整個軟件系統看做一個整體進行測試,包括對功能、性能,以及軟件所運行的軟硬件環境進行測試。測試人員開始介入。
全面測試:6個測試方面,功能,性能,安全性,易用性,兼容性。
性能測試:測試軟件在不同環境和壓力下,能否正常使用,性能指標(響應時間,吞吐量,資源占用率)是否達到用戶需求的標準。
安全測試:是在軟件產品開發基本完成時,驗證產品是否符合安全需求定義和產品質量標準的過程。驗證安裝在系統內的保護機制能否在實際應用中對系統進行保護,使之不被非法入侵。提升IT產品的安全質量;度量安全。盡量在發布前找到安全問題予以修補降低成本;
4、驗收測試(Accept Testing):
驗收測試是基于最終用戶的規格書的最終測試,或基于用戶一段時間的使用后,看軟件是否滿足客戶要求。一般從功能、性能、用戶界面、業務關聯性進行測試。由用戶執行。
4)從測試所處的環境看
(1)阿爾法測試:是公司內部的其他部門員工在模擬實際操作環境下進行的測試
(2)貝塔測試:是公司組織的beta用戶在日常工作中實際使用貝塔版本進行的測試,并要求用戶報告
三、測試知識
功能測試:根據功能測試用例,逐項測試,必須覆蓋所有的功能模塊,檢查產品是否達到用戶要求的功能
性能測試:就是通過特定的方式對被測試系統按照一定測試策略施加壓力,獲取該系統的響應時間、TPS、吞吐量、資源利用率等性能指標,來檢測系統上線后能否滿足用戶需求的過程。
安全測試:是在軟件產品開發基本完成時,驗證產品是否符合安全需求定義和產品質量標準的過程。提升IT產品的安全質量;度量安全。盡量在發布前找到安全問題予以修補降低成本;
自動化測試:讓程序代替人為去驗證程序功能的過程。(1.代替人工,節約人力資源 2.提升回歸測試的效率 3.能更好地利用無人值守時間 4.復用性強)
弱網測試:模擬?個弱?環境,驗證在弱網情況下系統的表現是否能保證用戶體驗。
功能測試:如何進行功能測試?功能測試點?
如何進行功能測試?
1.界面(UI)測試,功能,性能,安全,易用,兼容,五個方面
功能測試點?
功能:軟件功能是否正確有效,功能邏輯清楚,每項功能符合實際要求,滿足了產品規格說明書的要求
性能:系統反應速度
安全性:保護用戶隱私和信息
易用性:使用的軟件功能邏輯清楚,是否有相應的提示框、適當的錯誤提示,使用方便操作簡單
兼容性:使用第三方產品進行測試
數據一致性:軟件升級后,能繼續支持舊版本的數據
性能測試:如何進行功能測試?
1.用工具去做性能測試 2.性能測試的場景布置 3.性能監控 4.性能分析與調優
性能測試中需要關注的數據有:請求數,平均響應時間,Min,Max響應時間,錯誤率,吞吐量beyt/s,bit/s,單位時間傳遞的數據。
自動化測試:如何進行自動化測試?
自動化測試是要在手工測試之后進行的,也就是回歸測試階段,并且經過前期功能測試,已經具備完善的功能測試用例,系統版本也已經比較穩定啦,這就具備了自動化測試的必要條件,下面需要完成幾個小任務:
如何進行自動化測試?
1)確認其可行性,是否可以實行測試自動化。滿足:1.軟件需求變動不頻繁 2.項目周期足夠長 3.自動化測試腳本可重復使用。
2)測試用例設計,篩選功能測試用例將其轉化為自動化用例模板補充、修改不適于自動化的用例,持續維護和優化自動化用例
1.考慮到腳本開發的成本,不要選擇流程太復雜的用例 2.選擇的用例最好可以構建成場景3.選取的用例可以是主體流程,這部分適用于冒煙測試 (注意:1.一個用例為一個完整的場景,從用戶登錄系統到最終退出并關閉瀏覽器 2.一個用例只驗證一個功能點,不要試圖在用戶登錄后把所有的功能都驗證一遍 3.一條用例完成測試之后需要對測試場景進行還原,以免影響其它用例的執行)
3)測試腳本開發,為了更好地團隊合作進行自動化測試,我們需要對項目進行分層管理,可以根據需要劃分公共模塊部分、測試用例、測試數據、測試報告、測試日志等,并提供執行主模塊。
4)測試執行階段,測試執行結束后,需要對測試結果進行比較、分析以及結果驗證,得出測試報告
5)測試總結階段,對測試結果文件中報告錯誤的記錄進行分析,如果確實是由于被測系統的缺陷導致,則提交缺陷報告。對自動化測試的結果進行總結,分析系統存在的問題,并提交《測試報告》。
如何進行接口測試?
弱網測試:如何進行弱網測試?弱網測試點?
如何進行弱網測試?
1.搭建弱網環境
模擬?個弱?環境即可??梢酝ㄟ^軟硬件?式兩種。
軟件?式利?模擬?絡參數來配置弱?環境,就可以達到?的。 fiddler
硬件方式,屏蔽儀,走到會議室,電梯,減弱網絡
2.根據功能測試用例在弱網環境下進行一輪測試,相同模塊下的功能可以分多個網絡條件進行測試
1)頁面圖片在弱網環境下加載不出來 (圖片加載邏輯需優化)、
2)頁面板式結構混亂 (模板文件在弱網環境的加載需優化)、
3)頁面響應時間較長沒有任何顯示 (頁面顯示邏輯優化、重試機制加入)
3.對照規格說明書,看是否能過保證用戶體驗
弱網測試點?
1.弱網環境下,功能是否能正常使用,高延時、高丟包
2.不同網絡下,2G,3G,4G,wifi,響應時間
3.無網狀態測試:斷網功能測試、本地數據存儲
4.用戶體驗關注:響應時間、頁面呈現&超時文案&超時重連、安全及大流量風險
兩個性能指標:丟包和延時
丟包:TCP協議中,需要不停的發送請求,來確認連接狀態,一旦發生丟包,就需要重傳。
延時:由于網絡太差,產生了網絡波動,導致數據包在傳輸的時候出現抖動。
上行是:延遲發送每上傳300毫秒,也就是客戶端發送請求到服務器
下行是:下載每KB延遲150毫秒,服務器下載速度
你打游戲和服務器的交互分為兩種,第一種是你向服務器同步你的信息,第二種是服務器給你同步其他玩家的信息。
第一種為上行,第二種為下行。
1.2 Web自動化測試的初級應用能力
一、熟悉HTML基礎
二、Xpath元素定位技術
1、八大元素定位(優先使用級):
1.id,name 2.link_text,partall_link_text(部分超鏈接本文) 3.css,xpath 基本不用. class_name,tag_name(難以保證唯一)
2、Xpath元素定位技術
相對路徑+部分屬性值定位
1.開頭 // start-with a.find_element(By.XPATH,“//[starts-with(@autocomplete,‘of’)]“).send_keys(“123”)
2.結尾 // substring a.find_element(By.XPATH,”//[substring(@autocomplete,2)=‘ff’]”).send_keys(“123”)
3.包含 // contains a.find_element(By.XPATH,“//*[contains(@autocomplete,‘ff’)]”).send_keys(“123”)
三、熟悉python面向對象的思想
1、類,對象。類指一類事物,對象指一類事物中的一個具體例子。例如:人(類),女人(對象)
2、類的調用,函數的調用
3、導入模塊
1)import:需要使用模塊名稱
2)form…import:可以不使用模塊名稱
四、selenium webdriver命令
1)修改瀏覽器窗口大小
driver.set_window_size(600, 800) #設置瀏覽器寬高為:600x800
maximize_window() #瀏覽器最大化
driver.back() #瀏覽器后退
driver.forward() #瀏覽器前進
driver.get(‘https://blog.csdn.net/’) # 進入瀏覽器
driver.refresh() #瀏覽器刷新
send_keys() #模擬輸入指定內容
clear() #清除文本內容
2)鼠標控制(ActionChains類)
click() #單擊左鍵
context_click() #單擊右鍵
double_click() #雙擊
drag_and_drop() #拖動
move_to_element() #鼠標懸停
source:鼠標拖動的元素
target:鼠標拖至并釋放的目標元素
source = driver.find_element_by_xpath(‘xxx’)# 定位要拖動的元素
target = driver.find_element_by_xpath(‘xxx’)# 定位目標元素
ActionChains(driver).drag_and_drop(source, target).perform()# 執行拖動動作
3)鍵盤控制(Keys 類)
driver.find_element_by_id(‘xxx’).send_keys(‘Dream丶killer’)# 定位輸入框并輸入文本
driver.find_element_by_id(‘xxx’).send_keys(Keys.ENTER)# 模擬回車鍵進行跳轉(輸入內容后)
driver.find_element_by_id(‘xxx’).send_keys(Keys.BACK_SPACE)# 使用 Backspace 來刪除一個字符
driver.find_element_by_id(‘xxx’).send_keys(Keys.CONTROL, ‘a’) # Ctrl + A 全選輸入框中內容
driver.find_element_by_id(‘xxx’).send_keys(Keys.CONTROL, ‘c’) # Ctrl + C 復制輸入框中內容
driver.find_element_by_id(‘xxx’).send_keys(Keys.CONTROL, ‘v’) # Ctrl + V 粘貼輸入框中內容
1.3 接口測試的初級應用能力
1、接口測試的流程
1)拿到接口文檔,分析接口文檔
2)設計測試用例
3)執行測試用例:(測試步驟:請求接口,然后取到返回值,判斷實際結果與預期結果是否一致)
4)提交Bug單
2、接口測試工具:postman,jmeter,filldder(抓包)
1)postman:模擬各種HTTP requests,get(查),post(增),delete(刪),put(改)
接口自動化,1)新建集合 2)新建接口 3)填寫斷言(自動化測試腳本) 4)錄入所有接口 5)執行自動化測試
常用的五種斷言:
1.斷言狀態碼:Status code: code is 200
2.斷言狀態消息:Status code:code name has string
3.斷言返回數據中是否存在某個元素:Response body contains string
4.斷言響應時間:Response time is less than 200ms
5.接口返回的數據進行斷言:Response body json value check
2)jmeter:基于java語言的壓力測試工具,可以做接口測試,也可以做性能測試。一般用于負載測試和壓力測試。
三大特色:
1.jmeter可以對靜態資源(js,html)以及動態資源(php,jsp,ajax)進行性能測試
2.可以挖掘出系統最大能處理的并發用戶數
3.提供了一系列各種形式的性能分析報告(圖形結果,聚合報告)
3)fidder:是位于客戶端和服務器之間的代理,強大的抓包工具??梢杂涗沜lient和server之間所有請求。
四大作用:
1.分析請求數據。(http請求/響應數據)
2.設置斷點。(調試線上錯誤)(可設置前/后斷點)
3.設置擋板服務器,自動返回各種響應。
4.過濾會話,看自己想看的請求。
1.4 App自動化
1.ANDROID_HOME 環境 和 JAVA_HOME 環境
2.啟動服務器 端口是 4723
3.啟動會話,放大鏡
4.編寫運行時,把參數和值輸入進去,可以使用可視化的界面輸入,也可以使用json輸入,
5.pycharm編寫腳本,1)導包 2)初始化Android的參數 平臺名字(Android/ios),版本 ,設備名,appPackage,appActivity,設置一些輸入法的開發,noReset(重置app)
adb shell dumpsys activity recents | find “intent={”(adb命令,查詢appPackage,appActivity路徑)
6.每次運行,手機都需要安裝uiautomator2 (UI優特美特)
2.非專業知識點
2.1 Linux操作系統
2.2 Oracle數據庫
2.3 mysql數據庫
總結
以上是生活随笔為你收集整理的【成为一个优秀的软件测试工程师】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python-opencv图像傅里叶变换
- 下一篇: 键盘录入多个数据,以0结束,要求在控制台