[軟件構造] 軟件測試用例與測試優(yōu)先

資料來源:軟件構造PPT

軟件測試與測試優(yōu)先

PART Ⅰ 測試相關知識點

Q:為什么要測試迄薄?

測試能夠發(fā)現(xiàn)程序中的錯誤风罩,提高程序正確性的信心。

Q:測試需要注意哪些點隐岛?

  • 正確性
  • 需求是否滿足spec
  • 對所有輸入能否正確相應(robustness)
  • 性能能否接受史飞,運行時間能夠接受
  • 是否可用
  • 能否正確的安裝部署和運行
  • 能否實現(xiàn)期望

Q:一個好的測試具有哪些特征尖昏?

  • 能夠發(fā)現(xiàn)錯誤
  • 不冗余
  • 能夠最佳測試要測試的函數(shù)
  • 不是太復雜也不是太簡單

Q:測試的等級有哪些?

  • 最底層:單元測試构资,測試功能函數(shù)

  • 中間層:集成測試抽诉,對于多個類、包吐绵、組件的集中測試

  • 頂層:系統(tǒng)測試迹淌,測試一個完整的系統(tǒng)

  • 回退:回歸測試,重復迭代

    image
  • 最終交付:驗收測試

    image

Q:靜態(tài)測試與動態(tài)測試區(qū)別己单?

  • 靜態(tài)測試不會實際的運行代碼

    ? 靜態(tài)測試常常是內部運行的唉窃,比如在代碼工具/文本編輯器中會檢查代碼的結構或者編譯器檢查語法和數(shù)據(jù)流。

  • 動態(tài)測試測試代碼運行的表現(xiàn)纹笼,也就是會在測試用例中真正的跑起來

    在代碼未完全實現(xiàn)之前纹份,動態(tài)檢查會檢查特定的代碼段,現(xiàn)在用來動態(tài)測試的技術要么是驅動或者在debug環(huán)境中執(zhí)行。

Q:測試和調試的區(qū)別(testing vs. debugging)蔓涧?

  • 測試是用來發(fā)現(xiàn)是否存在錯誤
  • 調試是用來識別錯誤根源件已,消除錯誤

PART Ⅱ 軟件測試用例選擇

接下來就要說一下軟件測試了。

Q:為什么說軟件測試很難元暴?

  • 行為在離散輸入空間中差異巨大篷扩,輸入并不符合統(tǒng)計學規(guī)律。bug的出現(xiàn)不符合概率分布昨寞。
  • 在錯誤發(fā)生時瞻惋,輸入無統(tǒng)計分布規(guī)律可循
  • 暴力窮舉是不可能的

所以說,軟件測試用例必須要慎重和系統(tǒng)的選擇

Q:測試用例是什么東西援岩?

測試用例是一個測試輸入歼狼、執(zhí)行條件、預期結果的集合享怀。測試用例是你項目中有價值的資產羽峰!

Q:測試用例的設計原則?

  • 有代表性
  • 明確性添瓷,有明確的結果
  • 可重復性梅屉,同一case,同一結果

PART Ⅲ 測試優(yōu)先編程

Q:什么叫測試優(yōu)先編程鳞贷?

在你寫代碼之前坯汤,先把測試寫好

Q:具體的流程應該是什么?

  • 先寫spec
  • 再寫符合spec的測試用例
  • 寫代碼 --> 執(zhí)行測試 --> 修改 搀愧,重復

Q:SPEC怎么寫惰聂?

  • 給輸入的參數(shù)類型和約束條件,比如平方函數(shù)不能是負的咱筛。
  • 給出返回值和以及返回值和輸入之間關系
  • spec也包括方法的特點和有關它是用來干啥的評述

當然搓幌,SPEC是不可能一次就寫好的,所以我們得寫測試用例迅箩,寫測試用例溉愁,可以理解、修正饲趋、完善spec設計拐揭。

Q:先寫測試還是后寫呢?

題目叫什么奕塑?堂污?當然是先寫

Q:什么叫測試驅動開發(fā)?

測試驅動開發(fā)(TDD)爵川,就是以測試驅動開發(fā)敷鸦。先寫需求息楔,再寫測試寝贡,然后編程實現(xiàn)通過測試扒披,循環(huán)。短平快圃泡,跟之前先編碼碟案,后來發(fā)現(xiàn)對不上需求的編碼方式相反。

PART Ⅳ 單元測試 Unit Test

Q:什么叫單元測試颇蜡?

