76
1 CNPM CÔNG NGH CÔNG NGH PH PH N M N M M M Chương Chương 8 8 Ki Ki m th m th ph ph n m n m m m MÔN HC TRƯỜNG ĐẠI HC CÔNG NGHIP TP.HCM

Cnpm c8 Kiemthupm Trang

  • Upload
    vu-quoc

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cnpm c8 Kiemthupm Trang

1CNPM

CÔNG NGHCÔNG NGHỆỆ PHPHẦẦN MN MỀỀMM

Chương Chương 88

KiKiểểm thm thửử phphầần mn mềềmm

MÔN HỌC

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM

Page 2: Cnpm c8 Kiemthupm Trang

2CNPM

NNộội dungi dung

1.1. ChiChiếến lưn lượợc kic kiểểm thm thửử (Testing Strategy)(Testing Strategy)2.2. KKỹỹ thuthuậật kit kiểểm thm thửử phphầần mn mềềm (Software Testing m (Software Testing

Techniques)Techniques)

Page 3: Cnpm c8 Kiemthupm Trang

3CNPM

KiKiểểm chm chứứng vng vàà ththẩẩm đm địịnh bao gnh bao gồồm kim kiểểm thm thửửphphầần mn mềềm m KiKiểểm chm chứứng (Verification): ng (Verification): ““ChChúúng ta đang ng ta đang xây dxây dựựng sng sảản phn phẩẩm theo đm theo đúúng cng cáách"ch"

PhPhầần mn mềềm phm phảải phi phùù hhợợp vp vớới đi đặặc tc tảả ccủủa na nóó

ThThẩẩm đm địịnh (Validation):nh (Validation): ““ChChúúng ta đang xây ng ta đang xây ddựựng sng sảản phn phẩẩm đm đúúng"ng"

PhPhầần mn mềềm phm phảải thi thựực hic hiệện nhn nhữững gng gìì ngư ngườời di dùùng thng thậật t ssựự ccầầnn

KiKiểểm chm chứứng vng vàà ththẩẩm đm địịnh (V&V)nh (V&V)

Page 4: Cnpm c8 Kiemthupm Trang

4CNPM

KiKiểểm thm thửử phphầần mn mềềmm

Testing is the process of exercising aTesting is the process of exercising aprogram with the specific intent of program with the specific intent of finding errorsfinding errors prior to prior to (t(trưrướớc khi) c khi) deliverydelivery to the end user.to the end user.

Page 5: Cnpm c8 Kiemthupm Trang

5CNPM

What Testing ShowsWhat Testing Shows

errorserrors

requirements conformancerequirements conformance

performanceperformance

an indicationan indicationof qualityof quality

Page 6: Cnpm c8 Kiemthupm Trang

6CNPM

Who Tests the Software?Who Tests the Software?

developerdeveloper independent testerindependent tester

Understands the system Understands the system but, will test "gently"but, will test "gently"and, is driven by "delivery"and, is driven by "delivery"

Must learn about the system,Must learn about the system,but, will attempt to break itbut, will attempt to break itand, is driven by qualityand, is driven by quality

Page 7: Cnpm c8 Kiemthupm Trang

7CNPM

1. Chi1. Chiếến lưn lượợc kic kiểểm thm thửửunit testunit test integrationintegration

testtest

validationvalidationtesttest

systemsystemtesttest

Page 8: Cnpm c8 Kiemthupm Trang

8CNPM

ChiChiếến lưn lượợc kic kiểểm thm thửử

BBắắt đt đầầu vu vớớii ‘‘testingtesting--inin--thethe--smallsmall’’ rrồồi tii tiếến tn tớớii ‘‘testingtesting--inin--thethe--largelarge’’VVớới phi phầần mn mềềm truym truyềền thn thốốngng

KiKiểểm thm thửử module module (component)(component)KiKiểểm thm thửử ttíích hch hợợp modulep module

VVớới phi phầần mn mềềm hưm hướớng đng đốối tưi tượợngngKhi bKhi bắắt đt đầầuu ““testing in the smalltesting in the small”” ththìì ttậập trung vp trung vàào lo lớớp (classs) p (classs) mmàà chchứứa thua thuộộc tc tíính vnh vàà phương th phương thứức, c, liên quan đliên quan đếến truyn truyềền thông n thông vvàà ccộộng tng táácc

Page 9: Cnpm c8 Kiemthupm Trang

9CNPM

CCáác công vic công việệc cc cầần thin thiếết trong Chit trong Chiếến lưn lượợcc

XXáác đc địịnh rõ rnh rõ rààng cng cáác đc đốối tưi tượợng king kiểểm thm thửửHiHiểểu biu biếết vt vềề ngư ngườời di dùùng phng phầần mn mềềm vm vàà ttạạo ra mo ra mộột tit tiềền sn sửử (profile) (profile) cho mcho mỗỗi loi loạại ngưi ngườời di dùùngngXây dXây dựựng mng mộột kt kếế hohoạạch kich kiểểm thm thửử mmàà nhnhấấn mn mạạnh tnh tớới i ““rapidrapid cycle cycle testingtesting””Xây dXây dựựng phng phầần mn mềềm cm cóó ttíính khnh khááng lng lỗỗi cao di cao dùùng cho king cho kiểểm thm thửửDDùùng king kiểểm tra km tra kỹỹ thuthuậật ht hìình thnh thứức như lc như làà mmộột bt bộộ llọọc trưc trướớc khi kic khi kiểểm m ththửửĐĐềề ra nhra nhữững king kiểểm tra km tra kỹỹ thuthuậật ht hìình thnh thứức đc đểể đ đáánh ginh giáá chichiếến lưn lượợc c kikiểểm thm thửử vvàà ccáác test casec test casePhPháát trit triểển mn mộột hưt hướớng cng cảải tii tiếến liên tn liên tụục cho qui trc cho qui trìình kinh kiểểm thm thửử

Page 10: Cnpm c8 Kiemthupm Trang

10CNPM

MMộột chit chiếến thun thuậật kit kiểểm nghim nghiệệm phm phổổ bibiếến (V)n (V)

Hệ thống Kiểm thử hệ thống

Yêu cầu

Thiết kế

