Phương pháp kiểm thử luồng dữ liệu yêu cầu rằng tất cả các chuổi DU đều được kiểm thử ít nhất một lần. Có thể thấy rằng bộ kiểm thử cho luồng dữ liệu có thể không bao trùm tất cả các nhá[r]
(1)CHƯƠNG 3
KỸ THUẬT KIỂM THỬ PHẦN MỀM
I KIỂM THỬ PHẦN MỀM 1 Bài tốn kiểm thử phần mềm
Q trình phát triển hệ thống phần mềm bao gồm chuổi hoạt động sản sinh mã lênh, tài liệu Nơi mà sai sót người xãy lúc Một lỗi bắt đầu xuất lúc bắt đầu trình phát triển, thiết kế, cài đặc Do q trình phát triển phần mềm phải kết hợp với trình kiểm thử
Trong chương thảo luận mục tiêu kiểm thử phần mềm Chủ yếu cung cấp khái niệm mục tiêu cho việc kiểm thử phần mềm Kiểm thử phần mềm đươc hiểu trình bất thường thú vị Thật giai đoạn ban đầu q trình phân tích, thiết kế phát triển, Những kỹ sư lập trình cố gắng xây dựng phần mềm từ khái niệm trù tượng ngồi thực tế để hình thành chương trình cụ thể Và đến giai đoạn kiểm thử họ lại tạo trường hợp kiểm thử để nhằm “đánh đổ” phần mềm xây dựng Thật trình kiểm đình bước q trình phát triển phần mềm có tình chất tiêu cực nhằm bác bỏ xây dựng bước khác
2 Các mục tiêu kiểm thử
Kiểm thử trình thực thi chương trình với mục đích tìm
(2) Một trường hợp kiểm thử tốt trường hợp có khả lớn
trong việc tìm lỗi chưa phát
Một trường hợp kiểm không tốt ( không thành cơng) trường
hợp mà khả tìm thấy lổi chưa biết đền
Mục tiêu kiểm thử phần mềm thiết kế trượng hợp kiểm thử để phát cách có thệ thống loại lỗi khác thực việc với lượng thời gian tài ngun
3 Q trình kiểm thử
Một mơ hình cho q trình kiểm thử mô tả Thông tin đầu vào cung cấp cho trinh kiểm thử gồm :
Thơng tin cấu hình phần mềm: thơng tin bao gồm: mô tả
yêu cầu phần mềm( Software Requirement Specification) Mô tả thiết kế chương trình(Design Specification) mã chương trình
Thơng tin cầu hình kiểm thử bao gồm : kế hoạch kiểm thử, thủ tục
(3)
Từ thông tin đầu vào chương trình chạy kiểm thử kết sau bước đánh giá/so sánh với tập kết mong đợi kết trình so sánh thất bại lỗi phát trình gở lỗi (debugging) bắt đầu Gở lỗi q trình khơng thể đốn trước lỗi gây khác kết kiểm thử kết mong đọi tốn giờ, ngày hay tháng để tìm nguyên nhân chỉnh sửa Và khơng chắn cố hữu mà làm cho q trình kiểm định khó đưa lịch biểu chắn
Lúc mà kết kiểm thử thống kê đánh giá chất lượng độ tin cậy phần mềm ước lượng Nếu có lỗi nghiêm trọng xãy thường xuyên lỗi dẫn đến cần phải thay đổi thiết kế chương trình chất lượng chương trình không tốt Nhưng ngược lại module/hàm
(4)đều hoạt động đắn thiết kế ban đầu lỗi tìm thấy chỉnh sửa dễ dàng, có kết luận đưa :
Chất lượng phần mềm chấp nhận
Những kiểm định khơng thoả đáng/thích hợp để phát
những lỗi nghiêm trọng đề cập
Vậy cuối nều mà trình kiểm thử phát khơng có lỗi Ở có chút nghi ngờ thơng tin cầu hình kiểm thử khơng đủ lỗi tồn phần mềm Những lỗi phát sau người sử dụng chỉnh sửa lập trình viên giai đoạn bảo trì chi phí cơng việc tăng lên 60 đến 100 lần so với chi phí cho mổi chỉnh sửa giai đoạn phát triển
Ta thấy chi phí tiêu tốn nhiều cho trình bảo trì để chỉnh sửa mơt lỗi cần phải có kỹ thuật hiệu để tạo trường hợp kiểm thử tốt
II ĐẶC ĐIỂM KỸ THUẬT KIỂM THỬ PHẦN MỀM
1 Khái niệm
Kiểm thử sản phẩm phần mềm xây dựng cách có chủ đích tập liệu dãy thao tác nhằm đánh giá số toàn tiêu chuẩn sản phẩm phần mềm
Thử nghiệm có hai mục đích: hệ thống phù hợp với đặc tả phơi khuyết tật hệ thống
2 Đặc điểm kiểm thử
(5) Do kiểm thử chạy thử chương trình với tập liệu giả nên khơng thể
khẳng định tính chương trình chất quy nạp khơng hồn tồn
Trong nhiều trường hợp, việc kiểm thử thường thực từ
giai đoạn đầu trình cài đặt sản phẩm
Các chương trình nên kiểm chứng theo hai kỹ thuật: kiểm thử
chứng minh Và nên khẳng định tính chương trình thơng qua văn chương trình
Như vây, chương trình tuyệt đối phải thực thơng qua: tính đắn thuật tốn tính tương đương chương trình với thuật tốn (được thể chứng minh thơng qua văn chương trình)
Việc kiểm thử chương trình nhìn kiện đưa kết luận khơng thể khẳng định chương trình tuyệt đối kiểm thử Tuy vậy, liệu kiểm thử phải phủ kín trường hợp cần đánh giá
Thêm vào đó, q trình kiểm thử, ta thưòng mắc phải đặc trưng nguyên lý chủ quan sau:
Bộ liệu Test khơng thay đổi q trình xây dựng phần mềm
Chỉ Test trường hợp thống, hợp lệ, không quan tâm đến cận
và cố
Cài đặt chức Test riêng chức đó, khơng Test tổng
hợp chức vừa cài đặt với chức cài đặt trước
Người Test đồng thời người xây dựng phần mềm tức vừa đá bóng, vừa
thổi cịi
(6) Kiểm thử lược đồ hệ thống: quan tâm đến chọn (menu) đánh giá
tính hợp lý, khả chọn mục, khả di chuyển qua mục khác, tính đủ, tính khoa học chức
Kiểm thử cận
Kiểm thử cận trên: cho hệ thống thực đến mức tối hạn
Kiểm thử qua cố: tạo cố để kiểm thử phần mềm
2.3. Nguyên tắc kiểm thử
Nguyên tắc khách quan: người kiểm thử tác giả phần
mềm kiểm thử
Nguyên tắc ngẫu nhiên: liệu chức chọn, có chủ đích
nhưng khơng phải xuất theo thứ tự định
Nguyên tắc "người sử dụng kém": hệ thống người sử dụng có
trình độ thấp (ở mức chấp nhận được) dùng thử (Người gây cố khơng lường trước hệ thống )
Nguyên tắc "kẻ phá hoại": hệ thống rơi vào tay có trình độ nghiệp vụ cao,
chủ ý phá hoại "Trình độ" thuộc lĩnh vực công nghệ thông tin lĩnh vực phần mềm hướng tới
2.4. Kỹ thuật kiểm thử
Kỹ thuật đối xứng: dựa vào tính đối xứng thao tác tập liệu
để xậy dựng liệu Test
Kỹ thuật đám đông
Kỹ thuật kiểm thử liệu thật: cho hệ thống vận hành với tập
(7) Kỹ thuật kiểm thử thị trường thật: cho hệ thống vận hành thị
trường thật (khơng thức) để so sánh với hệ thống dùng đánh giá kết
Kỹ thuật đối sánh: cho thực với vài sản phẩm khác với
chức giống tập liệu lập bảng so sánh chức
2.5. Quá trình kiểm thử
Trừ hệ thống nhỏ, nói chung khơng nên kiểm thử ngun khối; q trình kiểm thử chia giai đoạn:
1 Thử đơn vị
2 Thử module
3 Thử hệ
4 Thử hệ thống
5 Thử nghiệm thu: gọi thử anpha
Khi hệ thống đem bán phép thử beta: phân phối hệ thống cho số người dùng đồng ý dùng thử báo cáo lại vấn đề cho người phát triển hệ thống
III THIẾT KẾ KỸ THUẬT KIỂM THỬ PHẦN MỀM 1 Khái Quát
(8)thử có khả tìm kiếm nhiều lỗi phần mềm với thịi gian cơng sức
Hiện phát triển nhiều phương thức thiết kế trường hợp kiểm thử cho phần mềm Những phương pháp cung cấp hướng kiểm thử có tính hệ thống Qua trọng chúng cung cấp hệ thống giúp đảm bảo hoàn chỉnh trường hợp kiểm thử phát hiên lổi cho phần mềm
Một sản phẩm kiểm thử theo cách:
Hiểu rõ chức cụ thể hàm hay module Các
trường hợp kiểm thử xây dựng để kiểm thử tất thao tác
Hiểu rõ cách hoạt động hàm/module hay sản phẩm Các
trường hợp kiểm thử xây dựng để đảm bảo tất thành phần khớp với Đó tất thao tác nội hàm dựa vào mô tả tất thành phần nôi kiểm thủ cách thoả đáng
Cách tiếp cận gọi kiểm thử hộp đen ( black box testing ) cách tiếp cận thứ hai gọi kiểm thử hộp trắng ( white box testing)
(9)While box testing kỹ thuật tập trung vào khảo sát chặc chẻ thủ tục cách chi tiết Tất đường diễn tiến logic chương trình kiểm tra trường hợp kiểm thử kiểm tra tập điều kiện cấu trúc lặp cụ thể kỹ thuật kiểm tra trạng thái chương trình nhiều điểm chương trình nhằm xác giá trị mong đợi điểm có khớp với giá trị thực tế hay khơng
Với tất mục tiêu kiểm định kỹ thuật while box testing có lẽ sẻ dẫn đến chương trình xác tuyệt đối Tất cần thiết kế tất đường logic chương trình sau cài đặt tất trường hợp kiểm định có Tuy nhiên việc kiểm định cách thấu đáo tất trường hợp toán lớn tốn nhiều chi phi Chúng ta hay xem xét ví dụ sau
Bên trái flowchart cho chương trình đơn giản viết khoản 100 dịng mã với vịng lặp thực thi đoạn mã bên lăp lại không 20 lần Tuy nhiên tính tốn cho thấy chương trình có đến khoảng 1014
đường thực
Chúng ta làm tiếp phép tính nhanh để thấy chi phí dùng để kiểm thử đoạn chương trình cách thấu đáo chi tiết Ta giả sử để kiểm định trường hợp cần chạy trung bình tồn giây Và chương trình kiểm thử
Begin
(10)được chạy 24 ngày chạy suốt 365 ngày năm Vây để chạy kiểm thử cho tất trường hợp cần phải tốn khoản 3170 năm
Do kiểm thử cách thấu đáo việc bất khả thi cho hệ thống lớn Mặc dù kỹ thuật thực thực tế với lượng tài nguyên có hạn, nhiên với số lượng có giới hạn đường diễn tiến logic quan trọng có chọn lựa trước để kiểm thử Phương pháp khả thi
Ngồi trường hợp kiểm thử cịn kết hợp hai kỹ thuật nhằm đạt mục tiêu việc kiểm thử
Và chi tiết thảo luận kỹ thuật kiểm thử hộp trắng
2 Kỹ Thuật Thiết Kế Hộp Trắng ( White Box)
Trước tiên ta thảo luận số khái niệm cần thiết cho phần trình bày
sau :
Khái niệm đường diễn tiến chương trình tập hợp lệnh thực thi có thứ tự.trong chương trình Để đơn giản hiểu đoạn chương trình hay chương trình chứa nhiều đường diễn tiến lênh điều kiện rẽ nhánh tạo tập đường
Đường Diễn Tiến Điều Kiện A
Lệnh thực False
(11)Vi dụ ta có đường đường điều kiện A nhận giá trị đường điều kiện A mang giá trị sai
Trong kiểm thử hộp trắng, trường hợp kiểm thử thiết kế để xem xét cấu trúc nội module cấu trúc logic cấu trúc điều kiển Các trường hợp kiểm thử duyệt qua tất lệnh chương trình.Tuy nhiên điều gặp khó khăn trình bày số lượng cơng việc phải làm Vậy ta không tập trung vào thiết kế trường hợp kiểm thử dựa kỹ thuật kiểm thử hộp đen Câu trả lỏi nằm yếu điểm tự nhiên phần mềm
Những lỗi lý luận giả sử không xác có xác xuất xảy
ra tương đương vói trường hợp Những lỗi có khuynh hướng xuất thiết kế cài đặc chương trình, biểu thức điều kiện, biểu thức điều kiển, lổi thường có khuynh hướng xuất trường hợp đặc biệt
Chúng ta thường tin đường diễn tiến khơng
thực thi Tuy nhiên thực tế thực thi Luồng diễn tiến chương trình đơi mang tính trực giác, hiểu giả định tưởng tượng người lập trình luồng điều kiển liệu làm cho tạo lỗi Lỗi loại phát trương hợp kiểm thử đường diễn tiến
Những lỗi cài đặt sai lỗi gõ phím ngẫu nhiên xuất hiên
(12)Mỗi lý giải thích phải tạo trường hợp kiểm thử dựa kỹ thuật hộp trắng Hộp đen củng số loại lỗi không phát trường hợp sử dụng phương pháp
Vậy thiết kế trường hợp kiểm thử cần phải xem xét đến cân mức độ kiểm định khả thực thiết kế Phần sau cấp độ kiểm định dựa kỹ thuật kiểm thử hộp trắng
1 Kiểm Thử Đường Diễn Tiến Của Chương Trình
Đây khái niệm đến việc thiết kế trượng hợp kiểm thử lệnh chương trình thực nhât lần Kỹ thuật không quan tâm đến ảnh hưởng lên đường định ( decisions path)
Các bước để xây dựng tập hợp kiểm thử theo bước sau Dùng tài liệu thiết kế hay source code để vẽ đồ thị mơ tả flow
chart chương trình hay hàm Xác định đồ thị V(G)
3 Từ đồ thị xác định tập đường độc lập tuyến tính lẫn
4 Xây dựng trường hợp kiểm thử dựa tâp đường xác định bước
Ví Dụ
Tất lệnh thực thi nằm đường thực thi chương trình Trong phần xét thủ tục average
(13)Mã Lênh Của Thủ Tục average
Int average( ) {
/* Hàm tính giá trị trung bình 100 số */ int value[100];
int average,totalinput, totalvalid, minimum, maximum, sum; int i;
i=0;
totalinput = totalvalid =0; sum = 0;
while( value[i]<>-999 and totalinput <100 totalinput ++;
if( value[i] >= minimum AND value[i] < maximum) {
totalvalid ++; sum = sum + value[i] }
i++; )
if( totalvalid > ){ average = sum/totalvalid }
else{
(14)Mã lệnh thủ tục phân tích biểu diễn thành dạng flowchart tương ứng bên đoạn mã Ở đay chương trình có 13 để điểm biểu diển đồ thị
2) Tạo đồ thị flow graph biểu diễn tương ứng với flow chart hàm
average
Flow Graph Của Thủ Tục average
3) Trong trường hợp ta xác định có trường hợp kiểm thử sau :
Đường : 1-2-10-11-13 Đường : 1-2-10-12-13 Đường : 1-2-3-10-11-13 Đường : 1-2-3-4-5-8-9-2 Đường : 1-2-3-4-5-6-8-9-2 Đường : 1-2-3-4-5-6-7-8-9-2
3 1
2
10
11 12
13
4 5
6
7 8
9
Node Edge
R1
R2
R3
R4
(15)Ba chấm sau đường 4, 5, cho biết đường qua phần lại câu trúc điều kiển chấp nhận
4) Tạo trường hợp kiểm định dựa đường
Bảng 1 Các Trường hợp kiểm định Mô Tả
1 value[k] = giá trị hợp lệ, với k < i value[i] = -999 vơi giá trị 2<=i <=100 Giá trị mong đợi
Giá trị trung bình mong đợi giá trị trung bình tât giá trị k value[1] = -999
Giá trị mong đợi :
Giá trị trung bình mong đợi giá trị trung bình -999, biền chứa giá trị tổng cộng khác
3 Cố gắng thực tiến trình cho 101 giá trị hơn, 100 giá trị đầu value giá trị hợp lệ
(16)Mô Tả
4 value[i] = giá trị hợp lệ i< 100 value[k]< minimum k < i Giá trị mong đợi :
Giá trị trung bình mong đợi giá trị trung bình k giá trị tổng nhận giá trị
5 value[i] = giá trị hợp lệ i <100 value[k] > maximum k<=i
Giá trị mong đợi :
Giá trị trung bình mong đợi giá trị trung bình n giá trị tổng nhận giá trị
6 value[i] = giá trị hợp lệ i <100 Giá trị mong đợi :
Giá trị trung bình mong đợi giá trị trung bình n giá trị tổng nhận giá trị
Mỗi trường hợp chạy so sánh với kết mong đợi Nếu tất trường hợp kiểm định cho kết mong muốn khẳng định tất dịng lệnh thủ tục average kiểm thử lần
2 Kiểm Định Cấu Trúc Điều Kiển Kiểm thử biểu thức điều kiện
(17) X hay Not X điều kiện logic đơn giản
Biểu thức quan hệ thường có dạng : E1 <phép tốn quan hệ> E2
E1, E2 biểu thức số học phép toán quan hệ phép toán sau : <, <=, ==, != , > hay >= Một điều kiện kết hợp hay nhiều điều kiện đơn giản, phép toán boolean : OR ( | |, AND (&) and NOT (!)
Các loại lỗi điều kiện bao gồm
Lỗi thao tác luận lý ( lỗi tồn biểu thức không đúng, thiếu thừa thao tác luận lý
Lỗi giá trị biến luận lý
Lỗi dấu ngoặc
Lỗi phép toán quan hệ
Lỗi biểu thức tốn học
Mục đích kiểm thử cấu trúc điều kiển phát không lỗi điều kiện mà cịn lỗi khác chương trình Nếu tập kiểm thử cho chương trình P hiệu cho việc phát lỗi điều kiện P,thì kiểm thử đị phát lỗi khác P
E1 <phép toán quan hệ> E2
(18)Một biểu thức có n biến, có 2n khả kiểm thử xãy
khi (n>0)
Kiểm Thử luồng Dữ liệu (DFT)
Phương pháp kiểm thử luồng liệu chọn lựa số đường diễn tiến chương trình dựa vào việc cấp phát, định nghĩa, sư dụng biến chương trình
Để hình dung cách tiếp cận ta giả sử câu lệnh chương trình gán số hàm khong thay đổi thông số biến tồn cục
DEF(S) = { X | lệnh S chứa định nghĩa X } USE(S) = { X | lệnh S chứa lệnh/biểu thức sủ dụng X } Nếu S câu lệnh if hay loop, tập DEF S rỗng USE tập dựa điều kiện câu lệnh S
Định nghĩa biến X câu lênh S cho sống câu lênh S’ tồn đường từ câu lệnh S đến câu lệnh S’ không chứa định nghĩa X
Định nghĩa Một chuổi dùng biến X ( gọi DU X) ký hiệu [X, S, S’] định nghĩa X câu lệnh S sống câu lênh S’
(19)thêm biến phần else khơng tồn Trong tình hng nhánh else câu lênh ì khơng cần thiết phải bảo hộ phương pháp
DFT hũư ích cho lồi kiểm thửmột chương trình có nhiều lệnh if lệnh lặp lồng nhiều cấp
Ví Dụ
Hình 1 Một Thủ Tục Với Lệnh Điều Kiện Và Lệnh Lặp Phức Tạp
Để xây dựng trường hợp kiểmthử DFT cho thủ tục trên, cần phải biết định nghĩa sử dụng biến điều kiện khối thủ tục Giả sử biến X định nghĩa câu lệnh cuối khối lệnh B2, B3, B4 B5 biến X sử dụng đầu khối B2, B3, B4, B5 B6 Kiểm thử DU yêu cầu đường thực thi ngắn từ Bi, 0< i <= đến Bj 1<j<=6.( thật trường hợp trường hợp kiểm thử có khả phát bất
proc x B1;
do while C1 if C2
(20)kỳ việc dùng biến X điều kiện C1, C2, C3 C4) có đến 25 chuổi DU cần đủ để bao hàm trường hợp khác
Kiểm Thử Vòng Lặp
Vòng lặp tảng cho nhiều thuật toán cài đặc phần mềm nhiên lúc cịn ý đến việc xây dựng trương hợp để kiểm thử
Kiểm thử vòng lặp tập trung vào tính chất cấu trúc vịng lặp Có cầu trúc vịng lặp sau: vịng lặp đơn giản, vịng lặp móc nối, vịng lặp tạo thành tổ, vịng lặp khơng cầu trúc
Các Cấu Trúc Lặp
vòng lặp đơn giản
vòng lặp tạo
thành tổ vịng lặp móc nối
(21)Vòng Lặp Đơn
Tập hợp trường hợp kiểm thử cho vòng lặp đơn, với n maximum số lần lặp
Bỏ tình tồn vẹn vịng lặp
Chỉ cần lần duyệt xuyên qua vòng lặp
Hai lần duyệt xuyên qua vòng lặp
m lần duyệt xuyên qua vòng lặp
n-1, n, n+1 lần duyệt xuyên qua vòng lặp
Vòng Lặp Tạo Tổ
Nếu mở rộng phương pháp kiểm thử cho vòng lặp đơn số lượng trường hợp kiểm thử tăng nhiều Sau cách giảm sồ lượng trường hợp kiểm thử :
Bắt đầu vòng lặp Thiết lập tất vòng
lặp khác giá trị minimum
Kiểm sốt vịng lặp trong giữ vịng lặp
bên ngồi lặp lại với giá trị minimum thông số ảnh hưởng ( thông số biến lặp) Thêm mơt số trường hợp phạm vi biến lặp số giá trị đặc biệt
Thực hiên bước tiến dần
Thực tiếp tất vòng lặp kiểm thử
(22)Vịng Lặp Móc Nối
Đồi vói kiểu kiểm thử cách với vòng lặp đơn biền lặp độc lập với Tuy nhiên vịng lặp móc nối biến lặp vòng lặp thứ sử dụng biến khởi tạo cho vịng lặp vịng lặp khơng cịn độc lặp nữa, Phương pháp dùng cho vòng lặp tạo tổ sử dụng
Vịng Lặp Khơng Có Cấu Trúc
Khi gặp cầu trúc lặp vầy nên thiết kế lại Việc kiểm thử phức tạp
3 Kỹ Thuật Kiểm Thử Hộp Đen ( Black Box)
Là phương pháp tập trung vào yêu cầu mặt chức phần mềm Có thể tạo điều kiện input để kiểm thử tất chức chương trình Kiểm thử hộp đen chất môt phương pháp trái ngược với kiểm thử hộp trắng Đúng phương pháp bổ xung cho phương pháp kiểm thử hộp trắng để phát tất loại lỗi khác nhiều phương pháp kiểm thử hộp trắng biết
Kiểm thử hộp đen cố gắng phát loại lỗi sau:
Không hay môt số hàm/module
Giao diện không phù hợp/ lỗi interface
Lỗi cấu trúc liệu hay thao tác lên data bên
(23) Lỗi khởi động huỹ dư liệu, biến
Không giống phương pháp kiểm thử hộp trắng thực ỏ giai đoạn đầu trình kiểm thử phần mềm, Phương pháp tập trung vào phần sau q trình kiểm thử Mục đích q trình kiểm thử tập trung vùng thơng tin chư khơng phải vùng mã chương trình Các trường hợp kiểm thử để trả lời câu hỏi sau:
Như hàm/chức hợp lệ?
Lớp thơng tin đầu vào tạo trương hợp kiểm
thử tốt ?
Hệ thống có khả bị thương tổn vói giá trị nhập vào
đó khơng?
Ranh giới vùng liệu có đôc lập với hay không ?
Tỷ lệ kích thước liệu mà hệ thống hứng chiệu bao
nhiêu?
Phân Vùng Tương Đương
Đây kỹ thuật chia vùng thông tin nhập vào chương trình thành lớp thơng tin/dữ liệu Lớp tương đương biểu diễn thành tập giá trị hợp lệ không hợp lệ Nhưng lớp liệu tương đương xác định theo cách sau:
Nếu thông tin đầu vào định vùng giá trị, ta có
lớp liệu hợp lệ hai không hợp lệ định nghĩa
Nếu thơng tin đầu vào định giá trị, ta có lớp
(24) Nếu thông tin đầu vào định giá trị tập, ta có
một lớp liệu hợp lệ hai không hợp lệ định nghĩa
Nếu thông tin đầu vào định giá trị boolean, ta có
lớp liệu hợp lệ không hợp lệ định nghĩa Ví Dụ
Mơt khách hàng liên lạc với ngân hàng máy tính cá nhân, họ gởi mật gồm chử số thao tác khởi động số chức ngân hàng Phần mềm hổ trợ cho ứng dụng ngân hàng chấp nhận liệu theo dạng sau:
Mã vùng - rỗng hay chử số
Tiền tố - chử số không bắt đầu hay
Hậu tố - chử số
Mật khẩu – ký tự alphanumberic
Thao tác/nghiệp vụ ngân hàng – “xemtàikhoản”, “gởitàikhoản” , ”rúttàikhoàn” …
Áp dụng kỹ thuật phân vùng thông tin để tạo kiểm thử sau :
Bảng 2 Các Trường Hợp Kiểm Định Dữ Liêu
vào
Mô Tả
Mã vùng Boolean – giá trị mã vùng nhập khơng
Range – giá trị mã vùng định nghĩa từ 200 đến 999
(25)Dữ Liêu vào
Mô Tả
Hậu tố Value - chuổi số
Mật Boolean – giá trị mật nhập không
Value – giá trị nhận chuổi ký tự Thao
tác/nghiệp vụ ngân
hàng
Set - tập thao tác ghi bên
Phân Tích Giá Trị Biên
Thực tế phần lớn lỗi có khuynh huớng xuất biên vùng thông tin đầu vào vị trí vùng Do kỹ thuật phân tích giá trị biên (BVA) phát triển kỹ thuật lựa chọn số trường hợp kiểm thử giá trị biên kỹ thuật bổ xung cho kỹ thuật phân vùng tương đương trên, việc chọn giá trị vùng
Nguyên tắc BVA có phần tương tự vói phương pháp phân vùng thông tin:
1 Nếu điều kiện đầu vào xác định phạm vi định giá trị a b, trường hợp kiểm thử thiết kế giá trị biên a b, a b
(26)3 Áp dụng 1,2 cho giá trị trả
Kỹ Thuật Cause-Effect Graphing
Ta thấy kỹ thuật liệu đầu vào phân loại để phân tích Tuy nhiên kỹ thuật trình bày cho phép xác định trường hợp kiểm thử hiểu lúc liệu đầu vào khó phân lồi thành lớp kỹ thuật
Kỹ thuật gồm có bước sau :
1 Xác định Cause ( điều kiện nhập vào) effect ( hành động) cho mổi module cần kiểm định
2 Xây dựng đồ thị cause-effect:
3 Đồ thị chuyển thành bảng định
4 Những phần/luật bảng định chuyển thành trường hợp kiểm thử
Ví Dụ
Mơ tả module:
Sồ lượng vần đề cần kiểm tra Kết quả
“Pass” - kết hay nhiều chủ để thành công “Temporary pass” - kết hay chủ để thành công “Failure” - kết có chủ để thành công
(27)Bảng 3 Mối Quan Hệ Giữa input & output
Cause( Dữ Liệu Nhập) Result (Dữ Liệu Xuất )
1 Nếu kết hay nhiều chủ để thành công
2 Nếu kết hay chủ để thành công
4 Pass
5 Temporary Pass Failure
Bước 2 Biểu diễn quan hệ cause result đồ thị
Hình 2 Một Đồ Thị cause - effect
Hình 3 Một Số Ký Hiệu Sử Dụng Trong Đồ Thị cause -effect
3 1
2
4 5
(28)Bước 3 Tạo bảng định
Bảng 4 Bảng Quyết Định
Cause & Result T1 T2 T3
C
au
se Pass hay nhiều chủ đề
Y N N
2 “Pass” hay nhiêu chủ đề
- Y N
R
es
u
lt 3 “Pass” kết xuất ra X -
-4 “Temporary Pass” kết xuất
- X
-5 “Failure” kết xuất - - X
Chú thích cho bảng định :
Dòng định điều kiện: dòng bao gồm điều kiện để xác định B A B A NOT A B C A AND A B C O OR A B E Exclusive-
if A== true then B = false if B== true then A = false
(29)định cho chương trình: ( dịng có màu xâm bảng )
Y : true, N false, | khơng có định
Dịng định hành động: dịng định tiến trình có thực thi hay khơng:( dịng có màu sáng bảng )
X : tiến trình hoạt động, | khơng có tiến trình hoạt động
IV CHỨNG MINH TỐN HỌC TÍNH ĐÚNG ĐẮN CỦA CHƯƠNG TRÌNH
Như đề cập trên, mục tiêu chứng minh toán học để khẳng định tính chương trình thơng qua văn chương trình
1 KHÁI NIỆM CHUNG
Như ta biết, chương trình P biến đổi P để chuyển vào x thành y; x y hoàn toàn xác định trước
Như vậy, chương trình P gọi thực xác mục tiêu người thiết kế đặc Ta gọi:
+ Giả thiết A mệnh đề phát biểu để thể tính chất vào,
gọi tắt mệnh đề liệu vào
+ Kết luận B mệnh đề phát biểu để tính chất cần có liệu ra,
(30)Do P có tính hữu hạn nên biểu diễn P dãy liên tiếp cấu trúc điều khiển P1, P2, ,Pn Do vậy, cách mà ta khẳng định
được:
P1 biến đổi A thành A1
P2 biến đổi A1 thành A2
Pn biến đổi An-1 thành An
Và dựa vào quy tắc toán học, An suy B ta nói P
đúng với vào A B Lúc ký hiệu APB hay
Cần ý khác với :mệnh đề {A} suy diễn mệnh đề {B} dựa vào quy tắc tốn học
Nói cách khác, để chứng minh P đúng, ta chứng minh theo sơ đồ sau:
A P1 A1 A1 P2A2
An-1PnAn
Ở đây, cần để ý tính chất A
tính chất B khơng liên quan đến
Ví dụ 1: Cho mệnh đề liệu vào {A: x,yR; 0<x<1} P1
P2
Pn
A
A1
An
B
A=>PƠB A=>B
là PƠ
A=>LƠB
(31)Đoạn trình P =P1P2P3P4 sau:
x:=1/x+1;(P1)
y:=y+1; (P2)
x:=x+2; (P3)
x:=x+y; (P4)
và mệnh đề liệu {B: x,yR; x>y+3}
Lúc ta có dãy biến đổi tính chất liệu vào/ sau: {A} P1{A1: x,yR; x>2}
{A1}P2{A2: x,yR; x>2}
{A2}P3{A3: x,yR; x>4}
{A3}P4{A4: x,yR; x>y+4}
và
Vậy ta có kết luận {A}P{B} hay nói cách khác P với liệu vào {A} liệu {B}
Cần để ý khí ta có dãy biến đổi tính chất liệu vào sau:
A P1 A1 A1 P2A2
An-1PnAn
A4=>LƠB
(32)Thì chưa thể kết luận điều cịn tuỳ thuộc vào mệnh đề trung gian thu {A1},{A2}, {An} "mạnh nhất" hay chưa
Xét ví dụ cho trên, ta có dãy biến đổi sau: {A} P1{A'1: x,yR; x>0}
{A'1}P2{A'2: x,yR; x>0}
{A'2}P3{A'3: x,yR; x>2}
{A'3}P4{A'4: x,yR; x>y+2}
Rõ ràng ta có: theo ta có kết luận {A}P{B} Trong trường hợp này, ta thấy mệnh đề {A'1}{A'2}{A'3}{A'4} rõ ràng
mệnh đề hệ mệnh đề {A1}{A2}{A3}{A4}
Ví dụ 2: Cho mệnh đề liệu vào {A: x,yN; x=3y}, đoạn trình P =P1P2
như sau: x:=x+5; (P1)
y:=y+5; (P2)
và mệnh đề liệu {B: x,yR; x=3y} Ở đây, rõ ràng ta có
6.4.2 TÍNH CHẤT HOARE
1 Tính chất 1: Tính chất tuần tự
Nếu mệnh đề A sau chịu tác động khối cấu trúc điều khiển P ta B mệnh đề B sau chịu tác động cấu trúc điều khiển Q ta C A chịu tác động P,Q thu C
A'4 L>B
(33)Hay nói cách khác, tiên đề dãy thao tác: Nếu A P B B Q C A P,Q C
2 Tính chất 2: tính chất phép gán
Điều kiện để có mệnh đề B sau thực lệnh gán x: = E (với E
biểu thức) từ mệnh đề {A} trước ta phải có {A} suy dẫn {B[x| E]}
Mệnh đề {B[x|E]} mệnh đề thu từ {B} phép thay xuất x {B} E Tức là: A x: = E B
Kỹ thuật lần ngược Tính chất gán
Cho đoạn trình P gồm n phép gán x1:=E1; x2:=E2; xn:=En; để
{A}P{B}
ta phải có Trong {Bn} xác định sau
Trong mệnh đề {Bi} xác
định sau:
{B1} mệnh đề {B[xn|En]} A=>LB[x|E]
A=>LBn
Bn-1
Bn
x1:=E1
x2:=E2
xn:=En
A
B1
(34){Bn-1} mệnh đề {Bn-2[x2|E2]}
{Bn} mệnh đề {Bn-1[x1|E1]}
Trong trường hợp ta nói P có lỗi
Ví dụ 3: (Xétví dụ 1)Cho mệnh đề liệu vào {A: x,yR; 0<x<1},
Đoạn trình P =P1P2P3P4 sau:
x:=1/x+1;(P1)
y:=y+1; (P2)
x:=x+2; (P3)
x:=x+y; (P4)
và mệnh đề liệu {B: x,yR; x>y+3} Hãy khảo sát {A}P{B} hay không?
Ta có
{B[x|x+y]} {B1 : x+y,yR; x+y>y+3}
{B1[x|x+2]} {B2 : (x+2)+y,yR; (x+2)+y>y+3}
{B2[y|y+1]} {B3 : (x+2)+(y+1),(y+1)R; (x+2)+(y+1)>(y+1)+3}
{B3[x|1/x+1]} {B4 : ((1/x+1)+2)+(y+1),(y+1)R; ((1/x+1)+2)+
(y+1)>(y+1)+3}
Rõ ràng ta có , nên {A}P{B}
A=>B4 L
(35)3 Tính chất rẽ nhánh
i Với mệnh đề liệu vào {A}, mệnh đề liệu {B}, biểu thức logic E,
và đoạn trình P Nếu ta có {A, E}P{B} ta nói mệnh đề {A} {B} tuân theo cấu trúc rẽ nhánh dạng khuyết với cấu trúc P điều kiện lựa chọn E; tức là: {A} if E then P; {B}
ii Với mệnh đề liệu vào {A}, mệnh đề liệu {B}, biểu thức logic E,
và đoạn trình P, Q Nếu ta có {A, E}P{B} {A,!E}Q{B} ta nói mệnh đề {A} {B} tuân theo cấu trúc rẽ nhánh dạng đủ với cấu trúc P, Q điều kiện lựa chọn E; tức là: {A} if E then P else Q; {B}
Ví dụ 4: Cho mệnh đề liệu vào {A: x,y,q,rN, x=qy+r, 0r<2y}, đoạn
trình P sau: If yr then
Begin
q:=q+1; r:=r-y; End;
(36)Áp dụng tính chất phép gán, ta có:
i {A,E: x,y,q,rN, x=qy+r, 0 r<2y, y r}q:=q+1;r:=r-y;{B}
ii {A,!E: x,y,q,rN, x=qy+r, 0 r<2y, y>r}=>{B}
do suy {A}P{B}
4 Tính bất biến chương trình
Cho mệnh đề liệu vào {A} đoạn trình P Nếu ta có {A}P{A} ta nói tính chất liệu mệnh đề {A} không thay đổi chịu tác động đoạn trình P lúc người ta nói mệnh đề {A} bất biến P, tức ta có: {A}P {A}
Ví dụ 5: Ta có mệnh đề {A: xR, x>0} bất biến đoạn trình P:
x:=x*x; ta có {A}P{A}
5. Tính chất lặp
Cho mệnh đề liệu vào {A}, biểu thức logic E đoạn trình P Nếu mệnh đề {A} tuân theo cấu trúc lặp P với điều kiện lặp E mệnh đề {A} bất biến P điều kiện E, tức {A,E}P{A}, kết thúc vịng lặp ta có mệnh đề {A,!E} Lúc ta viết: {A} while E do P; {A,!E}
Ví dụ 6: Cho x,y,z số nguyên không âm Hãy viết chương trình để tính z=xy, biết x,y nhập từ bàn phím Hãy khẳng định tính chương trình
(37)Ta có đoạn trình sau: Vào: x,y,zN; x=a; y=b;
Ra: x,y,zN; z=ab;
Chương trình P viết: z:=0;
while x>0 do Begin
If (x mod 2)0 then z:=z+y;
x=x div 2; y:=y*2; End;
Return z;
Ta cần phải khẳng định chương trình với yêu cầu đặt
Thật vậy, gọi mệnh đề thể tính chất liệu vào chương trình {A} mệnh đề thể tính chất liệu cần có {B}, ta có
{A: x,y,zN; x=a; y=b;} {B: x,y,zN; z=ab;}
Ta cần chứng tỏ {A}P {B}
+ Xét mệnh đề {C: x,y,zN; ab=z+xy;}
+ Ta có {A} z:=0;{C}
(38)Begin
If (x mod 2)0 then z:=z+y;
x=x div 2; y:=y*2; End;
Ta cần có: {C,E: x,y,zN; ab=z+xy;x>0}Q{C}, với đoạn trình Q sau:
If (x mod 2)=0 then z:=z+y; x=x div 2;
y:=y*2;
Theo tính chất phép gán, ta có:
{C1}{C[y|y*2]: x,y*2,zN; ab=z+x(y*2);}
{C2}{C1[x|(x div 2)]: (x div 2),y*2,zN; ab=z+(x div 2)(y*2);}
Nên cần chứng tỏ:
{C,E: x,y,zN; ab=z+xy;x>0} If (x mod 2)0 then z:=z+y; {C2}
Dễ dàng ta có
i {C,E,F: x,y,zN; ab=z+xy;x>0,(x mod 2)0} z:=z+y {C2};
ii {C,E,!F: x,y,zN; ab=z+xy;x>0,(x mod 2)=0} =>{C2};
Vậy {C} bất biến Q Nên kết thúc Q, ta có mệnh đề {C,!E} + Dễ dàng chứng tỏ: {C,!E}=>{B}
Vậy ta có {A}P{B}, hay chương trình
Để ý rằng: {A,E}P{A} nên trường hợp {A}=>E vịng lặp vô hạn không tồn mệnh đề {A, !E}
L L
(39)