針對軟件最小單元模型開展測試价说,隔離各個模塊,容易定位錯誤和調試

Q:那么單元測試要考慮哪些情況呢风秤?

  • 模塊的接口鳖目,確保數(shù)據(jù)流正確的輸入和輸出。
  • 本地的數(shù)據(jù)結構缤弦,確保在經(jīng)過算法計算后結構不會變领迈。
  • 各個獨立分支,確保所有控制結構碍沐,條件分支都能測試到狸捅。
  • 邊界條件,不多說了累提。
  • 針對錯誤的解決方法尘喝。

Q:有沒有自動測試工具?

有斋陪,JUnit朽褪,測試文件要單獨放在test文件夾下.使用assert語句來判斷。

image

PART Ⅴ 黑盒測試(重要)

Q:什么是黑盒測試鳍贾?
黑盒測試不關心代碼如何實現(xiàn)鞍匾,只檢查代碼的功能。

ⅰ以劃分來選擇測試用例

Q:什么叫等價類劃分骑科?
將函數(shù)的輸入域劃分為等價類橡淑,從等價類中導出測試用例。其中根據(jù)每個輸入所需要滿足的約束條件咆爽,劃分等價類梁棠。每一個等價類都代表著對約束加以滿足/違反/無效的數(shù)據(jù)集合。

Q:等價類劃分的一般規(guī)則斗埂?

  • 輸入數(shù)據(jù)限定了范圍符糊,那么就會產生一個合法域和兩端的非法域。
  • 輸入數(shù)據(jù)指明了特定的值呛凶,那么就會產生一個合法值和一個非法值男娄。
  • 輸入數(shù)據(jù)確定了一組數(shù)據(jù),那么就有一組合法和一組非法數(shù)據(jù)。
  • 輸入數(shù)據(jù)為yes | no模闲,我不說了建瘫。

:輸入學號

  1. 長度為10位,:10尸折、>10啰脚、<10
  2. 117開頭:以此開頭、以其他開頭
  3. 后兩位數(shù)為特定數(shù)字

Q:對于數(shù)字測試如何劃分实夹?

  • 根據(jù)約束
  • 考慮很大的數(shù)

multiply()函數(shù)

約束
產生的劃分

每個劃分內選一個就足夠代表了

max()函數(shù)

max函數(shù)

練習:

String
image

ⅱ 在劃分中包含邊界

  • 大量的錯誤發(fā)生在輸入域的邊界而非中央

    • 0是正負的邊界
    • 最大數(shù)MAX和最小數(shù)MIN對于int和double是邊界
    • 空對象(empty string橄浓、empty list、 empty array)對于collection是邊界
    • collection的第一個和最后一個是邊界
  • BVA(boundary value analysis)是測試技巧亮航,在邊界中選擇測試用例

  • 邊界值分析方法是對等價類劃分方法的補充

  • 在考慮邊界劃分時荸实,不僅要考慮邊界,還要考慮邊界的兩側

邊界測試的例子:

邊界測試

邊界測試加上劃分例子:

邊界加劃分

邊界測試例子max函數(shù)

image

ⅲ 兩種極端的劃分

  • 笛卡兒積:全覆蓋

    在多個維度劃分的多個取值缴淋,全部組合起來泪勒,每個組合都要有一個用例。

  • 覆蓋每個取值宴猾,最少1次即可

    在每個維度選擇至少一個用例圆存,但不需要測試所有的組合。

兩者的區(qū)別:

前者測試完備仇哆,但數(shù)量多沦辙,測試代價高。后者測試用例少讹剔,代價低油讯,但覆蓋度未必高。

PART Ⅵ 白盒測試

白盒測試要考慮內部實現(xiàn)的細節(jié)延欠,使用內部視角來編寫測試用例陌兑。根據(jù)程序執(zhí)行的路徑設計測試用例,一般較早執(zhí)行由捎。也就是說兔综,白盒測試需要覆蓋被測代碼的所有路徑

ⅰ 代碼覆蓋度

代碼覆蓋度有很多不同的種類

  • 函數(shù)覆蓋:測試的函數(shù)是否被調用
  • 語句覆蓋:每條語句是否被執(zhí)行
  • 分支覆蓋:if while for的每個分支,正確或錯誤分支是否都被執(zhí)行
  • 條件覆蓋:同上
  • 路徑覆蓋:程序的每條執(zhí)行路徑path(各種執(zhí)行路線)是否 被用例覆蓋