Mã hóa Kiểm Thử đơn vị (module)

Kiểm thử tích hợp

Kiểm thử thẩm tra

Page 11: Cnpm c8 Kiemthupm Trang

11CNPM

KiKiểểm thm thửử đơn v đơn vịị

modulemoduleto beto be

testedtested

test casestest cases

resultsresults

softwaresoftwareengineerengineer

Page 12: Cnpm c8 Kiemthupm Trang

12CNPM

KiKiểểm thm thửử đơn v đơn vịị

interface interface local data structureslocal data structuresboundary conditionsboundary conditionsindependent pathsindependent pathserror handling pathserror handling paths

modulemoduleto beto be

testedtested

test casestest cases

Page 13: Cnpm c8 Kiemthupm Trang

13CNPM

Môi trưMôi trườờng king kiểểm thm thửử đơn v đơn vịị

ModuleModule

stubstub stubstub

driverdriver

interface interface

local data structureslocal data structures

boundary conditionsboundary conditions

independent pathsindependent paths

error handling pathserror handling paths

RESULTSRESULTS

test casestest cases

Page 14: Cnpm c8 Kiemthupm Trang

14CNPM

ChiChiếến lưn lượợc kic kiểểm thm thửử ttíích hch hợợppChChọọn ln lựựa:a:

•• HưHướớng ting tiếếp cp cậậnn ““big big bangbang””•• ChiChiếến lưn lượợc xây dc xây dựựng gia tăngng gia tăng

Page 15: Cnpm c8 Kiemthupm Trang

15CNPM

TTíích hch hợợp Topp Top DownDown

top module is tested with top module is tested with stubsstubs

stubs are replaced one at stubs are replaced one at a time, "depth first"a time, "depth first"

as new modules are integrated, as new modules are integrated, some subset of tests is resome subset of tests is re--runrun

AA

BB

CC

DD EE

FF GG

Page 16: Cnpm c8 Kiemthupm Trang

16CNPM

TTíích hch hợợp Bottomp Bottom--UpUp

drivers are replaced one at a drivers are replaced one at a time, "depth first"time, "depth first"

worker modules are grouped into worker modules are grouped into builds and integratedbuilds and integrated

AA

BB

CC

DD EE

FF GG

clustercluster

Page 17: Cnpm c8 Kiemthupm Trang

17CNPM

KiKiểểm thm thửử SandwichSandwich

Top modules areTop modules aretested with stubstested with stubs

Worker modules are grouped into Worker modules are grouped into builds and integratedbuilds and integrated

AA

BB

CC

DD EE

FF GG

clustercluster

Page 18: Cnpm c8 Kiemthupm Trang

18CNPM

KIỂM THỬ HỒI QUY (regression)

1. Việc kết hợp các module lại với nhau có thể ảnh hưởngđến vòng lặp điều khiển, cấu trúc dữ liệu hay I/O chia sẻtrong một số module

2. Điều đó làm lộ ra một số lỗi không thể phát hiện được khitiến hành kiểm nghiệm theo đơn vị

3. Kiểm nghiệm hồi quy có thể được tiến hành thủ côngbằng cách thực hiện lại các test-case đã tạo ra. Hoặc cóthể dùng một công cụ capture-playback để thực hiện tựđộng

Page 19: Cnpm c8 Kiemthupm Trang

19CNPM

KiKiểểm thm thửử hư hướớng đng đốối tưi tượợngng

BBắắt đt đầầu bu bằằng cng cáách đch đáánh ginh giáá ssựự đ đúúng đng đắắn vn vàà totoààn vn vẹẹn n ccủủa mô ha mô hìình OOA va OODnh OOA va OODThay đThay đổổi chii chiếến lưn lượợc kic kiểểm thm thửử so vso vớới trưi trướớc đâyc đây

KhKháái nii niệệm m ‘‘unitunit’’ViViệệc tc tíích hch hợợp tp tậập trung vp trung vàào lo lớớp vp vàà ththựực thi qua mc thi qua mộột tit tiếến n trtrìình (thread) hay ngnh (thread) hay ngữữ ccảảnh cnh củủa ma mộột kt kịịch bch bảản đưn đượợc dc dùùngngViViệệc thc thẩẩm đm địịnh snh sửử ddụụng phương phng phương phááp blackboxp blackbox

ThiThiếết kt kếế test case theo phương ph test case theo phương phááp cp cũũ nhưng ph nhưng phảải bao i bao ggồồm thêm nhm thêm nhữững đng đặặc trưng mc trưng mớớiiKiKiểểm thm thửử mô hmô hìình CRCnh CRC

Page 20: Cnpm c8 Kiemthupm Trang

20CNPM

ChiChiếến lưn lượợc trong OOTc trong OOT

KiKiểểm thm thửử llớớp (unitp (unit testing)testing)KiKiểểm thm thửử ttáác vc vụụ (operations)(operations)KiKiểểm tra hm tra hàành vi, trnh vi, trạạng thng tháái ci củủa la lớớpp

KiKiểểm thm thửử ttíích hch hợợppthreadthread--based based testingtesting —— integratesintegrates the set of the set of classes required to respond to one input or eventclasses required to respond to one input or eventuseuse--based based testingtesting —— integratesintegrates the set of classes the set of classes required to respond to one use caserequired to respond to one use casecluster cluster testingtesting (ki(kiểểm thm thửử ccụụm) m) —— integratesintegrates the the set of classes required to demonstrate one set of classes required to demonstrate one collaborationcollaboration

Page 21: Cnpm c8 Kiemthupm Trang

21CNPM

KiKiểểm thm thửử SmokeSmokeMMộột hưt hướớng thông dng thông dụụng cho ving cho việệc tc tạạoo ““daily buildsdaily builds””cho scho sảản phn phẩẩm phm phầần mn mềềmmCCáác bưc bướớc kic kiểểm thm thửử Smoke:Smoke:

NhNhữững thng thàành phnh phầần phn phầần mn mềềm đưm đượợc thc thểể hihiệện dưn dướới i ddạạng mã đưng mã đượợc tc tíích hch hợợp thp thàành mnh mộột t ‘‘buildbuild’’ (ki(kiểểu kiu kiếến n trtrúúc)c)

