單元 5 :軟體測試與驗證

Preview:

DESCRIPTION

單元 5 :軟體測試與驗證. Outline. Introduction Strategies Exercise. Testing. To demonstrate to the developer and the customer that software meets its requirement ( 是否合乎需求 ) - PowerPoint PPT Presentation

Citation preview

Software Engineering for Digital Home

單元 5 :軟體測試與驗證

Software Engineering for Digital Home

Outline

• Introduction• Strategies• Exercise

2

Software Engineering for Digital Home

Testing

• To demonstrate to the developer and the customer that software meets its requirement ( 是否合乎需求 )

• Testing is a fault detection technique that tries to create failures or erroneous states in a planned way.(Testing 就是試著弄壞系統找出 Bug)

3

Software Engineering for Digital Home

Test Stubs & Test Driver• Test Stubs: If the function A you are testing calls another

function B, then use a simplified version of function B, called a stub.( 虛構的程式方法 )

• Test driver – allows you to call a function and display its return values.( 可以啟動你的程式,並驗證回傳結果 )

4

int YourFunction(){

// 呼叫其他程式…

…}

YourFunction

YourOtherFunction

int YourOtherFunction(){

return 1;}

Test Stubint main() {

// 呼叫被測試程式…

// 驗證結果…

}

Test Driver

YourFunction

Software Engineering for Digital Home

Software Lift Cycle

5

Software Life Cycle

Development cycle

Design Implementation Testing

Maintenance

RequirementsEngineering

System Design

Object Design

RequirementsElicitation

Analysis

Testing Plan (Test case) Testing Report

Unit TestingIntegration

Testing System Testing

Software Engineering for Digital Home

Bug

• Fault – 又稱作 bug 或 defect ( 缺陷 ) ,是 design 或 coding錯誤導致反常的結果• Erroneous state – 有 fault 在系統執行中發生• Failure – 系統實際的行為與預計不同,通常由 1 個以上的

erroneous state 導致

6

Software

Design/Implement Time

Fault(Bug, Defect)

Software

Runtime Time

Erroneous state

System view User View

Software

Failure

Software Engineering for Digital Home

Testing

Software developer ( 程式開發者 )

Testing Strategies• Testing Plan – 包含測試相關資訊、測試種類、 test case 與測試進度 (IEEE 829)• Testing Report – 測試報告

7

Testing Plan( 測試計劃 )

Testing Report( 測試結果報告 )

Bug Report( 問題報告 )

Test Case Result( 試案案例的結果 )Test Case

( 試案案例 )

Unit Testing( 單元測試 )

Integration Testing( 整合測試 )

Independent testing team( 獨立測試小組 )

System Testing( 系統測試 )

Software Engineering for Digital Home

Bug Report

8

Software Engineering for Digital Home

Test Case

• 設計一個情況 (Condition) ,然而軟體程式在這種情況下,必須能夠正常運作並且達到程式所設計的執行結果 (Expect Result) 。

• 如果程式在這種情況下並不能正常運作,而且這種問題是能夠被重複產生的 (Reproducible) ,那表示軟體程式人員已經測出軟體有瑕疵 (Bug) ,這時候就必須將這個問題標示出來,並且輸入至問題追蹤系統 (Bug Tracking System) 內,通知軟體開發人員。

9

Software Engineering for Digital Home

Test Case Design

• 原則– Involves designing the test cases (inputs and outputs) used to

test the system.(設計測試案例要有輸入輸出 )

– Design inputs that cause buffers to overflow.(設計會產生 overflow的資料 )

– Force computation results to be too large or too small.(選擇很大與很小的資料去測試 )

• 方針– Equivalence Testing– Path Testing

10

Software Engineering for Digital Home

Requirement

11

Use case name 建立作業Participating actors

Initiated by 老師Communicates with 學生

Flow of events 1. 老師要建立作業2. 老師輸入作業的名稱 (50 字元 ), 作業的要求 (2000 字

元 ), 截止日期3. 系統檢查輸入的作業名稱 , 作業的要求 , 截止日期是否正確4. 如果正確 , 系統就建立止作業

Exceptions 3.1 如果所輸入的資料不正確 , 系統要求使用者重新輸入Entry condition 老師己登入教學網站Exit conditions 老師在教學網站上建立了一個新的作業

Software Engineering for Digital Home

Test Case

12

Title 建立作業Test Purpose 測試建立作業功能是否正確

Test Steps1. 輸入作業名稱 (50 字元 ) 、 作業說明 (2000 字元 ) 、截止日期後按下新增按鈕2. 顯示已新增作業的作業清單

Interface

Input Interface Output Interface

Software Engineering for Digital Home

Test Case – I/O Form

13

Items Input Output 是否正確作業名稱長度 1個字 A

作業名稱長度 25個字 25 個 A

作業名稱長度 50個字 50 個 A

作業說明長度 1個字 A

作業說明長度 1000個字 1000 個 A

作業說明長度 2000個字 2000 個 A

作業名稱未輸入作業名稱長度 51個字 51 個 B

作業說明未輸入作業說明長度 2001個字 2001 個 B

Software Engineering for Digital Home

Equivalence Testing• The program behaves in an equivalent way for equivalence

partition.( 同區塊的資料效力視為等價 )

• Test cases should be chosen from each partition.( 所有部份需要被選取 )

• Requirement :臨時帳號密碼的長度限定為 2-6 碼

141 2 4 6 7

帳號長度 < 2 帳號長度 >= 2 AND 帳號長度 <= 6 帳號長度 > 6

Boundary Boundary

Software Engineering for Digital Home

Path Testing

• Execute each possible path • Not practical with many nested conditionals• Impossible for most loops

15

Software Engineering for Digital Home

Path Testing

• 測試活動圖每一個可能路徑• 修改學生資料正確路徑

16

學生點選修改資料

顯示修改完成訊息

更新學生資料 寄發確認電子郵件

顯示修改學生資料表單輸入修改資料後送出

驗證學生資料

正確錯誤

Software Engineering for Digital Home

Path Testing

• 測試活動圖每一個可能路徑• 修改學生資料例外路徑

17

學生點選修改資料

顯示修改完成訊息

更新學生資料 寄發確認電子郵件

顯示修改學生資料表單輸入修改資料後送出

驗證學生資料

正確錯誤

Software Engineering for Digital Home

Unit Testing (Component Testing)

• Testing individual subsystems (collection of classes)

• Goal: Confirm that subsystem is correctly coded and carries out the intended functionality

18

SubsystemCode

System Design Document

Unit Test

Software Engineering for Digital Home

Unit Testing

19

1. 寫好一個物件的功能

2. 決定決定測試資料3. 開始測試 Test Case Validate

userID Return 測試結果 確認False False ○

C True True ○Bill True True ○

Office True False ×William False False ○

/* 帳號的長度限定為 1 到 6 個字元 */class system{

bool ValidateUserID(const char* userID){int num = strlen(userID);

return (num >= 1 )&& (num <= 5 );}

}

測試結果第四項目不符合表示程式有錯

Software Engineering for Digital Home

Integration Testing• Testing groups of subsystems and eventually the entire system

• Goal: Test interfaces between subsystems

20

SubsystemCode

System Design Document

Integration Test

SubsystemCode

SubsystemCode

Software Engineering for Digital Home

Integration Testing• Integration testing detects faults that have not been detected during unit

testing by focusing on small groups of components.(integration testing 測試的單位為一群 components)

• Two or more components are integrated and tested, and when no new faults are revealed, additional components are added to the group.( 先從兩個以上有關聯的 component 當作一個群組開始測試,該群組沒發現新bug 後才增加其他有關聯的 component 進入該群組 )

• Strategies– Bottom-Up Strategy– Top-Down Strategy– Sandwich Strategy

21

Software Engineering for Digital Home

Bottom-Up Strategy

• Strategy1. Start with subsystems in lowest layer of call hierarchy2. Test subsystems that call the previously tested subsystems3. Repeat until all subsystems are included

• Advantage– Interface faults can be more easily found.

( 開發者可控制一個 component ,掌握該 component 與相關底層component 的 inputs 、 outputs ,故容易從 component 的 interface找出 faults)

• Disadvantage– Faults found in the top layer may often lead to changes in the

subsystem interfaces of lower layers.( 越往頂層發現的錯誤牽連越廣,要修正的地方越多 ) 22

Software Engineering for Digital Home

Bottom-Up Strategy

23

MSSQLDatabase Server

ODBC/ADO

IISWeb Server

ASP UploadServer-UFTP Service

DMLApplication

DMLInterface

MSSQLDatabase Server

ODBC/ADO

Test

ASP Upload

IISWeb Server

Test

Server-UFTP Service Test

DMLApplication

DMLInterface

Test

Test

Software Engineering for Digital Home

Top-Down Strategy

• Strategy1. Start with subsystems in top layer of call hierarchy2. Include subsystems that are called by the previously tested subsystems3. Repeat until all subsystems are included Advantage

• Advantage– It starts with user interface components. Supports test cases for the

functionality of the system.( 由使用者觀點進行測試 )

• Disadvantage– The development of test stubs is time-consuming and prone to error.

( 製作一堆 test stub ,費時又容易發生錯誤 )

24

Software Engineering for Digital Home

Top-Down Strategy

25

MSSQLDatabase Server

ODBC/ADO

IISWeb Server

ASP UploadServer-UFTP Service

DMLApplication

DMLInterface

MSSQLDatabase Server

ODBC/ADO

Test

ASP Upload

IISWeb Server

Server-UFTP Service

DMLApplication

DMLInterface

Test

Test

Test

Software Engineering for Digital Home

Sandwich Strategy

• Combines top-down with bottom-up strategy

• Advantage– Many testing activities can be performed in parallel.

(Top-down 與 Bottom-up 可同時進行 )– It lead to a significantly shorter overall testing time than top-down or

bottom-up testing.(Sandwich strategy花費的測試時間比 Top-down或是 Bottom-up都短 )

• Disadvantage– It is the need for additional test stubs.

(依然會有製作 test stub 所產生的缺點 )26

Software Engineering for Digital Home

Sandwich strategy

27

MSSQLDatabase Server

ODBC/ADO

IISWeb Server

ASP UploadServer-UFTP Service

DMLApplication

DMLInterface

MSSQLDatabase Server

ODBC/ADO

Test

ASP Upload

IISWeb Server

Server-UFTP Service

DMLApplication

DMLInterface Test

Test

Test

Test

Software Engineering for Digital Home

System Testing• Testing the entire system

• System testing is a black-box technique.(黑箱測試的 test case 是根據 use case 而來 )

• Goal: Determine if the system meets the requirements (functional and non-functional)

28

RequirementsSpecification

SystemTest

EntireSystem

Software Engineering for Digital Home

Functional Testing• The goal of the tester is to select valid and invalid inputs that are relevant

to the user and have a high probability of uncovering a failure.( 測試人員要以使用者角度選用各種可能發現 failure 的 input 進行測試 )• Test cases are derived from the use cases. (test case依據 use case 而來 )• We do not consider implementation details. ( 不需了解實做細節,只管

inputs 與 results)• Impossible to generate all possible inputs

29

Input data

Expected

Invalid

Output data

Expected

Invalid

System1 12 2

334

4

Software Engineering for Digital Home

Non-functional Testing• Product testing

– Usability Testing– Performance Testing– Space Testing– Reliability Testing– Availability testing– Portability Testing

• Organisational testing– Delivery Testing– Implementation Testing– Standards Testing

• External Testing– Interoperability Testing– Ethical Testing– Privacy Testing– Safely Testing

• Configuration Testing

30

Software Engineering for Digital Home

Performance Testing

• Timing Testing(時間測試 )Response times and time to perform a function

• Stress Testing(壓力測試 )Stress limits of system (maximum number of users, peak demands)

• Recovery Testing(回復測試 )System’s response to presence of errors or loss of data

31

Software Engineering for Digital Home

Tools for performance testing• WAPT 4.0 http://www.loadtestingtool.com/• TestView http://www.radview.com/products/testview.asp• AdventNet QEngine Web Performance Test tool

http://www.adventnet.com/products/qengine/web-performance-test.html

32

Software Engineering for Digital Home

Exercises

• 試完成第 20張投影片 (Bottom-up)及第 22張投影片 (top-down)全部測試的順序• 請依照教學網站作業功能製作 I/O Form

• 至教學網站下載 testing plan 進行 system testing ,需使用 bugzilla 進行 bug report

33

Recommended