測試效果:

? 路徑覆蓋 > 分支覆蓋 > 語句覆蓋

當然……測試難度也是這樣從高到低

推薦工具:EclEmma

PART Ⅶ 自動測試與回歸測試

? 事實上狞玛,手工測試的代價太高软驰,最好達到完全的自動化

自動測試

? 意思為自動調用被測函數(shù)、自動判定測試結果心肪、自動計算覆蓋度锭亏。這里只是指測試用例的自動執(zhí)行,而不是自動生成測試用例硬鞍。

回歸測試

? 一旦程序被修改慧瘤,重新執(zhí)行之前的所有測試戴已。在這里

  • 一旦發(fā)現(xiàn)bug,馬上寫一個可以重現(xiàn)bug的輸入的測試用例锅减,并將其加入測試庫
  • 自動測試和回歸測試幾乎都用在合并代碼構建中
  • 自動化回歸測試是現(xiàn)代軟件工程中的最佳實踐方式

PART Ⅷ 編寫測試策略

在ADT設計文檔中恭陡,單元測試策略是非常重要的一環(huán)。寫它的目的是在代碼評審中上煤,讓其他人可以理解你的測試,檢查你的測試是否足夠充分著淆。

比如劫狠,在測試函數(shù)時,在測試類頂部寫下測試策略永部,在每個測試函數(shù)上寫下它的測試用例是怎么選擇的独泞,也就是這個測試覆蓋了哪些劃分類。

策略

本章小結

  • 測試優(yōu)先編程苔埋。
  • 劃分和邊界懦砂,能夠系統(tǒng)的選擇測試用例
  • 白盒測試和statement覆蓋來填充測試
  • 單元測試,使得每個測試盡可能獨立不耦合
  • 自動回歸測試
  • 免于遭受bug
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末组橄,一起剝皮案震驚了整個濱河市荞膘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玉工,老刑警劉巖羽资,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遵班,居然都是意外死亡屠升,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門狭郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腹暖,“玉大人缘圈,你說我怎么就攤上這事睦尽。” “怎么了探熔?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵亩鬼,是天一觀的道長以蕴。 經(jīng)常有香客問我,道長辛孵,這世上最難降的妖魔是什么丛肮? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮魄缚,結果婚禮上宝与,老公的妹妹穿的比我還像新娘焚廊。我一直安慰自己,他們只是感情好习劫,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布咆瘟。 她就那樣靜靜地躺著,像睡著了一般诽里。 火紅的嫁衣襯著肌膚如雪袒餐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天谤狡,我揣著相機與錄音灸眼,去河邊找鬼。 笑死墓懂,一個胖子當著我的面吹牛焰宣,可吹牛的內容都是我干的。 我是一名探鬼主播捕仔,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼匕积,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了榜跌?” 一聲冷哼從身側響起闪唆,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钓葫,沒想到半個月后苞氮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡瓤逼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年笼吟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霸旗。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡贷帮,死狀恐怖,靈堂內的尸體忽然破棺而出诱告,到底是詐尸還是另有隱情撵枢,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布精居,位于F島的核電站锄禽,受9級特大地震影響,放射性物質發(fā)生泄漏靴姿。R本人自食惡果不足惜沃但,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佛吓。 院中可真熱鬧宵晚,春花似錦垂攘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逸贾,卻和暖如春陨仅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铝侵。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工灼伤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哟沫。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像锌介,于是被迫代替她去往敵國和親嗜诀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程孔祸、活動和任務的結構性框架隆敢。軟件項目的開發(fā)包括:需求、設...
    宇文臭臭閱讀 6,725評論 5 100
  • 測試計劃和測試用例 1.測試計劃及缺陷管理 1.1.測試計劃 測試計劃是在測試設計階段崔慧,在需求規(guī)格說明書的基礎上制...
    方步閱讀 6,477評論 1 7
  • 一拂蝎、 軟件測試基本概念 1 bug的概念 bug類型:defect、fault惶室、problem温自、error… pr...
    三口一個瓜閱讀 3,688評論 0 12
  • 參考https://www.cnblogs.com/dulijuan/p/4474657.htmlhttps://...
    Helen_Cat閱讀 4,578評論 0 28
  • 測試用例的內容:用例編號、用例標題皇钞、重要級別悼泌、預置條件、測試輸入夹界、操作步驟馆里、預期結果、測試結果可柿、作者鸠踪。 黑盒測試用...
    CT9955閱讀 4,011評論 0 31