MMộột build bao gt build bao gồồm tm tấất ct cảả ccáác file dc file dữữ liliệệu, u, thư vithư việện, n, nhnhữững module sng module sửử ddụụng lng lạại vi vàà nhnhữững thng thàành phnh phầần kn kỹỹnghnghệệ mmàà đư đượợc yêu cc yêu cầầu thu thựực thi mc thi mộột hay nhit hay nhiềều chu chứức c năng cnăng củủa sa sảản phn phẩẩmm

MMộột st sốố test đư test đượợc thic thiếết kt kếế đ đểể khkháám phm pháá nhnhữững lng lỗỗi khi i khi build thbuild thựực hic hiệện nhn nhữững chng chứức năng cc năng củủa na nóó

NhNhằằm khm kháám phm pháá nhnhữững lng lỗỗi i ảảnh hưnh hưởởng tng tớới li lịịch bich biếếuuNhNhữững build đưng build đượợc tc tíích hch hợợp vp vớới nhi nhữững built khng built kháác vc vààssảản phn phẩẩm tom toààn bn bộộ (theo th(theo thờời gian) li gian) làà smoke đư smoke đượợc kic kiểểm m ththửử hhằằng ngng ngàày.y.

HưHướớng tng tíích hch hợợp cp cóó ththểể llàà top down hay bottom uptop down hay bottom up

Page 22: Cnpm c8 Kiemthupm Trang

22CNPM

KiKiểểm thm thửử HO (HighHO (High Order)Order)

KiKiểểm thm thửử ththẩẩm tra (Validationm tra (Validation testing)testing)Alpha/Beta testingAlpha/Beta testing

KiKiểểm thm thửử hhệệ ththốống (Systemng (System testing)testing)RecoveryRecovery testingtestingSecuritySecurity testingtestingStressStress testingtestingPerformancePerformance TestingTesting

Page 23: Cnpm c8 Kiemthupm Trang

23CNPM

KiKiểểm thm thửử ththẩẩm tram tra

KiKiểểm thm thửử ththẩẩm tra (m tra (Validation testing)Validation testing) hihiểểu theo u theo ccáách đơn gich đơn giảản nhn nhấất lt làà kikiểểm tra cm tra cáác chc chứức năng c năng ccủủa pha phầần mn mềềm đm đááp p ứứng đưng đượợc nhu cc nhu cầầu cu củủa a khkháách hch hààng đã đưng đã đượợc xc xáác đc địịnh trong văn bnh trong văn bảản n đđặặc tc tảả yêu cyêu cầầu cu củủa pha phầần mn mềềmmÁÁp dp dụụng kng kỹỹ thuthuậật blackt black--boxbox

Page 24: Cnpm c8 Kiemthupm Trang

24CNPM

KiKiểểm thm thửử ththẩẩm tram tra

KiKiểểm nghim nghiệệm alpham alphaĐưĐượợc tic tiếến hn hàành ngay tnh ngay tạại nơi si nơi sảản xun xuấất pht phầần mn mềềm.m.NhNhàà phpháát trit triểển phn phầần mn mềềm sm sẽẽ quan squan sáát ngưt ngườời si sửử ddụụng ng ddùùng sng sảản phn phẩẩm vm vàà ghi nhghi nhậận ln lạại nhi nhữững lng lỗỗi phi pháát sinh đt sinh đểểssửửa cha chữữa.a.

KiKiểểm nghim nghiệệm betam betaPhPhầần mn mềềm đưm đượợc kic kiểểm tra bên ngom tra bên ngoàài phi phạạm vi cm vi củủa đơn va đơn vịịssảản xun xuấất.t.KhKháách hch hàành trnh trựực tic tiếếp sp sửử ddụụng vng vàà ghi nhghi nhậận ln lỗỗi đi đểể bbááo lo lạại i cho nhcho nhàà phpháát trit triểển sn sửửa cha chữữa.a.

Page 25: Cnpm c8 Kiemthupm Trang

25CNPM

Debugging (gDebugging (gỡỡ llỗỗi):i):MMộột qut quáá trtrìình phân tnh phân tííchch

Page 26: Cnpm c8 Kiemthupm Trang

26CNPM

Qui trQui trìình gnh gỡỡ llỗỗiitest casestest cases

resultsresults

DebuggingDebugging

suspectedsuspectedcausescauses

identifiedidentifiedcausescauses

correctionscorrections

regressionregressionteststests

new testnew testcasescases

Page 27: Cnpm c8 Kiemthupm Trang

27CNPM

NNỗỗ llựực gc gỡỡ llỗỗii

time requiredtime requiredto diagnose theto diagnose thesymptom andsymptom anddetermine thedetermine thecausecause

time requiredtime requiredto correct the errorto correct the errorand conductand conductregression testsregression tests

Page 28: Cnpm c8 Kiemthupm Trang

28CNPM

DDấấu hiu hiệệu vu vàà nguyên nhânnguyên nhân

symptomsymptomcausecause

DDấấu hiu hiệệu vu vàà nguyên nhân cnguyên nhân cóó ththểểkhkháác bic biệệt vt vềề nơi nơi

DDấấu hiu hiệệu cu cóó ththểể bibiếến mn mấất khi mt khi mộột t vvấấn đn đểể khkháác đã đưc đã đượợc sc sửửaa

Nguyên nhân cNguyên nhân cóó ththểể do sdo sựự kkếết ht hợợp p ccủủa ya yếếu tu tốố không thkhông thựực sc sựự llàà llỗỗii

Nguyên nhân cNguyên nhân cóó ththểể llàà do ldo lỗỗi ci củủa a hhệệ ththốống hay cng hay củủa ba bộộ biên dbiên dịịchch

Nguyên nhân cNguyên nhân cóó ththểể llàà nhnhữững ging giảả đ địịnhnhmmàà mmọọi ngưi ngườời tin tưi tin tưởởngng

DDấấu hiu hiệệu cu cóó ththểể llúúc cc cóó llúúc khôngc không

Page 29: Cnpm c8 Kiemthupm Trang

29CNPM

HHậậu quu quảả ccủủa la lỗỗii

damagedamage

mildmild annoyingannoying

disturbingdisturbingseriousserious

