Chuong 3doc

39 3 0
Chuong 3doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 APB 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 P2A2

An-1PnAn

Ở đâ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,yR; 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 =P1P2P3P4 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,yR; 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,yR; x>2}

{A1}P2{A2: x,yR; x>2}

{A2}P3{A3: x,yR; x>4}

{A3}P4{A4: x,yR; x>y+4}

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 P2A2

An-1PnAn

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,yR; x>0}

{A'1}P2{A'2: x,yR; x>0}

{A'2}P3{A'3: x,yR; x>2}

{A'3}P4{A'4: x,yR; 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,yN; x=3y}, đoạn trình P =P1P2

như sau: x:=x+5; (P1)

y:=y+5; (P2)

và mệnh đề liệu {B: x,yR; 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=>LB[x|E]

A=>LBn

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,yR; 0<x<1},

Đoạn trình P =P1P2P3P4 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,yR; x>y+3} Hãy khảo sát {A}P{B} hay không?

Ta có

{B[x|x+y]} {B1 : x+y,yR; x+y>y+3}

{B1[x|x+2]} {B2 : (x+2)+y,yR; (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,rN, x=qy+r, 0r<2y}, đoạn

trình P sau: If yr 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,rN, x=qy+r, 0 r<2y, y r}q:=q+1;r:=r-y;{B}

ii {A,!E: x,y,q,rN, 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: xR, 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,zN; x=a; y=b;

Ra: x,y,zN; 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,zN; x=a; y=b;} {B: x,y,zN; z=ab;}

Ta cần chứng tỏ {A}P {B}

+ Xét mệnh đề {C: x,y,zN; 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,zN; 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,zN; ab=z+x(y*2);}

{C2}{C1[x|(x div 2)]: (x div 2),y*2,zN; ab=z+(x div 2)(y*2);}

Nên cần chứng tỏ:

{C,E: x,y,zN; 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,zN; ab=z+xy;x>0,(x mod 2)0} z:=z+y {C2};

ii {C,E,!F: x,y,zN; 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)

Ngày đăng: 25/05/2021, 22:27

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan