Giai đoạn Phõn tớch yờu cầu Thiết kế sơ bộ Thiết kế chi tiết Lập trỡnh và kiểm định đơn vị Tớch hợp và kiểm định tớch hợp Kiểm định hệ thống Hai thập kỷ 1960-1970 10% 80% 10% Hai thập kỷ 1980 20% 60% 20% Hai thập kỷ 1990 40% 30% 30%
1.3.2. Tại sao phải kiểm định
Như đó trỡnh bày ở trờn, một phần mềm sau khi sản xuất ra do nhiều yếu tố cú thể dẫn đến việc sai so với đặc tả ban đầu, lỗi trong thiết kế và viết mó của bản thõn chương trỡnh. Cỏc chương trỡnh đú sau khi được thiết kế và được bỏn cho người sử dụng sẽ khiến việc bảo hành rất mất thời gian, tiền bạc và sức lực, nếu nghiờm trọng sẽ phỏ hủy nhiều thứ liờn quan khi ỏp dụng. Đõy chớnh là những vấn đề về chất lượng phần mềm.
Kiểm định sẽ giỳp phỏt hiện ra những lỗi sai sút so với đặc tả, phỏt hiện được những lỗi hay mắc phải hoặc chưa từng được phỏt hiện. Một cuộc kiểm định thành cụng chớnh là việc xỏc định những lỗi mà chưa từng được phỏt hiện.
Việc phỏt hiện lỗi và tạo điều kiện để khắc phục sẽ làm chất lượng phần mềm nõng cao, cỏc chi phớ cho quỏ trỡnh bảo dưỡng giảm xuống nhiều, cỏc phần mềm sẽ trở nờn hiệu quả hơn.
Một chương trỡnh dự lớn hay nhỏ đều qua cỏc cụng đoạn khỏc nhau để tạo ra được nú. Cỏc phần mềm càng lớn thỡ đặc tả của nú càng nhiều, việc mắc lỗi trong quỏ trỡnh xõy dựng là khụng thể trỏnh khỏi. Quỏ trỡnh kiểm định tại giai đoạn cuối sẽ tỡm ra sai sút và tạo điều kiện để hoàn thiện hơn chương trỡnh.
Kiểm định chương trỡnh cũn đúng vai trũ rất lớn trong cụng tỏc giỏo dục. Vớ dụ như trong cỏc cuộc thi Tin học, hội đồng chấm thi phải mất rất nhiều thời gian để kiểm tra lại chương trỡnh và chấm bài. Cỏc bài này đều phải được kiểm tra chặt chẽ, nếu khụng cú cỏc nguyờn tắc và phương phỏp kiểm tra và thử nghiệm thỡ việc chấm thi sẽ trở lờn rất khú khăn trong việc xõy dựng cỏc Testcase chuẩn để kiểm tra được hết cỏc đặc tả của bài đề ra.
1.3.3. Quy trỡnh kiểm định
Mục đớch của cuộc kiểm định chớnh là thiết kế được một chuỗi cỏc trường hợp kiểm định mà cú khả năng phỏt hiện lỗi cao. Chuỗi cỏc trường hợp kiểm định đú sẽ rà soỏt hết tất cả cỏc trường hợp cú thể xử lý của chương trỡnh so với đặc tả ban đầu. Bỏo cỏo kiểm định sẽ thống kờ hết tất cả cỏc trường hợp kiểm định đó chạy, những lỗi đó phỏt hiện trong kiểm định, chi tiết cỏc dữ liệu đầu vào, cỏc luồng dữ liệu, đầu ra mong đợi của chương trỡnh (đõy chớnh là kết quả đỳng của chương trỡnh), kết quả thực tế cho ra của chương trỡnh và mục đớch kiểm định…Muốn cú được cỏc dữ liệu đầu vào hợp lý và cú khả năng phỏt hiện lỗi cao như vậy thỡ cần phải thụng qua một kế hoạch và giai đoạn chuẩn bị hợp lý nhằm thiết kế cỏc Testcase, cỏc dữ liệu cho cỏc trường hợp kiểm định. Cỏc giai đoạn kiểm định này cú thể được mụ tả qua hỡnh vẽ sau:
Như vậy mụ hỡnh chi tiết quỏ trỡnh kiểm định như sau:
Phõn tớch Thiết kế Mó húa Bàn giao
SP Bỏo cỏo kiểm định Kế hoạch kiểm định Kiểm định Phõn tớch Thiết kế Mó húa Kiểm định Thiết kế cỏc trường hợp kiểm định Chuẩn bị dữ liệu kiểm định Chạy chương trỡnh với dữ liệu kiểm định So sỏnh cỏc kết quả với cỏc trường hợp kiểm định Cỏc trường hợp kiểm định Dữ liệu kiểm định Kết quả kiểm định Bỏo cỏo kết quả cuối cựng Bàn giao SP
Hỡnh 1.8. Qui trỡnh chi tiết quỏ trỡnh kiểm định
1.3.4. Cỏc phƣơng phỏp kiểm định phần mềm a. Phƣơng phỏp kiểm định hộp đen
Kỹ thuật kiểm định hộp đen cũn gọi là kiểm định vào ra, chỉ tập trung vào cỏc yờu cầu chức năng của phần mềm.
Người kiểm định xem phần mềm như là một hộp đen khụng thể nhỡn thấy vào bờn trong xem nú hoạt động như thế nào. Do đú, sẽ khụng quan tõm nhiều đến cấu trỳc bờn trong của phần mềm mà cần quan tõm đến miền thụng tin, cho nhập cỏc giỏ trị đầu vào, thực thi chương trỡnh và xem xột cỏc kết quả đầu ra tương ứng cú phự hợp với kết quả mong đợi hay khụng?
Trong kiểm định hộp đen, người kiểm định chỉ biết phần mềm dự kiến thực hiện và những gỡ dự kiến khụng thực hiện. Căn cứ vào đặc tả, người kiểm định xõy dựng cỏc nhúm giỏ trị đầu vào cho tất cả cỏc yờu cầu chức năng của chương trỡnh.
Để tỡm tất cả cỏc lỗi trong chương trỡnh thỡ điều kiện bắt buộc là phải kiểm định tất cả cỏc giỏ trị đầu vào. Điều này thực tế là khụng tể thực hiện được. Tuy nhiờn, nếu số lượng và sự đa dạng của cỏc giỏ trị đầu vào và số lượng kiểm định đạt đến cũng cú thể kết luận rằng: “Phần mềm cú thể chấp nhận được”.
Kiểm định hộp đen nhằm tỡm ra cỏc loại sai [4], đú là:
- Chức năng thiếu hoặc chức năng khụng đỳng đắn. - Sai về giao diện.
- Sai trong cấu trỳc hoặc trong truy cập dữ liệu ngoài. - Sai trong thực thi.
- Sai khởi đầu hoặc kết thỳc.
Dữ liệu vào Kết quả ra
ra
Kiểm định hộp đen tập trung để trả lời cỏc cõu hỏi sau đõy:
- Hiệu lực chức năng được kiểm định đến đõu? - Lớp đầu vào nào làm cho cỏc ca kiểm định tốt? - Sự nhảy cảm đối với một vài giỏ trị vào nào?
- Cỏc biờn của lớp dữ liệu đó được cụ lập như thế nào?
- Khả năng dung thứ lỗi đối với cỏc nhịp điệu và khối lượng dữ liệu như thế nào? - Những tổ hợp dữ liệu đặc biệt ảnh hưởng gỡ đến hoạt động hệ thống.
Khi ỏp dụng cỏc kỹ thuật kiểm định hộp đen, cần tỡm ra được cỏc ca kiểm định thoả món cỏc tiờu chuẩn sau:
- Cỏc ca kiểm định là thu gọn.
- Cỏc ca sử dụng núi cho biết về sự tồn tại hoặc vắng mặt của một lớp sai.
b. Phƣơng phỏp kiểm định hộp trắng
Kiểm định hộp trắng hay cũn gọi là kiểm định hướng logic, cho phộp kiểm tra cấu trỳc bờn trong của phần mềm với mục đớch đảm bảo rằng tất cả cỏc cõu lệnh và điều kiện sẽ được thực hiện ớt nhất một lần. Trong kỹ thuật này người kiểm định lấy dữ liệu xuất phỏt từ việc kiểm tra logic của chương trỡnh (bỏ qua đặc tả).
Hộp Trắng ở đõy chớnh là hộp trong suốt. Chớnh vỡ vậy, kỹ thuật kiểm định này cũn cú một số tờn khỏc là kiểm định hộp thủy tinh (Glass-Box Testing), hay kiểm định hộp trong suốt (Clear-Box Testing). Người kiểm định truy nhập vào mó nguồn chương trỡnh và cú thể kiểm tra nú, lấy đú làm cơ sở để hỗ trợ việc kiểm định (cú nghĩa là người kiểm định cú thể nhỡn thấy bờn trong hộp). Dựa vào những gỡ thấy được, người kiểm định cú thể xỏc định được cỏc số liệu cụ thể và hướng việc kiểm định theo những thụng tin đú.
Kiểm định hộp trắng sẽ đi vào kiểm định cỏc đường dẫn lệnh trong chương trỡnh. Trong một chương trỡnh thụng thường sẽ cú nhiều đường dẫn lệnh của nhiều lưu trỡnh điều khiển khỏc nhau. Nhiệm vụ của kiểm định chớnh là kiểm định toàn bộ lưu trỡnh và đường dẫn lệnh này, khi kiểm định được hết thỡ cú thể khẳng định là chương trỡnh đó được kiểm định.
Nguyờn tắc kiểm định hộp trắng:
- Thực hiện tất cả cỏc đường dẫn độc lập ớt nhất một lần.
- Thực hiện mọi điều kiện logic (if then else) trờn cỏc giỏ trị cú thể True hoặc
False của chỳng.
- Thực hiện mọi vũng lặp (cỏc vũng lặp for, while do, repeat until) tại cỏc biờn và trong phạm vi hoạt động của chỳng.
CHƢƠNG 2
KỸ THUẬT VÀ CHIẾN LƢỢC KIỂM ĐỊNH PHẦN MỀM THEO TIẾP CẬN HỘP ĐEN
2.1. KIỂM ĐỊNH PHẦN MỀM BẰNG KỸ THUẬT HỘP ĐEN 2.1.1. Nguyờn tắc kiểm thử hộp đen
Trong kỹ thuật kiểm định “hộp đen”, người kiểm định coi phần mềm như một hộp đen. Tức là người kiểm định hoàn toàn khụng quan tõm đến cấu trỳc và hoạt động bờn trong của phần mềm. Người kiểm định chỉ cần quan tõm đến việc tỡm cỏc hiện tượng mà phần mềm khụng thực thi theo đỳng đặc tả của nú (dựa trờn đặc tả yờu cầu, người kiểm định chỉ biết những gỡ phần mềm dự kiến thực hiện và tỡm ra những gỡ chưa thực hiện mà khụng thể nhỡn vào bờn trong xem nú hoạt động như thế nào). Vỡ vậy, dữ liệu kiểm định hộp đen dựa trờn cơ sở đặc tả.
Như vậy, cỏch tiếp cận kiểm định hộp đen tập trung vào cỏc yờu cầu chức năng của phần mềm. Kiểm định hộp đen cho phộp cỏc kỹ sư kiểm định xõy dựng cỏc nhúm giỏ trị đầu vào cú khả năng thực thi đầy đủ cỏc yờu cầu chức năng của chương trỡnh. Trờn thực tế, trong cỏc hóng phần mềm thường cú cỏc nhúm thực hiện cụng việc thiết kế và cỏc nhúm kiểm định độc lập với nhau. Tuy vậy, kiểm định hộp đen khụng thay thế kỹ thuật kiểm định hộp trắng, nhưng nú bổ sung khả năng phỏt hiện cỏc lớp lỗi khỏc với phương phỏp hộp trắng để đạt được mục đớch chung cuối cựng là phần mềm hạn chế tối đa số lỗi.
Khụng giống kiểm định hộp trắng được thực hiện sớm trong quỏ trỡnh kiểm định, kiểm định hộp đen được ỏp dụng trong cỏc giai đoạn sau của qui trỡnh kiểm định phần mềm. Vỡ kiểm định hộp đen khụng nhằm mục đớch kiểm tra cấu trỳc bờn trong của cấu trỳc điều khiển mà sự quan tõm tập trung vào miền thụng tin. Kiểm định hộp đen cũng khụng thể tỡm tất cả cỏc lỗi trong chương trỡnh vỡ để cú thể phỏt hiện được tất
cả cỏc lỗi thỡ điều kiện bắt buộc là phải kiểm định tất cả cỏc giỏ trị đầu vào. Tức là mỗi điều kiện đầu vào đều cần một trường hợp kiểm định. Vỡ nếu chỉ kiểm định một số điều kiện đầu vào thỡ khụng đảm bảo được chương trỡnh đó hết lỗi. Tuy nhiờn, trờn thực tế điều này là khụng thể thực hiện được.
Vỡ vậy, một số kỹ thuật kiểm định hộp đen được đề xuất [6, 7, 17, 19] để cú thể kiểm định phần mềm một cỏch hiệu quả nhất mà khụng phải duyệt hết tất cả cỏc điều kiện đầu vào.
2.1.2. Một số kỹ thuật kiểm định hộp đen
a. Phõn hoạch tương đương
Việc kiểm định tất cả cỏc đầu vào của chương trỡnh là khụng thể. Vỡ thế, khi kiểm định chương trỡnh nờn giới hạn một tập con tất cả cỏc trường hợp đầu vào cú thể cú. Tất nhiờn, người ta mong muốn lựa chọn một tập con đỳng hay núi cỏch khỏc là một tập con cú xỏc suất cao nhất phỏt hiện hầu hết cỏc lỗi.
Một tập con như vậy cần cú hai tớnh chất:
- Mỗi trường hợp kiểm định nờn gồm nhiều điều kiện đầu vào khỏc nhau cú thể để giảm thiểu tổng số cỏc trường hợp cần thiết.
- Nờn cố gắng phõn hoạch cỏc miền đầu vào của một chương trỡnh thành một số xỏc định cỏc lớp tương đương, sao cho cú thể giả định hợp lý rằng việc kiểm định một giỏ trị đại diện của mỗi lớp là tương đương với việc kiểm định một giỏ trị bất kỳ trong cựng lớp đú (tuy điều này khụng đảm bảo tuyệt đối). Cú nghĩa, nếu một trường hợp kiểm định trong một lớp tương đương phỏt hiện ra lỗi, thỡ tất cả cỏc trường hợp khỏc trong lớp tương đương cũng sẽ phỏt hiện ra cựng lỗi đú. Ngược lại, nếu một trường hợp kiểm định khụng phỏt hiện ra một lỗi, thỡ khụng cú trường hợp nào khỏc trong lớp tương đương đú phỏt hiện ra lỗi (trừ khi một tập con của lớp tương đương nằm trong một lớp tương đương khỏc, vỡ cỏc lớp tương đương cú thể gối lờn nhau).
Hai vấn đề xem xột ở trờn tạo thành một phương phỏp của kỹ thuật hộp đen và được gọi là phõn hoạch tương đương. Vấn đề thứ hai được sử dụng để phỏt triển một tập cỏc điều kiện cần quan tõm phải được kiểm định. Vấn đề thứ nhất được sử dụng để phỏt triển một tập cực tiểu cỏc trường hợp kiểm định phủ cỏc điều kiện trờn.
Thiết kế trường hợp kiểm định bằng phõn hoạch tương đương được xử lý theo hai bước:
Bước 1: Phõn hoạch cỏc miền giỏ trị đầu vào thành cỏc lớp tương đương. Buớc 2: Thiết kế cỏc trường hợp kiểm định đại diện cho mỗi lớp.
Phõn hoạch thành cỏc lớp tương đương:
Cỏc lớp tương đương được nhận dạng bằng cỏch lấy mỗi điều kiện đầu vào và phõn hoạch thành hai hoặc nhiều nhúm. Cỏc lớp tương đương biểu diễn một tập cỏc trạng thỏi hợp lệ hoặc khụng hợp lệ cho điều kiện đầu vào. Điều kiện đầu vào là giỏ trị số xỏc định, miền giỏ trị, tập giỏ trị cú liờn quan, hoặc điều kiện logic.
Cỏc lớp tương đương cú thể được phỏt biểu thành cỏc quy tắc sau: 1) Nếu điều kiện vào xỏc định một miền giỏ trị, thỡ phõn hoạch thành một lớp tương
Hỡnh 2.1. Phõn hoạch cỏc lớp tuơng đương
Dữ liệu vào hợp lệ Dữ liệu vào khụng hợp lệ
Hệ thống
đương hợp lệ và hai lớp tương đương khụng hợp lệ. Vớ dụ, nếu đầu vào x nằm trong khoảng [0,100] thỡ lớp hợp lệ là 0 ≤ x ≤ 100, cỏc lớp khụng hợp lệ là x< 0 và x > 100. 2) Nếu điều kiện vào yờu cầu một giỏ trị xỏc định, phõn hoạch thành một lớp tương hợp lệ và hai lớp tương đương khụng hợp lệ. Chẳng hạn, nếu đầu vào x = 0 thỡ lớp hợp lệ là x = 0, cũn cỏc lớp khụng hợp lệ là x < 0 và x > 0.
3) Nếu điều kiện đầu vào xỏc định một phần tử của tập hợp thỡ phõn hoạch thành một lớp tương đương hợp lệ và một lớp tương đương khụng hợp lệ. Chẳng hạn, nếu đầu vào x thuộc tập cỏc giỏ trị màu sắc trong bảy sắc cầu vồng: Colors = {“Red”, “Orange”, ..., “Violet”}, thỡ lớp tương đương hợp lệ là x Colors và lớp tương đương khụng hợp lệ là x Colors.
4) Nếu điều kiện đầu vào là một biến hoặc một biểu thức logic, thỡ phõn hoạch thành một lớp tương đương hợp lệ và một lớp tương đương khụng hợp lệ tương ứng với hai trang thỏi đỳng và sai của biểu thức hoặc biến logic.
Vớ dụ: Xột chương trỡnh “Sắp xếp lớp” dựa trờn cỏc đặc tả sau:
Chương trỡnh nhận vào điểm thi (ĐT) (<75) và điểm trung bỡnh mụn (ĐTBM) (<25), dựa vào cỏc dữ liệu đú, nú sẽ tớnh toỏn và xếp lớp theo cỏc lớp từ A đến D. Việc xếp lớp được tớnh toỏn dựa trờn điểm trung bỡnh chung = tổng điểm thi và điểm trung bỡnh mụn theo cỏch tớnh như sau:
- Điểm 70: lớp A
- 50 ≤ Điểm < 70: lớp B
- 30 ≤ Điểm < 50: lớp C
- Điểm < 30: lớp D
Nếu điểm nằm ngoài cỏc khoảng trờn thỡ sinh ra một thụng bỏo lỗi. Tất cả cỏc dữ liệu nhập vào đều là số nguyờn.
Ban đầu, ta cần xỏc định cỏc phõn hoạch tương đương, sau đú xõy dựng cỏc trường hợp kiểm định dựa trờn cỏc phõn hoạch đú. Cỏc phõn hoạch được xỏc định từ cả
dữ liệu vào và dữ liệu ra của chương trỡnh. Cỏc dữ liệu hợp lệ và khụng hợp lệ đều được xột.
Trước hết, ta xỏc định cỏc phõn hoạch cho dữ liệu vào:
* Cỏc lớp tương đương hợp lệ: 0 ≤ điểm thi ≤ 75 0 ≤ điểm trung bỡnh mụn ≤ 25 * Cỏc lớp tương đương khụng hợp lệ: Điểm thi > 75 Điểm thi < 0 Điểm trung bỡnh mụn > 25 Điểm trung bỡnh mụn < 0
Như vậy, phõn hoạch của dữ liệu vào điểm thi (ĐT) cú thể được biểu diễn theo sơ đồ sau:
Phõn hoạch của dữ liệu vào điểm trung bỡnh mụn (ĐTBM) cú thể được biểu diễn theo sơ đồ sau:
Ngoài ra, cũn cú cỏc kiểu dữ liệu vào khụng hợp lệ như dữ liệu nhập vào khụng thuộc tập số nguyờn hoặc khụng phải ký tự số.