extremeextremecatastrophiccatastrophic

infectiousinfectious

Bug TypeBug Type

Bug Categories:Bug Categories: functionfunction--related bugs,related bugs,systemsystem--related bugs, data bugs, coding bugs, related bugs, data bugs, coding bugs, design bugs, documentation bugs, standards design bugs, documentation bugs, standards violationsviolations, etc., etc.

Page 30: Cnpm c8 Kiemthupm Trang

30CNPM

KKỹỹ thuthuậật gt gỡỡ llỗỗii

BruteBrute forceforce

BacktrackingBacktracking

LoLoạại tri trừừ nguyên nhân nguyên nhân (cause elimination)(cause elimination)(Induction (qui n(Induction (qui nạạp),p),Deduction (suy diDeduction (suy diễễn))n))

Page 31: Cnpm c8 Kiemthupm Trang

31CNPM

BRUTE FORCE

Là phương pháp phổ biến nhất nhưng lại ít hiệu quả nhất cho

việc phát hiện nguyên nhân gây lỗi phần mềm.

Triết lý của phương pháp này là: “Hãy để máy tính tìm ra lỗi”.

Cách thực hiện:Lấy dữ liệu trong bộ nhớ để xem xét.

Dùng run-time trace để tìm lỗi.

Dùng lệnh WRITE để xuất dữ liệu cần kiểm tra ra màn

hình….

Áp dụng phương pháp này khi tất cả các phương pháp khác đều

thất bại.

Page 32: Cnpm c8 Kiemthupm Trang

32CNPM

LẦN VẾT NGƯỢC (Backtracking)Backtracking)

Là một phương pháp gỡ lỗi khá phổ biến có thể dùng thành

công trong các chương trình nhỏ nhưng khó áp dụng cho đối

với các chương trình rất lớn.

Cách thực hiện: bắt đầu tại dòng mã nguồn có triệu chứng

lỗi thực hiện lần ngược trở lại từng dòng mã nguồn cho đến khi

tìm thấy dòng gây ra lỗi.

Page 33: Cnpm c8 Kiemthupm Trang

33CNPM

LOẠI TRỪ NGUYÊN NHÂN

Cách thực hiện:Khi một lỗi được phát hiện, cố gắng đưa ra một danh sách các nguyên nhân có thể gây ra lỗi (các giả thiết)Danh sách này được xem xét lại để loại bỏ dần các nguyên nhân không đúng cho đến khi tìm thấy một nguyên nhân khả nghi nhất (dùng dữliệu liên quan) Khi đó dữ liệu kiểm thử sẽ được tinh chế lại đểtiếp tục tìm lỗi.

Page 34: Cnpm c8 Kiemthupm Trang

34CNPM

CCáác lưu ýc lưu ý

ĐĐừừng vng vộội vã hãy suy xi vã hãy suy xéét đt đếến nhn nhữững dng dấấu hiu hiệệuummàà bbạạn thn thấấy y

Dùng tool (dynamic debugger(dynamic debugger……)) để có thể nhìn sâu hơn vào bên trong

Khi bKhi bếế ttắắc nên nhc nên nhờờ ngư ngườời khi kháác trc trợợ gigiúúpp

