TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
MÔN HỌC
CÔNG NGHỆỆ PHPHẦẦN MN MỀỀMM CÔNG NGH
Chương 88 Chương KiKiểểm thm thửử phphầần mn mềềmm
1
CNPM
i dung NNộội dung
(Testing Strategy) 1.1. ChiChiếến lưn lượợc kic kiểểm thm thửử (Testing Strategy) 2.2. KKỹỹ thuthuậật ki
m (Software Testing t kiểểm thm thửử phphầần mn mềềm (Software Testing
Techniques) Techniques)
2
CNPM
nh (V&V) KiKiểểm chm chứứng vng vàà ththẩẩm đm địịnh (V&V)
(cid:132)(cid:132) KiKiểểm chm chứứng vng vàà ththẩẩm đm địịnh bao g
nh bao gồồm kim kiểểm thm thửử
phphầần mn mềềm m
ng (Verification): ““ChChúúng ta đang ng ta đang m theo đúúng cng cáách"ch"
(cid:132)(cid:132) KiKiểểm chm chứứng (Verification): xây dựựng sng sảản phn phẩẩm theo đ xây d (cid:132)(cid:132) PhPhầần mn mềềm phm phảải phi phùù hhợợp vp vớới đi đặặc tc tảả ccủủa na nóó
ng ta đang xây nh (Validation): ““ChChúúng ta đang xây
(cid:132)(cid:132) ThThẩẩm đm địịnh (Validation): ddựựng sng sảản phn phẩẩm đm đúúng"ng" (cid:132)(cid:132) 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 th
ng thậật t
ssựự ccầầnn
3
CNPM
KiKiểểm thm thửử phphầần mn mềềmm
c khi) prior to (t(trưrướớc khi)
Testing is the process of exercising a Testing is the process of exercising a program with the specific intent of program with the specific intent of finding errors prior to finding errors to the end user. delivery to the end user. delivery
4
CNPM
What Testing Shows What Testing Shows
errors errors
requirements conformance requirements conformance
performance performance
an indication an indication of quality of quality
5
CNPM
Who Tests the Software? Who Tests the Software?
developer developer independent tester independent tester
Understands the system Understands the system
but, will test "gently" but, will test "gently"
Must learn about the system, Must learn about the system, but, will attempt to break it but, will attempt to break it and, is driven by quality and, is driven by quality
and, is driven by "delivery" and, is driven by "delivery"
6
CNPM
1. Chiếến lưn lượợc kic kiểểm thm thửử 1. Chi
unit test unit test
integration integration test test
system system test test
validation validation test test
7
CNPM
ChiChiếến lưn lượợc kic kiểểm thm thửử
(cid:132)(cid:132) BBắắt đt đầầu vu vớớii ‘‘testing
testing--inin--thethe--small small’’ rrồồi ti i tiếến tn tớớii ‘‘testing testing--inin--
(cid:132)(cid:132) VVớới phi phầần mn mềềm truym truyềền thn thốốngng (cid:132)(cid:132) KiKiểểm thm thửử module (component) module (component) p module (cid:132)(cid:132) KiKiểểm thm thửử ttíích hch hợợp module
(cid:132)(cid:132) VVớới phi phầần mn mềềm hưm hướớng đng đốối tưi tượợngng (cid:132)(cid:132) Khi bKhi bắắt đt đầầuu ““testing in the small
testing in the small”” ththìì ttậập trung v
a thuộộc tc tíính vnh vàà phương th
phương thứức, c, liên quan đ
p (classs) p trung vàào lo lớớp (classs) n thông n truyềền thông liên quan đếến truy
mmàà chchứứa thu vvàà ccộộng tng táácc
large’’ thethe--large
8
CNPM
CCáác công vi
c công việệc cc cầần thi
n thiếết trong Chi
t trong Chiếến lưn lượợcc
nh rõ rààng cng cáác đc đốối tưi tượợng ki
ng kiểểm thm thửử
(cid:132)(cid:132) XXáác đc địịnh rõ r (cid:132)(cid:132) HiHiểểu biu biếết vt vềề ngư ngườời di dùùng ph
ng phầần mn mềềm vm vàà ttạạo ra mo ra mộột ti
(profile) t tiềền sn sửử (profile)
i ngườời di dùùngng
ch kiểểm thm thửử mmàà nhnhấấn mn mạạnh tnh tớới i ““rapid
cycle rapid cycle
ng kiểểm tra k
ng phầần mn mềềm cm cóó ttíính kh m tra kỹỹ thuthuậật ht hìình th
nh khááng lng lỗỗi cao d nh thứức như l
ng cho kiểểm thm thửử i cao dùùng cho ki c như làà mmộột bt bộộ llọọc trưc trướớc khi ki
c khi kiểểm m
cho mcho mỗỗi loi loạại ngư Xây dựựng mng mộột kt kếế hohoạạch ki (cid:132)(cid:132) Xây d testing”” testing Xây dựựng ph (cid:132)(cid:132) Xây d (cid:132)(cid:132) DDùùng ki ththửử (cid:132)(cid:132) ĐĐềề ra nh
ng kiểểm tra k
ra nhữững ki
m tra kỹỹ thuthuậật ht hìình th
nh thứức đc đểể đ đáánh gi
nh giáá chichiếến lưn lượợc c
kikiểểm thm thửử vvàà ccáác test case c test case t triểển mn mộột hưt hướớng cng cảải ti
(cid:132)(cid:132) PhPháát tri
i tiếến liên t
n liên tụục cho qui tr
c cho qui trìình ki
nh kiểểm thm thửử
9
CNPM
MMộột chi
t chiếến thu
n thuậật ki
t kiểểm nghi
n (V) m nghiệệm phm phổổ bibiếến (V)
Hệ thống
Kiểm thử hệ thống
Yêu cầu
Kiểm thử thẩm tra
Kiểm thử tích hợp
Thiết kế
Kiểm Thử đơn vị (module)
Mã hóa
10
CNPM
KiKiểểm thm thửử đơn v đơn vịị
module module to be to be tested tested
results results
software software engineer engineer
test cases test cases
11
CNPM
KiKiểểm thm thửử đơn v đơn vịị
module module to be to be tested tested
interface interface local data structures local data structures
boundary conditions boundary conditions independent paths independent paths error handling paths error handling paths
test cases test cases
12
CNPM
Môi trườờng ki Môi trư
đơn vịị ng kiểểm thm thửử đơn v
driver driver
interface interface
local data structures local data structures
boundary conditions boundary conditions
Module Module
independent paths independent paths
error handling paths error handling paths
stubstub
stubstub
test cases test cases
RESULTS RESULTS
13
CNPM
ChiChiếến lưn lượợc kic kiểểm thm thửử ttíích hch hợợpp
ChChọọn ln lựựa:a:
ng tiếếp cp cậậnn ““big big bangbang””
•• HưHướớng ti •• ChiChiếến lưn lượợc xây d ng gia tăng c xây dựựng gia tăng
14
CNPM
TTíích hch hợợp Top
p Top DownDown
AA
top module is tested with top module is tested with stubs stubs
BB
FF
GG
stubs are replaced one at stubs are replaced one at a time, "depth first" a time, "depth first"
CC
as new modules are integrated, as new modules are integrated, some subset of tests is re--runrun some subset of tests is re
DD
EE
15
CNPM
TTíích hch hợợp Bottom
p Bottom--UpUp
AA
BB
FF
GG
drivers are replaced one at a drivers are replaced one at a time, "depth first" time, "depth first"
CC
worker modules are grouped into worker modules are grouped into builds and integrated builds and integrated
DD
EE
cluster cluster
16
CNPM
Sandwich KiKiểểm thm thửử Sandwich
AA
Top modules are Top modules are tested with stubs tested with stubs
BB
FF
GG
CC
Worker modules are grouped into Worker modules are grouped into builds and integrated builds and integrated
DD
EE
cluster cluster
17
CNPM
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 khi
tiế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ông
bằng cách thực hiện lại cáctest-case đã tạo ra. Hoặc có thể dùng một công cụ capture-playback để thực hiện tự động
18
CNPM
KiKiểểm thm thửử hư hướớng đng đốối tưi tượợngng
(cid:132)(cid:132) BBắắt đt đầầu bu bằằng cng cáách đch đáánh gi nh OOA va OOD a mô hìình OOA va OOD
nh giáá ssựự đ đúúng đng đắắn vn vàà totoààn vn vẹẹn n
(cid:132)(cid:132) Thay đ
i niệệm m ‘‘unitunit’’
p trung vàào lo lớớp vp vàà ththựực thi qua m
c thi qua mộột ti
c đây i chiếến lưn lượợc kic kiểểm thm thửử so vso vớới trưi trướớc đây
t tiếến n nh (thread) hay ngữữ ccảảnh cnh củủa ma mộột kt kịịch bch bảản đưn đượợc dc dùùngng
ng phương phááp blackbox p blackbox
ccủủa mô h Thay đổổi chi (cid:132)(cid:132) KhKháái ni (cid:132)(cid:132) ViViệệc tc tíích hch hợợp tp tậập trung v trtrìình (thread) hay ng
(cid:132)(cid:132) ViViệệc thc thẩẩm đm địịnh snh sửử ddụụng phương ph (cid:132)(cid:132) ThiThiếết kt kếế test case theo phương ph m thêm nhữững đng đặặc trưng m
test case theo phương phááp cp cũũ nhưng ph i bao nhưng phảải bao
ggồồm thêm nh c trưng mớớii
nh CRC (cid:132)(cid:132) KiKiểểm thm thửử mô hmô hìình CRC
19
CNPM
c trong OOT ChiChiếến lưn lượợc trong OOT
(cid:132)(cid:132) KiKiểểm thm thửử llớớp (unit
m tra hàành vi, tr
nh vi, trạạng th
ng tháái ci củủa la lớớpp
(cid:132)(cid:132) thread
testing) p (unit testing) (operations) (cid:132)(cid:132) KiKiểểm thm thửử ttáác vc vụụ (operations) (cid:132)(cid:132) KiKiểểm tra h (cid:132)(cid:132) KiKiểểm thm thửử ttíích hch hợợpp
based testing
the set of integrates the set of
thread--based testing —— integrates classes required to respond to one input or event classes required to respond to one input or event
(cid:132)(cid:132) useuse--based
based testing
testing —— integrates
the set of classes integrates the set of classes
(cid:132)(cid:132) cluster
testing (ki(kiểểm thm thửử ccụụm) m) —— integrates
the integrates the
required to respond to one use case required to respond to one use case cluster testing set of classes required to demonstrate one set of classes required to demonstrate one collaboration collaboration
20
CNPM
Smoke KiKiểểm thm thửử Smoke
(cid:132)(cid:132) MMộột hưt hướớng thông d
ng thông dụụng cho vi daily builds”” ng cho việệc tc tạạoo ““daily builds
(cid:132)(cid:132) NhNhữững th
nh phầần phn phầần mn mềềm đưm đượợc thc thểể hihiệện dưn dướới i ng mã đượợc tc tíích hch hợợp thp thàành mnh mộột t ‘‘buildbuild’’ (ki(kiểểu kiu kiếến n
ddạạng mã đư trtrúúc)c)
t build bao gồồm tm tấất ct cảả ccáác file d ng module sửử ddụụng lng lạại vi vàà nhnhữững th
c file dữữ liliệệu, u, thư vi ng thàành ph
thư việện, n, nh phầần kn kỹỹ
c yêu cầầu thu thựực thi mc thi mộột hay nhi
t hay nhiềều chu chứức c
(cid:132)(cid:132) MMộột build bao g nhnhữững module s nghnghệệ mmàà đư đượợc yêu c năng củủa sa sảản phn phẩẩmm năng c test đượợc thi (cid:132)(cid:132) MMộột st sốố test đư build thựực hic hiệện nhn nhữững ch build th
i khi c thiếết kt kếế đ đểể khkháám phm pháá nhnhữững lng lỗỗi khi c năng củủa na nóó
ng chứức năng c
(cid:132)(cid:132) NhNhằằm khm kháám phm pháá nhnhữững lng lỗỗi i ảảnh hư
ch biếếuu
(cid:132)(cid:132) NhNhữững build đư
ng build đượợc tc tíích hch hợợp vp vớới nhi nhữững built kh i gian) làà smoke đư
(theo thờời gian) l
nh hưởởng tng tớới li lịịch bi ng built kháác vc vàà smoke đượợc kic kiểểm m
ssảản phn phẩẩm tom toààn bn bộộ (theo th ththửử hhằằng ng
ng ngàày.y.
top down hay bottom up (cid:132)(cid:132) HưHướớng tng tíích hch hợợp cp cóó ththểể llàà top down hay bottom up
cho sảản phn phẩẩm phm phầần mn mềềmm cho s Smoke: (cid:132)(cid:132) CCáác bưc bướớc kic kiểểm thm thửử Smoke: ng thàành ph
21
CNPM
KiKiểểm thm thửử HO (High
Order) HO (High Order)
(cid:132)(cid:132) KiKiểểm thm thửử ththẩẩm tra (Validation
Alpha/Beta testing (cid:132)(cid:132) Alpha/Beta testing (cid:132)(cid:132) KiKiểểm thm thửử hhệệ ththốống (System
testing) m tra (Validation testing)
testing Recovery testing (cid:132)(cid:132) Recovery Security testing testing (cid:132)(cid:132) Security testing Stress testing (cid:132)(cid:132) Stress Testing Performance Testing (cid:132)(cid:132) Performance
testing) ng (System testing)
22
CNPM
KiKiểểm thm thửử ththẩẩm tram tra
m tra (Validation testing)
(cid:132)(cid:132) KiKiểểm thm thửử ththẩẩm tra (
ch đơn giảản nhn nhấất lt làà kikiểểm tra c
ng đượợc nhu c
u theo Validation testing) hihiểểu theo m tra cáác chc chứức năng c năng c nhu cầầu cu củủa a nh trong văn bảản n
ng đã đượợc xc xáác đc địịnh trong văn b
ccáách đơn gi ccủủa pha phầần mn mềềm đm đááp p ứứng đư khkháách hch hààng đã đư đđặặc tc tảả yêu c
yêu cầầu cu củủa pha phầần mn mềềmm
(cid:132)(cid:132) ÁÁp dp dụụng kng kỹỹ thuthuậật black
t black--boxbox
23
CNPM
KiKiểểm thm thửử ththẩẩm tram tra
(cid:132)(cid:132) KiKiểểm nghi
m alpha m nghiệệm alpha nh ngay tạại nơi s (cid:132)(cid:132) ĐưĐượợc tic tiếến hn hàành ngay t t triểển phn phầần mn mềềm sm sẽẽ quan s (cid:132)(cid:132) NhNhàà phpháát tri
i nơi sảản xun xuấất pht phầần mn mềềm.m. quan sáát ngư ghi nhậận ln lạại nhi nhữững lng lỗỗi phi pháát sinh đ
t ngườời si sửử ddụụng ng t sinh đểể
ddùùng sng sảản phn phẩẩm vm vàà ghi nh ssửửa cha chữữa.a. m beta m nghiệệm beta (cid:132)(cid:132) KiKiểểm nghi (cid:132)(cid:132) PhPhầần mn mềềm đưm đượợc kic kiểểm tra bên ngo
a đơn vịị m tra bên ngoàài phi phạạm vi cm vi củủa đơn v
ssảản xun xuấất.t. (cid:132)(cid:132) KhKháách hch hàành tr
nh trựực tic tiếếp sp sửử ddụụng vng vàà ghi nh
ghi nhậận ln lỗỗi đi đểể bbááo lo lạại i
cho nhàà phpháát tri cho nh
t triểển sn sửửa cha chữữa.a.
24
CNPM
Debugging (gỡỡ llỗỗi):i): Debugging (g
MMộột qut quáá trtrìình phân t
nh phân tííchch
25
CNPM
Qui trQui trìình gnh gỡỡ llỗỗii
test cases test cases
results results
new test new test cases cases
regression regression tests tests
suspected suspected causes causes
corrections corrections
Debugging Debugging
identified identified causes causes
26
CNPM
NNỗỗ llựực gc gỡỡ llỗỗii
time required time required to diagnose the to diagnose the symptom and symptom and determine the determine the cause cause
time required time required to correct the error to correct the error and conduct and conduct regression tests regression tests
27
CNPM
DDấấu hiu hiệệu vu vàà nguyên nhân nguyên nhân
nguyên nhân cóó ththểể DDấấu hiu hiệệu vu vàà nguyên nhân c nơi khkháác bic biệệt vt vềề nơi
t khi mộột t
DDấấu hiu hiệệu cu cóó ththểể bibiếến mn mấất khi m vvấấn đn đểể khkháác đã đư
c đã đượợc sc sửửaa
Nguyên nhân cóó ththểể do sdo sựự kkếết ht hợợp p Nguyên nhân c ccủủa ya yếếu tu tốố không th
không thựực sc sựự llàà llỗỗii
Nguyên nhân cóó ththểể llàà do ldo lỗỗi ci củủa a Nguyên nhân c ng hay củủa ba bộộ biên d hhệệ ththốống hay c
biên dịịchch
ng giảả đ địịnhnh
symptom symptom
Nguyên nhân cóó ththểể llàà nhnhữững gi Nguyên nhân c mmàà mmọọi ngư
i ngườời tin tư
i tin tưởởngng
cause cause
c không DDấấu hiu hiệệu cu cóó ththểể llúúc cc cóó llúúc không
28
CNPM
HHậậu quu quảả ccủủa la lỗỗii
infectious infectious
damage damage
catastrophic catastrophic
extreme extreme
serious serious
disturbing disturbing
annoying annoying
mildmild
Bug Type Bug Type
related bugs, function--related bugs, function
Bug Categories: Bug Categories: related bugs, data bugs, coding bugs, system--related bugs, data bugs, coding bugs, system design bugs, documentation bugs, standards design bugs, documentation bugs, standards , etc. violations, etc. violations
29
CNPM
KKỹỹ thuthuậật gt gỡỡ llỗỗii
force BruteBrute force
Backtracking Backtracking
LoLoạại tri trừừ nguyên nhân nguyên nhân (cause elimination) (cause elimination) (Induction (qui nạạp),p), (Induction (qui n Deduction (suy diễễn))n)) Deduction (suy di
30
CNPM
BRUTE FORCE
(cid:122) 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.
(cid:122) Triết lý của phương pháp này là: “Hãy để máy tính tìm ra lỗi”.
(cid:139) Lấy dữ liệu trong bộ nhớ để xem xét.
(cid:139) Dùng run-timetraceđể tìm lỗi.
(cid:139) Dùng lệnh WRITE để xuất dữ liệu cần kiểm tra ra màn
(cid:122) Cách thực hiện:
hình….
(cid:122) Á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.
31
CNPM
Backtracking) LẦN VẾT NGƯỢC (Backtracking)
(cid:122) 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.
(cid:122) 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.
32
CNPM
LOẠI TRỪ NGUYÊN NHÂN
(cid:132) Cách thực hiện:
(cid:132) 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)
(cid:132) 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)
(cid:132) Khi đó dữ liệu kiểm thử sẽ được tinh chế lại để
tiếp tục tìm lỗi.
33
CNPM
c lưu ý CCáác lưu ý
1.1. i vã hãy suy xéét đt đếến nhn nhữững dng dấấu hiu hiệệuu
ĐĐừừng vng vộội vã hãy suy x mmàà bbạạn thn thấấy y
2.2. (dynamic debugger……))
Dùng tool (dynamic debugger để có thể nhìn sâu hơn vào bên trong
3.3. Khi bKhi bếế ttắắc nên nh c nên nhờờ ngư ngườời khi kháác trc trợợ gigiúúpp
4.4.
i qui (regression tests) 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 (
34
CNPM
2. K2. Kỹỹ thuthuậật ki
t kiểểm thm thửử phphầần mn mềềmm
MMộột test
t test ““ttốốtt””??
(cid:132)(cid:132) CCóó khkhảả năng t Không dư thừừaa (cid:132)(cid:132) Không dư th best of breed”” (cid:132)(cid:132) ““best of breed Không quáá đơn gi (cid:132)(cid:132) Không qu
năng tììm lm lỗỗii
đơn giảản vn vàà ququáá phphứức tc tạạpp
35
CNPM
ThiThiếết kt kếế TestTest CaseCase
"Bugs lurk in corners "Bugs lurk in corners and congregate at and congregate at boundaries ..." boundaries ..."
Beizer Boris Beizer Boris
to uncover errors to uncover errors OBJECTIVE OBJECTIVE
CRITERIA CRITERIA in a complete (to in a manner complete (toààn din diệện)n) manner
CONSTRAINT CONSTRAINT with a minimum of effort and time with a minimum of effort and time
36
CNPM
n (Exhaustive) KiKiểểm thm thửử vvéét ct cạạn (Exhaustive)
loop < 20 X loop < 20 X
1414
There are 10 possible paths! If we execute one There are 10 possible paths! If we execute one test per millisecond, it would take 3,170 years to test per millisecond, it would take 3,170 years to test this program!! test this program!!
37
CNPM
a (Selective) KiKiểểm thm thửử chchọọn ln lựựa (Selective)
Selected path Selected path
loop < 20 X loop < 20 X
38
CNPM
Phương phááp kip kiểểm thm thửử Phương ph
white-box
black-box methods
methods
Methods
Strategies
39
CNPM
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 ...
40
CNPM
KhKhóó phpháát hi
t hiệện ln lỗỗi ?i ?
ng ta thườờng tin r ng tin rằằng mng mộột path c
như t path cóó vvẻẻ như nhưng thựực tc tếế thư thườờng ng
ChChúúng ta thư không đượợc thc thựực hic hiệện, n, nhưng th không đư ngưngượợc vc vớới tri trựực gic giáácc
typographical) llàà ngngẫẫu nhiên, nh
LLỗỗi vi vềề chchữữ ((typographical) path màà không ki path m không kiểểm thm thửử thư thườờng ch u nhiên, nhữững ng ng chứứa va vàài li lỗỗi ni nààyy
i logic vàà nhnhữững gi ng thìì nh không đúúng th
LLỗỗi logic v ttỷỷ llệệ nghnghịịch vch vớới khi khảả năng th ng giảả đ địịnh không đ năng thựực thi c c thi củủa đưa đườờngng
41
CNPM
ĐưĐườờng cơ b
ng cơ bảảnn
11
22
33
44
55
66
Path 1: 1,2,3,6,7,8 Path 1: 1,2,3,6,7,8 Path 2: 1,2,3,5,7,8 Path 2: 1,2,3,5,7,8 Path 3: 1,2,4,7,8 Path 3: 1,2,4,7,8 Path 4: 1,2,4,7,2,4,...7,8 Path 4: 1,2,4,7,2,4,...7,8
77
88
42
CNPM
KiKiểểm nghi
m nghiệệm cm cáác đưc đườờng cơ b
ng cơ bảảnn
(cid:132) Kiể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í (cid:132) 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-box
(cid:132) Bảo đảm số phép thử là ít nhất đủ để phát hiện các lỗi (cid:132) Tất cả các đường cơ bản được thử qua ít nhất một lần (cid:132) Thử các điều kiện rẽ nhánh ở cả 2 nhánh true và false (cid:132) Thử qua vòng lặp tại biên cũng như bên trong (cid:132) Thử qua cấu trúc dữ liệu để đảm bảo tính toàn vẹn của nó
43
CNPM
nh Cyclomatic Complexity V(G) ĐĐộộ phphứức tc tạạp lp lộộ trtrìình Cyclomatic Complexity V(G)
First, we compute the cyclomatic Complexity V(G):
number of simple decisions + 1
V(G) = 4 V(G) = 4
44
CNPM
ĐĐộộ 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.
modules modules
V(G)V(G)
modules in this range are modules in this range are more error prone more error prone
45
CNPM
Đưa ra đườờng cơ b Đưa ra đư
ng cơ bảảnn Next, we derive the Next, we derive the independent paths: independent paths:
11
Since V(G) = 4, Since V(G) = 4, there are four paths there are four paths
22
33
44
55
66
Path 1: 1,2,3,6,7,8 Path 1: 1,2,3,6,7,8 Path 2: 1,2,3,5,7,8 Path 2: 1,2,3,5,7,8 Path 3: 1,2,4,7,8 Path 3: 1,2,4,7,8 Path 4: 1,2,4,7,2,4,...7,8 Path 4: 1,2,4,7,2,4,...7,8
77
88
Finally, we derive test Finally, we derive test cases to exercise these cases to exercise these paths. paths.
46
CNPM
Lưu ý trong kiểểm thm thửử đư đườờng cơ b Lưu ý trong ki
ng cơ bảảnn
n không cầần mn mộộtt flow
chart, flow chart, ch ra nh thìì ddễễ vvạạch ra
BBạạn không c nhưng hìình nh ảảnh th nhưng h ng path nhnhữững path
i test logic đơn giảản,n, TTíính mnh mỗỗi test logic đơn gi test phứức hc hợợp đưp đượợc tc tíính lnh làà 2 2 test ph u hơn hay nhiềều hơn hay nhi
KiKiểểm thm thửử đư đườờng cơ b ááp dp dụụng cho nh ttíính nghiêm ng ng cơ bảản phn phảải i ng module cóó ng cho nhữững module c t (critical) nh nghiêm ngặặt (critical)
47
CNPM
CCáác đưc đườờng đng độộc lc lậập cơ b
p cơ bảảnn
(cid:132) Đối với chương trình con
1
(cid:132)
2
(cid:132)
4
3
(cid:132)
5
6
(cid:132)
(cid:132)
DoSomething Tổ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…
7
8
9
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
48
CNPM
VVíí ddụụ vvớới i AnalyzeTriangle
5
(cid:132) Đối với chương trình con
a = c
4
7
a
2
6 a = b
10
c > 0
12
1
8 b = c
a2=b2 +c2 9
11
3
(cid:132) V = 6 + 1 = 7 (cid:132) Đường 1: 1-3-12 (cid:132) Đường 2: 1-2-3-12 (cid:132) Đường 3: 1-2-4-5-12 (cid:132) Đường 4: 1-2-4-6-7-12 (cid:132) Đường 5: 1-2-4-6-8-7-12 (cid:132) Đường 6: 1-2-4-6-8-9-10-12 (cid:132) Đường 7: 1-2-4-6-8-9-11-12
AnalyzeTriangle Tổng số đường:
49
CNPM
Test case Test case
50
CNPM
KiKiểểm thm thửử ccấấu tru trúúc đic điềều khi
u khiểểnn
(cid:132)(cid:132) KiKiểểm thm thửử đi
(cid:132)(cid:132) KiKiểểm thm thửử luluồồng dng dữữ liliệệu (data flow testing):
điềều kiu kiệện (Condition n (Condition testing) test case testing): a: a test case
(cid:132)(cid:132) KiKiểểm thm thửử vòng l
design method that exercises the logical conditions design method that exercises the logical conditions module contained in a program module contained in a program u (data flow testing): ddựựa va vàào vo vịị n trong chương trììnhnh nh nghĩĩa va vàà ddùùng cng củủa bia biếến trong chương tr trtríí đ địịnh ngh
p (Loop) vòng lặặp (Loop)
51
CNPM
KiKiểểm thm thửử vòng l
p (Loop) vòng lặặp (Loop)
Simple Simple loop loop
Nested Nested Loops Loops
Concatenated Concatenated Unstructured Loops Unstructured Loops
Loops Loops
52
CNPM
p đơn Vòng lặặp đơn Vòng l
Simple Loops Minimum conditions——Simple Loops Minimum conditions
1. skip the loop entirely 1. skip the loop entirely
Simple Simple loop loop
2. only one pass through the loop 2. only one pass through the loop 3. two passes through the loop 3. two passes through the loop 4. m passes through the loop m < n 4. m passes through the loop m < n 5. (n5. (n--1), n, and (n+1) passes through 1), n, and (n+1) passes through the loop the loop
where n is the maximum number where n is the maximum number of allowable passes of allowable passes
53
CNPM
ng nhau Vòng lặặp lp lồồng nhau Vòng l
Start at the innermost loop. Set all outer loops toto Start at the innermost loop. Set all outer loops iteration parameter values. minimum iteration parameter values. their minimum their for the typical, maxmax for the Test the min,min, typical, Test 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, Continue loops at typical values. Continue holding all inner loops at typical values. holding all inner outermost loop has been tested. this step until thethe outermost loop has been tested. this step until
Nested Nested Loops Loops
54
CNPM
Vòng lặặp np nốối ti Vòng l
i tiếếpp
If the loops are independent of one another If the loops are independent of one another
then treat each as a simple loop then treat each as a simple loop else* treat as nested loops else* treat as nested loops
endif* * endif
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.
Concatenated Concatenated Loops Loops
55
CNPM
KiKiểểm thm thửử BlackBlack--BoxBox
requirements requirements
output output
input input events events
56
CNPM
KiKiểểm thm thửử BlackBlack--BoxBox
ng chứức năng đư c năng đượợc kic kiểểm thm thửử bbằằng cng cáách nch nàào?o?
c thưc thi vàà hhàành vi c nh vi củủa ha hệệ ththốống đư m như thếế nnàào?o?
(cid:132)(cid:132) GiGiáá trtrịị ccủủa nha nhữững ch (cid:132)(cid:132) ViViệệc thưc thi v (cid:132)(cid:132) NhNhữững lng lớớp input n (cid:132)(cid:132) HHệệ ththốống thư
p input nàào so sẽẽ ttạạo ra nh o ra nhữững test case t
ng thườờng nh ng nhạạy cy cảảm vm vớới nhi nhữững gi ng đượợc kic kiểểm như th ng test case tốốt?t? ng giáá trtrịị input x input xáác đc địịnh nh
p như thếế nnàào?o? c cô lậập như th
nnàào?o? Biên củủa nha nhữững lng lớớp dp dữữ liliệệu đưu đượợc cô l (cid:132)(cid:132) Biên c (cid:132)(cid:132) 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? (cid:132)(cid:132) SSựự kkếết ht hợợp dp dữữ liliệệu đu đặặc trưng s trong hoạạt t c trưng sẽẽ ccóó hihiệệu u ứứng gng gìì trong ho
đđộộng cng củủa ha hệệ ththốống?ng?
57
CNPM
Phân hoạạch tương đương Phân ho
(Equivalence partitions) ch tương đương (Equivalence partitions)
partitions Equivalence partitions Equivalence
58
CNPM
HưHướớng dng dẫẫn phân chia l
n phân chia lớớpp
(cid:132)(cid:132) NNếếu input l invalid invalid (cid:132)(cid:132) NNếếu input l
u input làà mmộột dãy, chia th t dãy, chia thàành 1 l nh 1 lớớp valid v p valid vàà 2 l2 lớớp p
t giáá trtrịị đ đặặc bic biệệt, chia th t, chia thàành 1 l nh 1 lớớp valid v p valid vàà
(cid:132)(cid:132) NNếếu input l llớớp valid v (cid:132)(cid:132) NNếếu input l
nh viên củủa ta tậập hp hợợp, chia th nh 1 p, chia thàành 1
boolean, chia thàành 1 l nh 1 lớớp valid v p valid vàà
u input làà mmộột gi p invalid 2 l2 lớớp invalid u input làà mmộột tht thàành viên c p invalid p valid vàà 1 l1 lớớp invalid t giáá trtrịị boolean, chia th u input làà mmộột gi p invalid 1 l1 lớớp invalid
59
CNPM
Phân hoạạch tương đương ch tương đương Phân ho
useruser queries queries
FKFK input input
output output formats formats
datadata
mouse mouse picks picks
prompts prompts
60
CNPM
p tương đuơng MMẫẫu lu lớớp tương đuơng
Valid data Valid data
user supplied commands user supplied commands responses to system prompts responses to system prompts file names file names computational data computational data
physical parameters physical parameters bounding values bounding values initiation values initiation values output data formatting output data formatting responses to error messages responses to error messages graphical data (e.g., mouse picks) graphical data (e.g., mouse picks)
Invalid data Invalid data
data outside bounds of the program data outside bounds of the program physically impossible data physically impossible data proper value supplied in wrong place proper value supplied in wrong place
61
CNPM
ch giáá trtrịị biênbiên
Phân tíích gi Phân t BVA (Boundary Value BVA (Boundary
Analysis) Value Analysis)
useruser queries queries
FKFK input input
output output formats formats
datadata
mouse mouse picks picks
prompts prompts
input domain input domain
output output domain domain
Input, output, cấu trúc dữ liệu…
62
CNPM
ch tương đương Phân hoạạch tương đương Phân ho
63
CNPM
LLớớp tương đương cho t
p tương đương cho tììm kim kiếếm nhm nhịị phânphân
64
CNPM
MMộột testcase cho t
t testcase cho tììm kim kiếếm nhm nhịị phânphân
Input array (T) 17 17 17, 21, 23, 29 9, 16, 18, 30, 31, 41, 45 17, 18, 21, 23, 29, 38, 41 17, 18, 21, 23, 29, 33, 38 12, 18, 21, 23, 32 21, 23, 29, 33, 38
Key (Key) Output (Found, L) true, 1 false, ?? true, 1 true, 7 true, 4 true, 3 true, 4 false, ??
17 0 17 45 23 21 23 25
65
CNPM
KiKiểểm thm thửử so sso sáánhnh
(cid:132)(cid:132) ĐưĐượợc dc dùùng vng vớới nhi nhữững ph
ng phầần mn mềềm cm cầần cn cóó ttíính tin c
nh tin cậậy y
ng nhóóm km kỹỹ sư ph sư phầần mn mềềm phm pháát tri t triểển n
t cao rrấất cao Phân chia nhữững nh (cid:132)(cid:132) Phân chia nh nhnhữững version đ mmộột đt đặặc tc tảả (cid:132)(cid:132) MMỗỗi 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
i version đượợc kic kiểểm thm thửử vvớới ci cùùng dng dữữ liliệệu kiu kiểểm thm thửử
(cid:132)(cid:132) TTấất ct cảả ccáác version th
vvàà bbảảo đo đảảm rm rằằng tng tấất ct cảả ccóó output gi
c version thựực thi song song v ng nhau output giốống nhau i gian c thi song song vớới thi thờời gian
ththựực vc vàà so sso sáánh knh kếết qut quảả
66
CNPM
ng OOT KiKiểểm thm thửử hư hướớng đng đốối tưi tượợng OOT
Berard [BER93] Berard [BER93] đđềề nghnghịị cho thi test case: cho thiếết kt kếế test case:
nh danh duy nhấất vt vàà phphảải ki kếết ht hợợp p
i test case 1.1. MMỗỗi test rõ rààng vng vớới class đư rõ r case phphảải ci cóó đ địịnh danh duy nh c test i class đượợc test
a test 2.2. ChChỉỉ rõ mrõ mụục đc đíích cch củủa test
a.a. MMộột danh s
t danh sáách nh
ch nhữững tr
ng trạạng th
ng tháái cho đ
i cho đốối tưi tượợng đư
ng đượợc kic kiểểm thm thửử
b.b. MMộột danh s
t danh sáách nh
ch nhữữngng messages
messages vvàà ttáác vc vụụ ssẽẽ đư đượợc thc thựực hic hiệện n
cc.. Danh s
Danh sáách nh
ch nhữững long loạại tri trừừ (exceptions)
(exceptions) ccóó ththểể xuxuấất hi
t hiệệnn
Danh sáách nh d.d. Danh s ., changes in the ch nhữữngng đối tượng ngoài (i.e(i.e., changes in the external )) environment external environment
e.e. CCáác thông tin h
c thông tin hỗỗ trtrợợ
3.3. CCáác bưc bướớc cho m c cho mỗỗi test [BER94]: i test [BER94]:
67
CNPM
Phương phááp kip kiểểm thm thửử OOT OOT …… Phương ph
(cid:132)(cid:132) KiKiểểm thm thửử hư hướớng lng lỗỗi (Fault
i (Fault--based
testing) based testing)
test case dựựa va vàào do dựự đa đaóón nhn nhữững lng lỗỗi ci cóó
khkhảả năng x
p (Class phân cấấp cp củủa la lớớp (Class
(cid:132)(cid:132) ThiThiếết kt kếế test case d năng xảảy ray ra (cid:132)(cid:132) KiKiểểm thm thửử llớớp vp vàà phân c Hierarchy) Testing and the Class Hierarchy) Testing and the Class
test dựựa va vàào ko kịịch bch bảản (Scenario
Based n (Scenario -- Based
(cid:132)(cid:132) ThiThiếết kt kếế test d Design) Test Design) Test (cid:132)(cid:132) DDựựa va vàào nho nhữững gng gìì ngư ngườời di dùùng lng lààm (use
case) m (use--case)
68
CNPM
……Phương ph
Phương phááp kip kiểểm thm thửử OOT OOT ……
(cid:132)(cid:132) KiKiểểm thm thửử ngngẫẫu nhiên (Random
testing) u nhiên (Random testing)
ng cho mộột lt lớớpp
(cid:132)(cid:132) XXáác đc địịnh nh (cid:132)(cid:132) XXáác đc địịnh nh (cid:132)(cid:132) XXáác đc địịnh mnh mộột trt trìình tnh tựự kikiểểm thm thửử nhnhỏỏ nhnhấấtt
(cid:132)(cid:132) an operation sequence that defines the
nh nhữững tng táác vc vụụ ccóó ththểể ááp dp dụụng cho m c trong việệc dc dùùng ch ng buộộc trong vi nh nhữững rng rààng bu ng chúúngng
(cid:132)(cid:132) TTạạo ra mo ra mộột trt trìình tnh tựự kikiểểm thm thửử ngngẫẫu nhiên (
an operation sequence that defines the minimum life minimum life history of the class (object) history of the class (object)
(cid:132)(cid:132) exercise other
u nhiên (nhưng c nhưng cóó gigiáá trtrịị))
exercise other (more complex) class instance life (more complex) class instance life histories histories
69
CNPM
……Phương ph
Phương phááp kip kiểểm thm thửử OOT OOT ……
Partition (cid:132)(cid:132) KiKiểểm thm thửử Partition
(cid:132)(cid:132) LLààm gim giảảm sm sốố test case đư
test case đượợc yêu c c yêu cầầu đu đểể kikiểểm thm thửử mmộột t
(cid:132)(cid:132) Phân chia d
llớớpp Phân chia dựựa va vàào tro trạạng th ng thááii
(cid:132)(cid:132) Phân chia d
categorize and test operations based on their ability (cid:132)(cid:132) categorize and test operations based on their ability to change the state of a class to change the state of a class
Phân chia dựựa va vàào thu
(cid:132)(cid:132) Phân chia d
(cid:132)(cid:132) categorize
o thuộộc tc tíínhnh categorize and test operations based on the (cid:132)(cid:132) categorize and test operations based on the attributes that they use attributes that they use
Phân chia dựựa va vàào loo loạại (category) i (category) categorize and test operations based on the generic and test operations based on the generic function each performs function each performs
70
CNPM
……Phương ph
Phương phááp kip kiểểm thm thửử OOT OOT ……
(cid:132)(cid:132) KiKiểểm thm thửử tương t
tương táác (Inter
class) c (Inter--class)
(cid:132)(cid:132) VVớới mi mỗỗi li lớớp client s
p client sửử ddụụng mng mộột t danh s danh sáách nh ch nhữững tng táác c
o ra mmộột chu t chuỗỗi nhi nhữững tr
u nhiên. Nh. Nhữững tng táác vc vụụ nnàày sy sẽẽ ggởởi thông đi test ng trìình tnh tựự test i thông điệệp tp tớới i
(cid:132)(cid:132) VVớới mi mỗỗi thông đi
vvụụ ccủủa la lớớp đp đểể ttạạo ra ngngẫẫu nhiên a server nhnhữững lng lớớp cp củủa server
(cid:132)(cid:132) VVớới mi mỗỗi ti táác vc vụụ trên đ
i thông điệệp đưp đượợc tc tạạo xo xáác đc địịnh lnh lớớp cp cộộng tng táác c ng server ng trong đốối tưi tượợng server vvàà ttáác vc vụụ đ đááp p ứứng trong đ
trên đốối tưi tượợng server đư ng server đượợc gc gọọi, i, xxáác đc địịnh nh
(cid:132)(cid:132) VVớới mi mỗỗi thông đi
thông điệệp đưp đượợc truy thông đi c truyềềnn
i thông điệệp đưp đượợc truy c 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 test chchúúng vng vớới tri trìình tnh tựự test
71
CNPM
……Phương ph
Phương phááp kip kiểểm thm thửử OOTOOT
empty acct
set up acct
open
setup Accnt
deposit (initial)
deposit
working acct
withdraw
balance credit accntInfo
withdrawal (final)
nonworking acct
dead acct
close
Figure 14.3 St at e diagram f or Account class (adapt ed 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 states allowable states
72
CNPM
(Testing Patterns) CCáác mc mẫẫu kiu kiểểm thm thửử (Testing Patterns)
pair testing): Hai ngư ai ngườời ki
(cid:132)(cid:132) Giao di
i kiểểm thm thửử ccùùng ng c Test c thi cáác Test
(cid:132)(cid:132) KiKiểểm thm thửử ccặặp (p (pair testing): H llààm vim việệc vc vớới nhau trong thi Giao diệện test riêng bi ddùùng đng đểể test nh nhnhữững lng lớớp phô b
i nhau trong thiếết kt kếế vvàà ththựực thi c t (Separate test interface): n test riêng biệệt (Separate test interface): i (internal classes) làà test nhữững lng lớớp np nộội (internal classes) l n ra bên ngoààii p phô bàày giao di y giao diệện ra bên ngo
73
CNPM
TTựự đ độộng ki
ng kiểểm thm thửử
(cid:132)(cid:132) KiKiểểm thm thửử llàà công vi
công việệc tc tốốn nhi
u công sứức. Nh
ng kiểểm thm thửử cung c
n nhiềều công s cung cấấp nhp nhữững công c
c. Nhữững ng cho ng công cụụ cho
chi phíí i gian vàà chi ph
hhệệ ththốống ki phphéép gip giảảm thm thờời gian v (cid:132)(cid:132) PhPhầần ln lớớn hn hệệ ththốống ki
ng kiểểm thm thửử llàà nhnhữững hng hệệ ththốống mng mởở
(cid:132)(cid:132) CCóó ththểể ddùùng kng kịịch bch bảản đn đểể ttạạo do dữữ liliệệu test u test (cid:132)(cid:132) Output c (cid:132)(cid:132) CCóó ththểể phpháát tri
Output cóó ththểể ddùùng đng đểể so sso sáánh mnh mộột ct cáách th
t triểển nhn nhữững hng hệệ ththốống so s công ch thủủ công nh file ng so sáánh file
74
CNPM
MMộột ht hệệ ththốống ki
ng kiểểm thm thửử
75
CNPM
môi trườờngng
KiKiểểm thm thửử kikiếến trn trúúc, c, môi trư vvàà ứứng dng dụụng đng đặặc trưng c trưng
(cid:132)(cid:132) KiKiểểm thm thửử GUI: D
c năng ứứng dng dụụngng
GUI: Dùùng đng đồồ ththịị mô hmô hìình tr nh trạạng th nh, công ng tháái xi xáác đc địịnh, công
n thông mạạngng tư liệệu vu vàà trtrợợ gigiúúpp
ccụụ kikiểểm thm thửử ttựự đ độộngng client/server: (cid:132)(cid:132) KiKiểểm thm thửử client/server: (cid:132)(cid:132) KiKiểểm thm thửử chchứức năng server (cid:132)(cid:132) KiKiểểm thm thửử server (cid:132)(cid:132) KiKiểểm thm thửử cơ s cơ sởở ddữữ liliệệuu (cid:132)(cid:132) KiKiểểm thm thửử truytruyềền thông m
c (task) công việệc (task)
(inter task) liên táác vc vụụ (inter task)
(cid:132)(cid:132) KiKiểểm thm thửử tư li (cid:132)(cid:132) KiKiểểm thm thửử hhệệ ththốống th (cid:132)(cid:132) KiKiểểm thm thửử công vi (cid:132)(cid:132) KiKiểểm thm thửử hhàành vi nh vi (cid:132)(cid:132) KiKiểểm thm thửử liên t (cid:132)(cid:132) KiKiểểm thm thửử hhệệ ththốống: interrupt v
ng: interrupt vớới đi độộ ưu tiên
lý interrrupt, sốố lư lượợng ng
interrrupt xuấất hi interrrupt xu
t hiệện trong m
n trong mộột kho
t khoảảng th
ưu tiên, x, xửử lý interrrupt, s ng thờời gian
i gian……
ng thờời gian th i gian thựựcc