cnpm c8 kiemthupm trang
TRANSCRIPT
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
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)
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)
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.
5CNPM
What Testing ShowsWhat Testing Shows
errorserrors
requirements conformancerequirements conformance
performanceperformance
an indicationan indicationof qualityof quality
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
7CNPM
1. Chi1. Chiếến lưn lượợc kic kiểểm thm thửửunit testunit test integrationintegration
testtest
validationvalidationtesttest
systemsystemtesttest
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
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ửử
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
11CNPM
KiKiểểm thm thửử đơn v đơn vịị
modulemoduleto beto be
testedtested
test casestest cases
resultsresults
softwaresoftwareengineerengineer
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
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
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
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
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
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
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
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
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
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
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
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
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.
25CNPM
Debugging (gDebugging (gỡỡ llỗỗi):i):MMộột qut quáá trtrìình phân tnh phân tííchch
26CNPM
Qui trQui trìình gnh gỡỡ llỗỗiitest casestest cases
resultsresults
DebuggingDebugging
suspectedsuspectedcausescauses
identifiedidentifiedcausescauses
correctionscorrections
regressionregressionteststests
new testnew testcasescases
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
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
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.
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))
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.
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.
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.
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.
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
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
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
38CNPM
KiKiểểm thm thửử chchọọn ln lựựa (Selective)a (Selective)
loop < 20 Xloop < 20 X
Selected pathSelected path
39CNPM
Phương phPhương phááp kip kiểểm thm thửử
Methods
Strategies
white-boxmethods
black-boxmethods
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 ...
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
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
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ó
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
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
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
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)
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
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
50CNPM
Test caseTest case
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)
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
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
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
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
56CNPM
KiKiểểm thm thửử BlackBlack--BoxBox
requirementsrequirements
eventseventsinputinput
outputoutput
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?
58CNPM
Phân hoPhân hoạạch tương đương ch tương đương (Equivalence partitions)(Equivalence partitions)
Equivalence Equivalence partitionspartitions
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
60CNPM
Phân hoPhân hoạạch tương đương ch tương đương
useruserqueriesqueries
mousemousepickspicks
outputoutputformatsformats
promptsprompts
FKFKinputinput
datadata
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
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…
63CNPM
Phân hoPhân hoạạch tương đươngch tương đương
64CNPM
LLớớp tương đương cho tp tương đương cho tììm kim kiếếm nhm nhịị phânphân
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, ??
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ảả
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ợợ
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)
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
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
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
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
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
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
75CNPM
MMộột ht hệệ ththốống king kiểểm thm thửử
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……