Khi gKhi gỡỡ llỗỗi ci cầần phn phảải thi thựực hic hiệện n kikiểểm thm thửử hhồồi qui (i qui (regression tests)

1.1.

2.2.

3.3.

4.4.

Page 35: Cnpm c8 Kiemthupm Trang

35CNPM

2. K2. Kỹỹ thuthuậật kit kiểểm thm thửử phphầần mn mềềmm

MMộột test t test ““ttốốtt””??

CCóó khkhảả năng t năng tììm lm lỗỗiiKhông dư thKhông dư thừừaa““best of breedbest of breed””Không quKhông quáá đơn gi đơn giảản vn vàà ququáá phphứức tc tạạpp

Page 36: Cnpm c8 Kiemthupm Trang

36CNPM

ThiThiếết kt kếế TestTest CaseCase

"Bugs lurk in corners "Bugs lurk in corners and congregate at and congregate at boundaries ..."boundaries ..."

Boris Boris BeizerBeizer

OBJECTIVEOBJECTIVE

CRITERIACRITERIA

CONSTRAINTCONSTRAINT

to uncover errorsto uncover errors

in a in a complete (tocomplete (toààn din diệện)n) mannermanner

with a minimum of effort and timewith a minimum of effort and time

Page 37: Cnpm c8 Kiemthupm Trang

37CNPM

KiKiểểm thm thửử vvéét ct cạạn (Exhaustive)n (Exhaustive)

loop < 20 Xloop < 20 X

There are 10 possible paths! If we execute oneThere are 10 possible paths! If we execute onetest per millisecond, it would take 3,170 years totest per millisecond, it would take 3,170 years totest this program!!test this program!!

1414

Page 38: Cnpm c8 Kiemthupm Trang

38CNPM

KiKiểểm thm thửử chchọọn ln lựựa (Selective)a (Selective)

loop < 20 Xloop < 20 X

Selected pathSelected path

Page 39: Cnpm c8 Kiemthupm Trang

39CNPM

Phương phPhương phááp kip kiểểm thm thửử

Methods

Strategies

white-boxmethods

black-boxmethods

Page 40: Cnpm c8 Kiemthupm Trang

40CNPM

KiKiểểm thm thửử WhiteWhite--BoxBox

... our goal is to ensure that all ... our goal is to ensure that all statements and conditions have statements and conditions have been executed at least once ...been executed at least once ...

Page 41: Cnpm c8 Kiemthupm Trang

41CNPM

KhKhóó phpháát hit hiệện ln lỗỗi ?i ?

ChChúúng ta thưng ta thườờng tin rng tin rằằng mng mộột path ct path cóó vvẻẻ như như không đưkhông đượợc thc thựực hic hiệện, n, nhưng thnhưng thựực tc tếế thư thườờng ng ngưngượợc vc vớới tri trựực gic giáácc

LLỗỗi vi vềề chchữữ ((typographical)typographical) llàà ngngẫẫu nhiên, nhu nhiên, nhữững ng path mpath màà không kikhông kiểểm thm thửử thư thườờng chng chứứa va vàài li lỗỗi ni nààyy

LLỗỗi logic vi logic vàà nhnhữững ging giảả đ địịnh không đnh không đúúng thng thììttỷỷ llệệ nghnghịịch vch vớới khi khảả năng th năng thựực thi cc thi củủa đưa đườờngng

Page 42: Cnpm c8 Kiemthupm Trang

42CNPM

ĐưĐườờng cơ bng cơ bảảnn

Path 1: 1,2,3,6,7,8Path 1: 1,2,3,6,7,8Path 2: 1,2,3,5,7,8Path 2: 1,2,3,5,7,8Path 3: 1,2,4,7,8Path 3: 1,2,4,7,8Path 4: 1,2,4,7,2,4,...7,8Path 4: 1,2,4,7,2,4,...7,8

11

22

3344

55 66

77

88

Page 43: Cnpm c8 Kiemthupm Trang

43CNPM

KiKiểểm nghim nghiệệm cm cáác đưc đườờng cơ bng cơ bảảnnKiểm nghiệm white-box dựa vào cấu trúc điều khiển của thiết kế thủ tục để sinh các test-case với tiêu chí

Kiểm nghiệm các đường cơ bản là một trong những phương cách kiểm nghiệm white-boxBảo đảm số phép thử là ít nhất đủ để phát hiện các lỗiTất cả các đường cơ bản được thử qua ít nhất một lầnThử các điều kiện rẽ nhánh ở cả 2 nhánh true và falseThử qua vòng lặp tại biên cũng như bên trongThử qua cấu trúc dữ liệu để đảm bảo tính toàn vẹn của nó

Page 44: Cnpm c8 Kiemthupm Trang

44CNPM

ĐĐộộ phphứức tc tạạp lp lộộ trtrìình Cyclomatic Complexity V(G)nh Cyclomatic Complexity V(G)

First, we compute the cyclomatic Complexity V(G):

number of simple decisions + 1

V(G) = 4V(G) = 4

Page 45: Cnpm c8 Kiemthupm Trang

45CNPM

ĐĐộộ phphứức tc tạạp lp lộộ trtrìình vnh vàà llỗỗii

A number of industry studies have indicated A number of industry studies have indicated that the higher V(G), the higher the probability that the higher V(G), the higher the probability or errors.or errors.

V(G)V(G)

modulesmodules

modules in this range are modules in this range are more error pronemore error prone

Page 46: Cnpm c8 Kiemthupm Trang

46CNPM

Đưa ra đưĐưa ra đườờng cơ bng cơ bảảnnNext, we derive the Next, we derive the independent paths:independent paths:

Since V(G) = 4,Since V(G) = 4,there are four pathsthere are four paths

Path 1: 1,2,3,6,7,8Path 1: 1,2,3,6,7,8Path 2: 1,2,3,5,7,8Path 2: 1,2,3,5,7,8Path 3: 1,2,4,7,8Path 3: 1,2,4,7,8Path 4: 1,2,4,7,2,4,...7,8Path 4: 1,2,4,7,2,4,...7,8

Finally, we derive testFinally, we derive testcases to exercise these cases to exercise these paths.paths.

11

22

3344

55 66

77

88

Page 47: Cnpm c8 Kiemthupm Trang

47CNPM

Lưu ý trong kiLưu ý trong kiểểm thm thửử đư đườờng cơ bng cơ bảảnn

BBạạn không cn không cầần mn mộộtt flow flow chart,chart,nhưng hnhưng hìình nh ảảnh thnh thìì ddễễ vvạạch ra ch ra nhnhữững pathng path

TTíính mnh mỗỗi test logic đơn gii test logic đơn giảản,n,test phtest phứức hc hợợp đưp đượợc tc tíính lnh làà 2 2 hay nhihay nhiềều hơn u hơn

KiKiểểm thm thửử đư đườờng cơ bng cơ bảản phn phảải i ááp dp dụụng cho nhng cho nhữững module cng module cóóttíính nghiêm ngnh nghiêm ngặặt (critical)t (critical)

Page 48: Cnpm c8 Kiemthupm Trang

48CNPM

CCáác đưc đườờng đng độộc lc lậập cơ bp cơ bảảnn

Đối với chương trình con DoSomethingTổng số đường :

V = 3 + 1 = 4 Đường 1: 1-9 Đường 2: 1-2-3-8-1… Đường 3: 1-2-4-5-7-8-1… Đường 4: 1-2-4-6-7-8-1…

Chú ý: dấu 3 chấm (…) mang ý nghĩa “không quan tâm”, từ đó cóthể đi theo bất kỳ cạnh nào bởi vìcác cạnh sau đó đã được duyệt qua rồi

1

2

34

6 5

7

8

9

Page 49: Cnpm c8 Kiemthupm Trang

49CNPM

VVíí ddụụ vvớới i AnalyzeTriangle

Đối với chương trình con AnalyzeTriangleTổng số đường:

V = 6 + 1 = 7 Đường 1: 1-3-12 Đường 2: 1-2-3-12 Đường 3: 1-2-4-5-12 Đường 4: 1-2-4-6-7-12 Đường 5: 1-2-4-6-8-7-12 Đường 6: 1-2-4-6-8-9-10-12 Đường 7: 1-2-4-6-8-9-11-12

1

2

3

4

6

5

7

8

9

c > 0

a<b+c

a = c

a = b

b = ca2=b2

+c2

11

1012

Page 50: Cnpm c8 Kiemthupm Trang

50CNPM

Test caseTest case

Page 51: Cnpm c8 Kiemthupm Trang

51CNPM

KiKiểểm thm thửử ccấấu tru trúúc đic điềều khiu khiểểnn

KiKiểểm thm thửử đi điềều kiu kiệện (Conditionn (Condition testing)testing): a: a test case test case design method that exercises the logical conditions design method that exercises the logical conditions contained in a program contained in a program modulemoduleKiKiểểm thm thửử luluồồng dng dữữ liliệệu (data flow testing):u (data flow testing): ddựựa va vàào vo vịịtrtríí đ địịnh nghnh nghĩĩa va vàà ddùùng cng củủa bia biếến trong chương trn trong chương trììnhnhKiKiểểm thm thửử vòng lvòng lặặp (Loop)p (Loop)

Page 52: Cnpm c8 Kiemthupm Trang

52CNPM

KiKiểểm thm thửử vòng lvòng lặặp (Loop)p (Loop)

Nested Nested LoopsLoops

ConcatenatedConcatenatedLoops Loops Unstructured Unstructured

LoopsLoops

Simple Simple looploop

Page 53: Cnpm c8 Kiemthupm Trang

53CNPM

Vòng lVòng lặặp đơnp đơn

Minimum conditionsMinimum conditions——Simple LoopsSimple Loops

1. skip the loop entirely1. skip the loop entirely2. only one pass through the loop2. only one pass through the loop3. two passes through the loop3. two passes through the loop4. m passes through the loop m < n4. m passes through the loop m < n5. (n5. (n--1), n, and (n+1) passes through 1), n, and (n+1) passes through the loopthe loop

where n is the maximum number where n is the maximum number of allowable passesof allowable passes

Simple Simple looploop

Page 54: Cnpm c8 Kiemthupm Trang

54CNPM

Vòng lVòng lặặp lp lồồng nhaung nhau

Start at the innermost loop. Set all outer loops Start at the innermost loop. Set all outer loops tototheirtheir minimumminimum iteration parameter values.iteration parameter values.Test the Test the min,min, typical, typical, maxmax for the for the innermost loop, while holding the outer loops at their innermost loop, while holding the outer loops at their minimum values.minimum values.Move out one loop and set it up as in step 2, Move out one loop and set it up as in step 2, holding all innerholding all inner loops at typical values. loops at typical values. ContinueContinuethis step untilthis step until thethe outermost loop has been tested.outermost loop has been tested.

Nested Nested LoopsLoops

Page 55: Cnpm c8 Kiemthupm Trang

55CNPM

Vòng lVòng lặặp np nốối tii tiếếpp

If the loops are independent of one another If the loops are independent of one another then treat each as a simple loopthen treat each as a simple loopelse* treat as nested loopselse* treat as nested loops

endifendif* * for example, the final loop counter value of loop 1 is for example, the final loop counter value of loop 1 is used to initialize loop 2.used to initialize loop 2.

ConcatenatedConcatenatedLoops Loops

Page 56: Cnpm c8 Kiemthupm Trang

56CNPM

KiKiểểm thm thửử BlackBlack--BoxBox

requirementsrequirements

eventseventsinputinput

outputoutput

Page 57: Cnpm c8 Kiemthupm Trang

57CNPM

KiKiểểm thm thửử BlackBlack--BoxBoxGiGiáá trtrịị ccủủa nha nhữững chng chứức năng đưc năng đượợc kic kiểểm thm thửử bbằằng cng cáách nch nàào?o?ViViệệc thưc thi vc thưc thi vàà hhàành vi cnh vi củủa ha hệệ ththốống đưng đượợc kic kiểểm như thm như thếế nnàào?o?NhNhữững lng lớớp input np input nàào so sẽẽ ttạạo ra nho ra nhữững test case tng test case tốốt?t?HHệệ ththốống thưng thườờng nhng nhạạy cy cảảm vm vớới nhi nhữững ging giáá trtrịị input xinput xáác đc địịnh nh nnàào?o?Biên cBiên củủa nha nhữững lng lớớp dp dữữ liliệệu đưu đượợc cô lc cô lậập như thp như thếế nnàào?o?TTỷỷ llệệ vvàà đ độộ llớớn cn củủa da dữữ liliệệu mu màà hhệệ ththốống cng cóó ththểể chchịịu đu đựựng?ng?SSựự kkếết ht hợợp dp dữữ liliệệu đu đặặc trưng sc trưng sẽẽ ccóó hihiệệu u ứứng gng gìì trong hotrong hoạạt t đđộộng cng củủa ha hệệ ththốống?ng?

Page 58: Cnpm c8 Kiemthupm Trang

58CNPM

Phân hoPhân hoạạch tương đương ch tương đương (Equivalence partitions)(Equivalence partitions)

Equivalence Equivalence partitionspartitions

Page 59: Cnpm c8 Kiemthupm Trang

59CNPM

HưHướớng dng dẫẫn phân chia ln phân chia lớớpp

NNếếu input lu input làà mmộột dãy, chia tht dãy, chia thàành 1 lnh 1 lớớp valid vp valid vàà 2 l2 lớớp p invalidinvalidNNếếu input lu input làà mmộột git giáá trtrịị đ đặặc bic biệệt, chia tht, chia thàành 1 lnh 1 lớớp valid vp valid vàà2 l2 lớớp invalidp invalidNNếếu input lu input làà mmộột tht thàành viên cnh viên củủa ta tậập hp hợợp, chia thp, chia thàành 1 nh 1 llớớp valid vp valid vàà 1 l1 lớớp invalidp invalidNNếếu input lu input làà mmộột git giáá trtrịị boolean, chia thboolean, chia thàành 1 lnh 1 lớớp valid vp valid vàà1 l1 lớớp invalidp invalid

Page 60: Cnpm c8 Kiemthupm Trang

60CNPM

Phân hoPhân hoạạch tương đương ch tương đương

useruserqueriesqueries

mousemousepickspicks

outputoutputformatsformats

promptsprompts

FKFKinputinput

datadata

Page 61: Cnpm c8 Kiemthupm Trang

61CNPM

MMẫẫu lu lớớp tương đuơngp tương đuơng

user supplied commandsuser supplied commandsresponses to system promptsresponses to system promptsfile namesfile namescomputational datacomputational data

physical parameters physical parameters bounding valuesbounding valuesinitiation valuesinitiation values

output data formattingoutput data formattingresponses to error messagesresponses to error messagesgraphical data (e.g., mouse picks)graphical data (e.g., mouse picks)

data outside bounds of the program data outside bounds of the program physically impossible dataphysically impossible dataproper value supplied in wrong placeproper value supplied in wrong place

Valid dataValid data

Invalid dataInvalid data

Page 62: Cnpm c8 Kiemthupm Trang

62CNPM

Phân tPhân tíích gich giáá trtrịị biênbiênBVA (BoundaryBVA (Boundary Value Value Analysis)Analysis)

useruserqueriesqueries

mousemousepickspicks

outputoutputformatsformats

promptsprompts

FKFKinputinput

datadata

outputoutputdomaindomaininput domaininput domain

Input, output, cấu trúc dữ liệu…

Page 63: Cnpm c8 Kiemthupm Trang

63CNPM

Phân hoPhân hoạạch tương đươngch tương đương

Page 64: Cnpm c8 Kiemthupm Trang

64CNPM

LLớớp tương đương cho tp tương đương cho tììm kim kiếếm nhm nhịị phânphân

Page 65: Cnpm c8 Kiemthupm Trang

65CNPM

MMộột testcase cho tt testcase cho tììm kim kiếếm nhm nhịị phânphân

Input array (T) Key (Key) Output (Found, L)17 17 true, 117 0 false, ??17, 21, 23, 29 17 true, 19, 16, 18, 30, 31, 41, 45 45 true, 717, 18, 21, 23, 29, 38, 41 23 true, 417, 18, 21, 23, 29, 33, 38 21 true, 312, 18, 21, 23, 32 23 true, 421, 23, 29, 33, 38 25 false, ??

Page 66: Cnpm c8 Kiemthupm Trang

66CNPM

KiKiểểm thm thửử so sso sáánhnh

ĐưĐượợc dc dùùng vng vớới nhi nhữững phng phầần mn mềềm cm cầần cn cóó ttíính tin cnh tin cậậy y rrấất caot cao

Phân chia nhPhân chia nhữững nhng nhóóm km kỹỹ sư ph sư phầần mn mềềm phm pháát trit triểển n nhnhữững version đng version độộc lc lậập cp củủa ma mộột t ứứng dng dụụng dng dùùng cng cùùng ng mmộột đt đặặc tc tảảMMỗỗi version đưi version đượợc kic kiểểm thm thửử vvớới ci cùùng dng dữữ liliệệu kiu kiểểm thm thửửvvàà bbảảo đo đảảm rm rằằng tng tấất ct cảả ccóó output gioutput giốống nhaung nhauTTấất ct cảả ccáác version thc version thựực thi song song vc thi song song vớới thi thờời gian i gian ththựực vc vàà so sso sáánh knh kếết qut quảả

Page 67: Cnpm c8 Kiemthupm Trang

67CNPM

KiKiểểm thm thửử hư hướớng đng đốối tưi tượợng OOTng OOTBerardBerard [BER93] [BER93] đđềề nghnghịị cho thicho thiếết kt kếế test case:test case:

1.1. MMỗỗi testi test case case phphảải ci cóó đ địịnh danh duy nhnh danh duy nhấất vt vàà phphảải ki kếết ht hợợp p rõ rrõ rààng vng vớới class đưi class đượợc testc test

2.2. ChChỉỉ rõ mrõ mụục đc đíích cch củủa testa test

3.3. CCáác bưc bướớc cho mc cho mỗỗi testi test [BER94]:[BER94]:a.a. MMộột danh st danh sáách nhch nhữững trng trạạng thng tháái cho đi cho đốối tưi tượợng đưng đượợc kic kiểểm thm thửử

b.b. MMộột danh st danh sáách nhch nhữữngng messagesmessages vvàà ttáác vc vụụ ssẽẽ đư đượợc thc thựực hic hiệện n

cc.. Danh sDanh sáách nhch nhữững long loạại tri trừừ (exceptions)(exceptions) ccóó ththểể xuxuấất hit hiệệnn

d.d. Danh sDanh sáách nhch nhữữngng đối tượng ngoài (i.e(i.e., changes in the ., changes in the environmentenvironment external external ))

e.e. CCáác thông tin hc thông tin hỗỗ trtrợợ

Page 68: Cnpm c8 Kiemthupm Trang

68CNPM

Phương phPhương phááp kip kiểểm thm thửử OOT OOT ……

KiKiểểm thm thửử hư hướớng lng lỗỗi (Faulti (Fault--basedbased testing)testing)ThiThiếết kt kếế test case dtest case dựựa va vàào do dựự đa đaóón nhn nhữững lng lỗỗi ci cóókhkhảả năng x năng xảảy ray ra

KiKiểểm thm thửử llớớp vp vàà phân cphân cấấp cp củủa la lớớp (Classp (ClassTesting and the Class Testing and the Class Hierarchy)Hierarchy)ThiThiếết kt kếế test dtest dựựa va vàào ko kịịch bch bảản (Scenario n (Scenario -- BasedBasedTest Test Design)Design)

DDựựa va vàào nho nhữững gng gìì ngư ngườời di dùùng lng lààm (usem (use--case)case)

Page 69: Cnpm c8 Kiemthupm Trang

69CNPM

……Phương phPhương phááp kip kiểểm thm thửử OOT OOT ……

KiKiểểm thm thửử ngngẫẫu nhiên (Randomu nhiên (Random testing)testing)XXáác đc địịnh nhnh nhữững tng táác vc vụụ ccóó ththểể ááp dp dụụng cho mng cho mộột lt lớớppXXáác đc địịnh nhnh nhữững rng rààng bung buộộc trong vic trong việệc dc dùùng chng chúúngngXXáác đc địịnh mnh mộột trt trìình tnh tựự kikiểểm thm thửử nhnhỏỏ nhnhấấtt

an operation sequence that defines the an operation sequence that defines the minimum life minimum life history of the class (object)history of the class (object)

TTạạo ra mo ra mộột trt trìình tnh tựự kikiểểm thm thửử ngngẫẫu nhiên (u nhiên (nhưng cnhưng cóó gigiáá trtrịị))exercise other exercise other (more complex) class instance life (more complex) class instance life historieshistories

Page 70: Cnpm c8 Kiemthupm Trang

70CNPM

……Phương phPhương phááp kip kiểểm thm thửử OOT OOT ……KiKiểểm thm thửử PartitionPartition

LLààm gim giảảm sm sốố test case đư test case đượợc yêu cc yêu cầầu đu đểể kikiểểm thm thửử mmộột t llớớppPhân chia dPhân chia dựựa va vàào tro trạạng thng thááii

categorize and test operations based on their ability categorize and test operations based on their ability to change the state of a classto change the state of a class

Phân chia dPhân chia dựựa va vàào thuo thuộộc tc tíínhnhcategorize and test operations based on the categorize and test operations based on the attributes that they useattributes that they use

Phân chia dPhân chia dựựa va vàào loo loạại (category)i (category)categorizecategorize and test operations based on the generic and test operations based on the generic function each performsfunction each performs

Page 71: Cnpm c8 Kiemthupm Trang

71CNPM

……Phương phPhương phááp kip kiểểm thm thửử OOT OOT ……

KiKiểểm thm thửử tương t tương táác (Interc (Inter--class)class)VVớới mi mỗỗi li lớớp client sp client sửử ddụụng mng mộột t danh sdanh sáách nhch nhữững tng táác c vvụụ ccủủa la lớớp đp đểể ttạạo ra o ra mmộột chut chuỗỗi nhi nhữững trng trìình tnh tựự test test ngngẫẫu nhiênu nhiên. Nh. Nhữững tng táác vc vụụ nnàày sy sẽẽ ggởởi thông đii thông điệệp tp tớới i nhnhữững lng lớớp cp củủa servera serverVVớới mi mỗỗi thông đii thông điệệp đưp đượợc tc tạạo xo xáác đc địịnh lnh lớớp cp cộộng tng táác c vvàà ttáác vc vụụ đ đááp p ứứng trong đng trong đốối tưi tượợng serverng serverVVớới mi mỗỗi ti táác vc vụụ trên đ trên đốối tưi tượợng server đưng server đượợc gc gọọi, i, xxáác đc địịnh nh thông đithông điệệp đưp đượợc truyc truyềềnnVVớới mi mỗỗi thông đii thông điệệp đưp đượợc truyc truyềền nn nàày xy xáác đc địịnh mnh mứức c kkếế titiếếp cp củủa nha nhữững tng táác vc vụụ mmàà đư đượợc khc khẩẩn nn nàài vi vàà kkếết ht hợợp p chchúúng vng vớới tri trìình tnh tựự test test

Page 72: Cnpm c8 Kiemthupm Trang

72CNPM

……Phương phPhương phááp kip kiểểm thm thửử OOTOOT

emptyacctopen setup Accnt

set upacct

deposit(initial)

workingacct

withdrawal(final)

deadacct close

nonworkingacct

deposit

withdrawbalance

creditaccntInfo

Figure 14.3 State diagram for Account class (adapted f rom [ KIR94] )

KiKiểểm thm thửửBehavior Behavior TheThe tests to be tests to be designed should designed should achieve all state achieve all state coverage [KIR94]. coverage [KIR94]. That is, the That is, the operation operation sequences should sequences should cause the cause the Account class to Account class to make transition make transition through all through all allowable statesallowable states

Page 73: Cnpm c8 Kiemthupm Trang

73CNPM

CCáác mc mẫẫu kiu kiểểm thm thửử (Testing Patterns)(Testing Patterns)

KiKiểểm thm thửử ccặặp (p (pair testing): Hpair testing): Hai ngưai ngườời kii kiểểm thm thửử ccùùng ng llààm vim việệc vc vớới nhau trong thii nhau trong thiếết kt kếế vvàà ththựực thi cc thi cáác Testc TestGiao diGiao diệện test riêng bin test riêng biệệt (Separate test interface): t (Separate test interface): ddùùng đng đểể test nhtest nhữững lng lớớp np nộội (internal classes) li (internal classes) làànhnhữững lng lớớp phô bp phô bàày giao diy giao diệện ra bên ngon ra bên ngoààii

Page 74: Cnpm c8 Kiemthupm Trang

74CNPM

TTựự đ độộng king kiểểm thm thửử

KiKiểểm thm thửử llàà công vicông việệc tc tốốn nhin nhiềều công su công sứức. Nhc. Nhữững ng hhệệ ththốống king kiểểm thm thửử cung ccung cấấp nhp nhữững công cng công cụụ cho cho phphéép gip giảảm thm thờời gian vi gian vàà chi phchi phííPhPhầần ln lớớn hn hệệ ththốống king kiểểm thm thửử llàà nhnhữững hng hệệ ththốống mng mởở

CCóó ththểể ddùùng kng kịịch bch bảản đn đểể ttạạo do dữữ liliệệu testu testOutput cOutput cóó ththểể ddùùng đng đểể so sso sáánh mnh mộột ct cáách thch thủủ côngcôngCCóó ththểể phpháát trit triểển nhn nhữững hng hệệ ththốống so sng so sáánh filenh file

Page 75: Cnpm c8 Kiemthupm Trang

75CNPM

MMộột ht hệệ ththốống king kiểểm thm thửử

Page 76: Cnpm c8 Kiemthupm Trang

76CNPM

KiKiểểm thm thửử kikiếến trn trúúc, c, môi trưmôi trườờngngvvàà ứứng dng dụụng đng đặặc trưngc trưng

KiKiểểm thm thửử GUI: DGUI: Dùùng đng đồồ ththịị mô hmô hìình trnh trạạng thng tháái xi xáác đc địịnh, công nh, công ccụụ kikiểểm thm thửử ttựự đ độộngngKiKiểểm thm thửử client/server:client/server:

KiKiểểm thm thửử chchứức năng c năng ứứng dng dụụngngKiKiểểm thm thửử serverserverKiKiểểm thm thửử cơ s cơ sởở ddữữ liliệệuuKiKiểểm thm thửử truytruyềền thông mn thông mạạngng

KiKiểểm thm thửử tư li tư liệệu vu vàà trtrợợ gigiúúppKiKiểểm thm thửử hhệệ ththốống thng thờời gian thi gian thựựcc

KiKiểểm thm thửử công vicông việệc (task)c (task)KiKiểểm thm thửử hhàành vinh viKiKiểểm thm thửử liên tliên táác vc vụụ (inter task)(inter task)KiKiểểm thm thửử hhệệ ththốống: interrupt vng: interrupt vớới đi độộ ưu tiên ưu tiên, x, xửử lý interrrupt, slý interrrupt, sốố lư lượợng ng interrrupt xuinterrrupt xuấất hit hiệện trong mn trong mộột khot khoảảng thng thờời giani gian……