一猴鲫、軟件測試功能測試
測試用例編寫是軟件測試的基本技能对人;也有很多人認(rèn)為測試用例是軟件測試的核心;軟件測試中最重要的是設(shè)計(jì)和生成有效的測試用例拂共;測試用例是測試工作的指導(dǎo),是軟件測試的必須遵守的準(zhǔn)則姻几。
黑盒測試常見測試用例編寫方法
1宜狐、等價(jià)類
選取少數(shù)有代表性的數(shù)據(jù),這一類數(shù)據(jù)等價(jià)于這一類的其它值蛇捌;找出最小的子集抚恒,可以發(fā)現(xiàn)最多的錯(cuò)誤;特性:必須設(shè)計(jì)的用例络拌;涵蓋了大部分情況俭驮;
2、邊界值
所謂邊界條件,是指輸入和輸出等價(jià)類中那些恰好處于邊界混萝、超過邊界遗遵、或在邊界以下的狀態(tài) ;特征:選擇一個(gè)或多個(gè)元素逸嘀,以便等價(jià)類的每一個(gè)邊界都經(jīng)過了測試车要;與僅僅關(guān)注輸入條件不同,還需要考慮結(jié)果空間(輸出等價(jià)類)設(shè)計(jì)測試用例崭倘;
3翼岁、因果圖
輸入條件的組合進(jìn)行分析。用一個(gè)系統(tǒng)的方法選擇出高效的測試用例集司光;
分析思路:
a琅坡、分析規(guī)格說明描述,確定原因和結(jié)果残家,并賦予標(biāo)識符脑蠕;
b、分析規(guī)格說明語義跪削,找出原因與原因之間谴仙,原因與結(jié)果之間關(guān)系,畫出因果圖碾盐;
c晃跺、有些原因與原因之間,原因與結(jié)果之間組合不會(huì)出現(xiàn)毫玖,用記號表明約束或限制條件掀虎;
d、因果圖轉(zhuǎn)換為判定表付枫;
e烹玉、判定表的每一列作為依據(jù),設(shè)計(jì)測試用例阐滩;
4二打、判定表驅(qū)動(dòng)法
分析和表達(dá)多邏輯條件下執(zhí)行不同操作的情況的工具 ;略過因果圖的繪制掂榔,直接列出所有組合進(jìn)行篩選继效;
5、正交實(shí)驗(yàn)法
利用因果圖來設(shè)計(jì)測試用例時(shí), 輸入原因與輸出結(jié)果之間的因果關(guān)系,有時(shí)很難從軟件需求規(guī)格說明中得到装获;往往因果關(guān)系非常龐大,以至于測試用例數(shù)目巨大瑞信,為了有效地、合理地減少測試的工時(shí)與費(fèi)用,可利用正交實(shí)驗(yàn)設(shè)計(jì)方法進(jìn)行測試用例的設(shè)計(jì)穴豫。
6凡简、功能圖法
一個(gè)程序的功能包括靜態(tài)和動(dòng)態(tài)說明。動(dòng)態(tài)說明描述輸入數(shù)據(jù)的次序或轉(zhuǎn)移的次序,和業(yè)務(wù)流程緊密對應(yīng)秤涩。靜態(tài)說明描述了輸入輸出條件之間的對應(yīng)關(guān)系帜乞。對于面向市場的產(chǎn)品,其邏輯復(fù)雜溉仑、組合龐大挖函,必須用動(dòng)態(tài)說明來補(bǔ)充功能說明饥漫。 功能圖設(shè)計(jì)方法:功能圖方法使用功能圖形象地表示程序的功能說明摊溶,并機(jī)械地生成功能圖的測試用例焦人。我們在不同文檔中看到的“狀態(tài)遷移圖”邻储、“流程圖”壕鹉、“菜單樹”答渔,在一定程度上都是功能圖的不同表現(xiàn)养涮,不同測試人員可能對具體方法的使用稍有不同鸭丛。
7后频、場景實(shí)驗(yàn)法
現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的梳庆,事件觸發(fā)時(shí)的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流卑惜。該方法可以比較生動(dòng)地描繪出事件觸發(fā)時(shí)的情景膏执,有利于測試設(shè)計(jì)者設(shè)計(jì)測試用例,是測試用例更容易理解和執(zhí)行露久。
8更米、錯(cuò)誤推斷法
基于經(jīng)驗(yàn)和直覺推測程序中所有可能存在的各種錯(cuò)誤,從而有針對性的設(shè)計(jì)測試用例的方法;更多的與用戶的使用習(xí)慣及測試程序中的常見問題為主毫痕。
9征峦、需求轉(zhuǎn)化
根據(jù)需求,執(zhí)行需求分析消请,并編寫測試用例栏笆。
10、設(shè)計(jì)文檔
參照設(shè)計(jì)文檔臊泰,可以理解軟件系統(tǒng)內(nèi)部設(shè)計(jì)流程及處理機(jī)制蛉加,對比寫好的測試用例,可以在對應(yīng)功能及模塊處新增因宇;
11七婴、探索式測試
無限創(chuàng)意的測試點(diǎn),永無止境的探索測試察滑;我們要在測試的最前沿發(fā)揮洞察力、技術(shù)及應(yīng)變措施修肠,找出產(chǎn)品的缺陷贺辰;
二、軟件測試接口測試
1、什么是接口測試饲化?
接口測試是測試系統(tǒng)組件間接口的一種測試莽鸭。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測試的重點(diǎn)是要檢查數(shù)據(jù)的交換吃靠,傳遞和控制管理過程硫眨,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
2巢块、為什么要做接口測試?
a) 如今的系統(tǒng)復(fù)雜度不斷上升礁阁,傳統(tǒng)的測試方法成本急劇增加且測試效率大幅下降,接口測試可以提供這種情況下的解決方案族奢。
b) 接口測試相對容易實(shí)現(xiàn)自動(dòng)化持續(xù)集成姥闭,且相對UI自動(dòng)化也比較穩(wěn)定,可以減少人工回歸測試人力成本與時(shí)間越走,縮短測試周期棚品,支持后端快速發(fā)版需求。接口持續(xù)集成是為什么能低成本高收益的根源廊敌。
c) 現(xiàn)在很多系統(tǒng)前后端是分離的铜跑,從安全層面來說:
1)、只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過前面實(shí)在太容易)骡澈, 需要后端同樣進(jìn)行控制锅纺,在這種情況下就需要從接口層面進(jìn)行驗(yàn)證。
2)秧廉、前后端傳輸伞广、日志打印等信息是否加密傳輸也是需要驗(yàn)證的,特別是涉及到用戶的隱私信息疼电,如身份證嚼锄,銀行卡等。
3蔽豺、如何做接口測試
a区丑、根據(jù)后端開發(fā)提供的接口測試文檔進(jìn)行接口測試驗(yàn)證
如圖:
然后根據(jù)接口文檔輸入url,參數(shù)修陡,查看響應(yīng)是否正確
b沧侥、在沒有接口文檔的情況下,使用抓包工具進(jìn)行接口數(shù)據(jù)抓取魄鸦,抓包工具:fiddler
三宴杀、軟件測試性能測試
1、性能測試領(lǐng)域分析
根據(jù)對項(xiàng)目背景拾因,業(yè)務(wù)的了解旺罢,確定本次性能測試要解決的問題點(diǎn)旷余;是測試系統(tǒng)能否滿足實(shí)際運(yùn)行時(shí)的需要,還是目前的系統(tǒng)在哪些方面制約系統(tǒng)性能的表現(xiàn)扁达,或者正卧,哪些系統(tǒng)因素導(dǎo)致
系統(tǒng)無法跟上業(yè)務(wù)發(fā)展?確定測試領(lǐng)域跪解,然后具體問題具體分析炉旷。
2、用戶場景剖析和業(yè)務(wù)建模
根據(jù)對系統(tǒng)業(yè)務(wù)叉讥、用戶活躍時(shí)間窘行、訪問頻率、場景交互等各方面的分析节吮,整理一個(gè)業(yè)務(wù)場景表抽高,當(dāng)然其中最好對用戶操作場景、步驟進(jìn)行詳細(xì)的描述透绩,為測試腳本開發(fā)提供依據(jù)翘骂。
3、確定性能目標(biāo)
前面已經(jīng)確定了本次性能測試的應(yīng)用領(lǐng)域帚豪,接下來就是針對具體的領(lǐng)域關(guān)注點(diǎn)碳竟,確定性能目標(biāo)(指標(biāo));
比如:
①登錄請求到登錄成功的頁面響應(yīng)時(shí)間不能超過2秒狸臣;
②報(bào)表審核提交的頁面響應(yīng)時(shí)間不能超過5秒莹桅;
③文件的上傳、下載頁面響應(yīng)時(shí)間不超過8秒烛亦;
4诈泼、性能測試腳本的編寫
性能測試工具:loadrunner、jmeter
這里使用jmeter煤禽,因?yàn)閘oadrunner安裝包太大不夠輕便铐达。
jmeter性能測試,就是通過接口對服務(wù)器進(jìn)行高并發(fā)訪問的檬果,所以腳本的編寫的就和接口測試的時(shí)候差不多瓮孙,輸入url,參數(shù)等选脊,
四杭抠、軟件測試自動(dòng)化測試
1、ui自動(dòng)化測試
a恳啥、web端ui自動(dòng)化測試偏灿、一般是使用python+selenium,定位頁面元素然后通過瀏覽器驅(qū)動(dòng)钝的,模擬人進(jìn)行頁面操作菩混,實(shí)現(xiàn)web端ui自動(dòng)化測試
b忿墅、移動(dòng)端ui自動(dòng)化測試扁藕、一般是使用python+appium沮峡,通過調(diào)用Android的jdk,獲取app頁面元素亿柑,模擬人進(jìn)行app操作邢疙,實(shí)現(xiàn)移動(dòng)端ui自動(dòng)化測試
2、接口自動(dòng)化測試
接口自動(dòng)化測試一般使用的是python+requests望薄,或者h(yuǎn)ttpx疟游。這里博主使用的requests,因?yàn)楸容^簡單痕支。簡單的例子颁虐,如圖:
[](javascript:void(0);)