Tải bản đầy đủ (.pdf) (98 trang)

Ứng dụng tự động hóa kiểm thử hộp đen trong đánh giá bài tập bài thi ngôn ngữ lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.6 MB, 98 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------

ĐINH THỊ THU TRANG

ỨNG DỤNG TỰ ĐỘNG HÓA KIỂM THỬ HỘP ĐEN
TRONG ĐÁNH GIÁ BÀI TẬP / BÀI THI NGÔN NGỮ LẬP TRÌNH

Chuyên ngành: Công nghệ Thông tin

LUẬN VĂN THẠC SỸ KỸ THUẬT
CÔNG NGHỆ THÔNG TIN

Hà Nội – 2014


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------

ĐINH THỊ THU TRANG

ỨNG DỤNG TỰ ĐỘNG HÓA KIỂM THỬ HỘP ĐEN
TRONG ĐÁNH GIÁ BÀI TẬP / BÀI THI NGÔN NGỮ LẬP TRÌNH

Chuyên ngành: Công nghệ Thông tin

LUẬN VĂN THẠC SỸ KỸ THUẬT
CÔNG NGHỆ THÔNG TIN


NGƯỜI HƯỚNG DẪN
TS. NGUYỄN HỮU ĐỨC

Hà Nội – 2014


LỜI CAM ĐOAN
Tôi xin cam đoan rằng luận văn thạc sĩ kỹ thuật đề tài: “Ứng dụng tự động
hóa kiểm thử hộp đen trong đánh giá bài tập / bài thi ngôn ngữ lập trình” là công
trình nghiên cứu của riêng tôi dưới sự hướng dẫn của TS. Nguyễn Hữu Đức, trung
thực và không sao chép của người khác. Trong toàn bộ nội dung của luận văn, các
vấn đề nội dung được trình bày đều là những tìm hiểu và nghiên cứu của chính cá
nhân tôi hoặc là được tham khảo các nguồn tài liệu đều có nguồn chỉ dẫn rõ ràng và
hợp pháp
Hà Nội, ngày 22 tháng 1 năm 2014
Tác giả luận văn

Đinh Thị Thu Trang


LỜI CẢM ƠN
Trước tiên tôi xin dành lời cảm ơn chân thành và sâu sắc nhất đến TS.
Nguyễn Hữu Đức, người đã giúp đỡ, hướng dẫn và tạo mọi điều kiện tốt nhất cho
tôi từ khi tôi bắt đầu đến khi tôi hoàn thành luận văn của mình.
Và tôi cũng xin chân thành cảm ơn các thầy cô giáo trong Viện Công nghệ
Thông tin, Trường Đại học Bách Khoa Hà Nội đã tận tình giúp đỡ, đào tạo cung cấp
cho tôi những kiến thức quý giá và đồng thời cũng hết sức quan tâm, động viên
trong quá trình tôi học tập và nghiên cứu tại Trường.
Nhân đây tôi cũng xin cảm ơn các bạn học trong lớp 12ACNTT-PC, đã luôn
ở bên tôi, chia sẻ kinh nghiệm, cung cấp tài liêu hữu ích trong suốt quá trình học tập

tại Trường.
Hà nội, Ngày 22 Tháng 01 Năm 2014
Tác giả luận văn

Đinh Thị Thu Trang


MỤC LỤC

LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC HÌNH VẼ
ĐẶT VẤN ĐỀ ............................................................................................................1
CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT .......................................................................6
1. Giới thiệu kiểm thử và khái niệm kiểm thử phần mềm .............................6
2. Các phƣơng pháp kiểm thử phần mềm ........................................................7
2.1 Các cấp độ kiểm thử phần mềm ..................................................................7
2.2 Các kỹ thuật kiểm thử phần mềm ...............................................................8
3. Tự động hóa kiểm thử hộp đen. ..................................................................10
CHƢƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG
CHẤM THI TỰ ĐỘNG ..........................................................................................17
2.1 Mục tiêu của hệ thống tự động ..................................................................17
2.1.1 Sơ đồ khối ........................................................................................... 11
2.1.2 Phương thức đánh giá áp dụng cho các tệp mã nguồn ........................21
3.1 Kiến trúc hệ thống .....................................................................................25
3.2 Miêu tả HT ..................................................................................................25
3.2.1 Người dùng của HT .............................................................................25
3.2.2 Mô hình nghiệp vụ chung của HT .......................................................26
3.3 Tổ chức dữ liệu hệ thống ...........................................................................27

3.4 Chức năng hệ thống....................................................................................28
3.4.1 Chức năng dành cho người sử dụng là CBPTĐT ...............................29
3.4.2 Chức năng dành cho người sử dụng là GV .........................................29
3.4.3 Chức năng dành cho người sử dụng là SV..........................................29
3.5 Các giả định .................................................................................................30
3.6 Yêu cầu về giao diện đồ họa và trang web của hệ thống .........................30


3.7 Yêu cầu về giao hiệu năng hệ thống ..........................................................30
3.8 Đặc tả chi tiết yêu cầu HT ..........................................................................30
3.8.1 Đặc tả yêu cầu chức năng....................................................................30
3.9 Đặc tả yêu cầu về cơ sở dữ liệu .................................................................58
3.10 Các yêu cầu khác ......................................................................................63
4. Kỹ thuật hệ thống .........................................................................................63
4.1. Ngôn ngữ lập trình và môi trƣờng hệ thống ...........................................63
4.2. Mô hình MVC ............................................................................................64
4.3. Zend Framework .......................................................................................64
4.4. Các công nghệ khác ...................................................................................67
4.5. Mô hình hệ thống .......................................................................................67
4.6. Ubuntu/Linux .............................................................................................68
4.7 PHP ..............................................................................................................68
4.8 MySQL.........................................................................................................69
5. Tiểu kết ..........................................................................................................69
CHƢƠNG 3 – CÀI ĐẶT HỆ THỐNG ..................................................................70
1. Cài đặt Zend Framework ............................................................................70
2. Cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Ubuntu ..................76
3. Kết quả thực nghiệm ....................................................................................79
CHƢƠNG 4 - KẾT LUẬN......................................................................................87
1. Nội dung nghiên cứu ....................................................................................87
2.Những khó khăn và hƣớng giải quyết .........................................................87

3. Kiến nghị .......................................................................................................88
TÀI LIỆU THAM KHẢO ......................................................................................89


DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

STT Từ viết tắt

Ý nghĩa

1. HTQLBTSV

Hệ thống quản lý bài tập sinh viên

2. HT

Hệ thống

3. CBPTĐT

Cán bộ phụ trách đào tạo

4. GV

Giáo viên

5. SV

Sinh viên



DANH MỤC CÁC HÌNH VẼ
Hình 1 : Cấp độ cơ bản của kiểm thử phần mềm ........................................................7
Hình 2 : Kiểm thử hộp trắng .......................................................................................9
Hình 3 : Kiểm thử hộp đen ........................................................................................ 11
Hình 4: Sơ đồ khối quá trình vận hành hệ thống. .....................................................19
Hình 5: Lưu đồ quá trình chấm bài của Core (backend) ...........................................20
Hình 6 : Biểu đồ ca sử dụng tổng quan của HT ........................................................26
Hình 7: Quy trình quản lý bài tập tổng quan của HT................................................27
Hình 8: Biểu đồ ca sử dụng của người dùng là CBPTĐT ........................................31
Hình 9: Biểu đồ hoạt động của quy trình Đăng nhập................................................32
Hình 10: Giao diện đăng nhập ..................................................................................32
Hình 11: Giao diện chính của CBPTĐT ...................................................................33
Hình 12: Biểu đồ hoạt động của quy trình Quản lý thông tin cá nhân .....................34
Hình 13: Giao diện thông tin cá nhân .......................................................................35
Hình 14: Giao diện đổi mật khẩu ..............................................................................35
Hình 15: Biểu đồ hoạt động của chức năng thành lập lớp/môn học .........................38
Hình 16: Khởi tạo lớp học.........................................................................................38
Hình 17: Khởi tạo hồ sơ GV .....................................................................................39
Hình 18: Xem thông tin GV ......................................................................................40
Hình 19: Biểu đồ ca sử dụng dành cho người dùng là GV .......................................40
Hình 20: Giao diện đăng nhập ..................................................................................41
Hình 21: Biểu đồ hoạt động của quy trình Quản lý thông tin cá nhân .....................43
Hình 22: Biểu đồ hoạt động của chức năng duyệt danh mục lớp/môn học ..............44
Hình 23: Biểu đồ hoạt động của chức năng đề xuất bài tập môn học.......................45
Hình 24: Biểu đồ hoạt động của chức năng thông báo nhắc nhở .............................46
Hình 25: Biểu đồ hoạt động của chức năng tải tài liệu thực hiện bai tâp .................47
Hình 26: Biểu đồ ca sử dụng dành cho người dùng là SV ........................................49
Hình 27: Biểu đồ hoạt động của quy trình Đăng nhập..............................................50



Hình 28: Giao diện đăng nhập ..................................................................................50
Hình 29: Giao diện chính của SV .............................................................................51
Hình 30: Biểu đồ trình tự quản lý thông tin cá nhân.................................................52
Hình 31: Giao diện thông tin cá nhân .......................................................................53
Hình 32: Giao diện đổi mật khẩu ..............................................................................53
Hình 33: Biểu đồ trình tự duyệt danh mục lớp/môn học ..........................................54
Hình 34: Giao diện danh mục lớp/môn học ..............................................................54
Hình 35: Giao diện danh sách bài tập .......................................................................55
Hình 36: Biểu đồ trình tự chức năng theo dõi thông báo nhắc nhở. .........................57
Hình 37: Giao diện đăng tải tài liệu thực hiện bài tập ..............................................57
Hình 38: Mô hình MVC ............................................................................................64


LỜI MỞ ĐẦU

ĐẶT VẤN ĐỀ

Trong giáo dục thì việc quản lý, tổ chức các kỳ thi lập trình hay trong các môn
học có bài thi, bài lập trình là điều bắt buộc. Tuy vậy, quá trình chấm điểm thủ công
làm mất rất nhiều thời gian và công sức của giáo viên. Hệ thống quản lý và chấm
điểm tự động đã được luận văn xây dựng dựa trên kỹ thuật kiểm thử hộp đen để tiến
hành quản lý và chấm điểm một cách tự động trong các cuộc thi, bài thi của môn
học. Hệ thống thuận lợi cho sinh viên tham gia làm các bài tập lập trình một cách
trực tiếp, nhờ đó mà giáo viên sẽ được giảm thiểu tối đa việc chấm điểm bài thi, bài
tập cho sinh viên. Để thực hiện được việc chấm điểm tự động này, trước tiên giáo
viên cần biên soạn bài tập lập trình cùng với các đầu vào và đầu ra chuẩn của các
bài kiểm thử. Kỹ thuật kiểm thử hộp đen thực chất là việc tự động biên dịch và chạy
các chương trình do sinh viên thực hiện với các dữ liệu kiểm thử đầu vào, sau đó tự
động đối sánh với các dữ liệu đầu ra chuẩn và dựa trên đó đánh giá mức độ hoàn

thiện của chương trình theo tỷ lệ các bài kiểm thử thành công. Hệ thống cũng được
xây dựng cùng với đầy đủ các chức năng của một hệ thống quản lý bài tập lập trình,
do vậy sẵn sàng có thể đưa vào ứng dụng thực tiễn.
 Nội dung nghiên cứu của Luận văn có hai mục đích nghiên cứu như sau:
 Kiểm thử hộp đen và cơ chế tự động hóa quá trình chấm điểm lập trình.
 Ứng dụng kiểm thử hộp đen xây dựng hệ thống quản lý và chấm điểm tự
động mã nguồn chương trình.
Ngày nay, phát triển phần mềm là một trong những ngành nghề phát triển
nhất chính vì thế mà việc dùng các công cụ tiên tiến sẽ giúp cho việc phát triển phần
mềm trở nên hiệu quả hơn. Với những công cụ và phương pháp chúng ta sẽ giảm
thiểu được tối đa công sức, chi phí và thời gian cho việc phát triển phần mềm. Tuy
nhiên, với độ phức tạp và có sự giới hạn về thời gian, chi phí thì việc kiểm thử càng

1


LỜI MỞ ĐẦU

được xiết chặt và khoa học hơn nữa nhưng điều đó vẫn không đảm bảo được phần
mềm không có lỗi. Các lỗi vẫn luôn tiềm ẩn trong sản phẩm và có thể gây thiệt hại.
Kiểm thử phần mềm là một quá trình liên tục và xuyên suốt quá trình phát
triển phần mềm, điều đó để đảm bảo rằng mọi yêu cầu, thiết kế được đáp ứng đầy
đủ. Các kỹ thuật kiểm thử phần mềm đã, đang và được nghiên cứu. Quy trình kiểm
thử đã trở thành quy trình bắt buộc đối với tất cả các dự án phần mềm. Công việc
kiểm thử tốn rất nhiều thời gian, kinh phí và việc phát hiện lỗi rất khó. Vậy nên nó
đòi hỏi phải có kế hoạch hợp lý và quản lý chặt chẽ thì việc kiểm thử mới có kết
quả tốt.
Ở Việt Nam thì việc kiểm thử chưa được chú trọng, với những công cụ lập
trình hiện đại thì dường như chúng ta làm việc theo cảm tính nên vấn đề kiểm thử
cũng không được quan tâm nhiều. Những năm gần đây thì việc gia công phần mềm

cho các công ty nước ngoài đã phát triển chính vì thế mà việc kiểm thử được chú
trọng và phát triển hơn trước rất nhiều. Các công ty, tập đoàn nước ngoài còn thuê
chúng ta để kiểm thử. Chính vì vậy mà sản phẩm chúng ta làm ra thì chất lượng
phải được đặt lên hàng đầu, điều đó thể hiện ở việc nếu phần mềm nào không có tài
liệu kiểm thử đi cùng thì sẽ không được chấp nhận.
Trong quy trình đào tạo, một số môn học yêu cầu sinh viên phải thực hiện bài
tập hàng tuần / bài tập lớn / bài kiểm tra và giáo viên cần thực hiện đánh giá các kết
quả này để dựa vào đó tính điểm quá trình / điểm cuối kỳ cho môn học. Phần lớn
những bài tập này được công bố dưới dạng một tệp tài liệu hoặc một bộ mã nguồn
chương trình. Số lượng sinh viên lớn đôi khi dẫn đến tình trạng giáo viên không thể
kiểm soát kết quả và chất lượng thực hiện của từng sinh viên trong lớp.
Với hiện trạng như vậy nhu cầu xây dựng một hệ thống quản lý thông tin cho
phép sinh viên gửi các bài tập cho giáo viên và cho giáo viên thống kê, đánh giá kết
quả của từng sinh viên là cần thiết trong quy trình quản lý đào tạo.

2


LỜI MỞ ĐẦU

Mục tiêu của luận văn là xây dựng một hệ thống quản lý bài tập môn học và
chấm điểm tự động trực tuyến trên công nghệ phổ biến như Joomla, Liferay,… cho
phép tự động hóa quy trình nộp bài và đánh giá kết quả bài tập.
Các phần còn lại của luận văn có cấu trúc như sau:
Chương 1 giới thiệu về khái niệm kiểm thử và các kỹ thuật kiểm thử thông
thường, và cụ thể là kiểm thử hộp trắng, hộp đen và hộp xám.
Chương 2 Phân tích và thiết kế chi tiết của hệ thống chấm thi tự động, đề
xuất giải pháp ứng dụng kỹ thuật kiểm thử vào việc chấm điểm tự động các bài thi
lập trình.
Chương 3 cài đặt hệ thống và kết quả kiểm thử

Chương 4 kết luận
 Một số hệ thống chấm điểm tự động
Online Judge là hệ thống chấm bài trực tuyến trên mạng Internet. Các thành
viên chỉ cần nộp Source File lên và hệ thống sẽ chấm bài 1 cách tự động. Kết quả
sẽ đƣợc thông báo tới ngƣời làm. Dƣới đây là số hệ thống Online Judge lớn
trên thế giới nhằm giúp các bạn có thêm điều kiện để luyện tập:
1. : Trang giải bài trực tuyến lớn nhất thế giới thuộc
Đại học Valladolid – Tây Ban Nha (Universidad de Valladolid). Số lượng bài tập ở
đây rất đa dạng và phong phú, từ những bài cơ bản về Quy Hoạch Động, Đồ Thị,
thuật toán Tham Lam,… cho đến những bài tập đòi hỏi lượng kiến thức và kĩ năng
nhất định của người làm.
2. : Trang giải bài trực tuyến do 1 nhóm sinh viên trường
Đại học GDANSK của Ba Lan sáng lập ra. Đây là 1 trong những Online Judge lớn
nhất trên thế giới với lượng bài tập phong phú. Có khá nhiều các IOIers của Việt
Nam (các bạn học THPT tham gia kỳ thi Olympic Tin Học Quốc Tế) tham gia ở
trang này. Điểm mạnh của hệ thống này là hỗ trợ khá nhiều ngôn ngữ lập trình:
C++, Pascal, Java, Python, PHP,…Có 1 phiên bản tiếng Việt của SPOJ tại:


3


LỜI MỞ ĐẦU

3. www.usaco.org : Trang giải bài của Mỹ nhằm huấn luyện đội tuyển đi thi
IOI của Mỹ hằng năm. Hệ thống có phần Training dành cho tất cả mọi người. Ngoài
ra, từ tháng 10 -> tháng 5 hằng năm, trang thường tổ chức 1 kỳ thi/tháng và thu hút
rất nhiều người tham gia. Mỗi kỳ thi gồm 3 bảng: Gold Division, Silver Division,
Bronze Division. Đề thi của USACO hay và khó, phù hợp với nhiều đối tượng.
USACO hỗ trợ C++, Pascal, Java,…

4. : Trang giải bài nổi tiếng thế giới do 1 công ty lập
ra. Hệ thống tổ chức định kỳ các kỳ thi và có phần thưởng cho những ai được điểm
cao. Tuy nhiên, đề bài hay và khá khó nên để giành được phần thưởng không phải
đơn giản.
5. VOJ (Vietnam Online Judge) là trang giải bài trực tuyến có giao diện và
đề bài bằng tiếng Việt />6. Hệ thống chấm điểm tự động Alpha phiên bản 2.0: cho phép việc nộp bài
thi hoàn toàn tự động thông qua giao diện web kết nối không dây và công bố kết
quả chính xác ngay tức thời, làm tăng tính cạnh tranh, hào hứng của cuộc thi lều
chõng. Hiện nay, AMM đã có phiên bản mới nhất là phiên bản 2.0 và đã được áp
dụng thành công tại các kỳ thi: Olympic Tin Học Sinh Viên Việt Nam 2005 &
2006; Kỳ thi học sinh giỏi Tin học Quốc Gia 2005 & 2006; Tin học trẻ không
chuyên TPHCM 2005 & 2006; Thi tuyển đầu vào khối chuyên Tin học trường Phổ
thông Năng khiếu 2006.
Hệ thống AMM cho phép nhận bài thí sinh, tự động biên dịch và chấm theo
các test được định nghĩa bởi giáo viên ra đề. Kết quả chấm sẽ được công bố trực
tiếp lên trang web và/hoặc kết xuất ra tập tin Excel. Hệ thống gồm 2 phân hệ AMM
Online (trực tuyến) và AMM Offline (ngoại tuyến).
7. Qualrus - phần mềm chấm điểm tự động: Qualrus được thiết kế không
phải để thay thế hẳn vai trò chấm điểm của giáo viên, mà giúp các học sinh có
nhiều thời gian suy nghĩ kỹ càng về bài viết trƣớc khi có một bài làm hoàn
chỉnh nộp cho giáo viên Phần mềm Qualrus do Trường Đại học Missouri (Mỹ)

4


LỜI MỞ ĐẦU

phát triển và đang được ứng dụng vào việc chấm điểm bài làm sinh viên. Phần mềm
này sử dụng một số kỹ thuật thông minh khác nhau cho phép máy có thể so sánh nội
dung bài viết với phần cơ sở dữ liệu thông tin mà các bài viết mẫu đã sử dụng nhằm

phát hiện những bài viết sao chép từ mạng hay do các giáo viên, gia sư đưa ra trong
các bài mẫu của họ.

5


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT
Để tăng hiệu quả về chất lượng phần mềm ta nên sử dụng một số kỹ thuật
kiểm thử. Mặt khác, các kỹ thuật kiểm thử là công cụ để việc kiểm thử đạt được
hiệu quả.
Trong kỹ thuật kiểm thử phần mềm có các loại kỹ thuật kiểm thử: kỹ kiểm thử
hộp đen (back box testing): kỹ thuật này tìm các lỗi như thiếu chức năng, khả năng
sử dụng và các yêu cầu phi chức năng, kỹ thuật kiểm thử hộp trắng (white box
testing): tìm hiểu về cấu trúc bên trong phần mềm và kỹ thuật kiểm thử hộp xám là
sự kết hợp của kỹ thuật kiểm thử hộp đen và kỹ thuật kiểm thử hộp trắng.

 Giới thiệu kiểm thử và khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là một hoạt động có vai trò rất quan trọng, xuyên suốt các
giai đoạn phát triển phần mềm trong việc đảm bảo chất lượng phần mềm, đáp ứng
các nhu cầu của người dùng. Chính vì thế, kiểm thử phần mềm là một trong những
quy trình bước bắt buộc trong các dự án phát triển phần mềm trên thế giới. Ở Việt
Nam, ngành phát triển phần mềm đang phát triển nên việc kiểm thử phần mềm
không thể được xem nhẹ vì xác suất của sự thất bại là rất cao, ngoài ra, hầu hết các
công ty phần mềm có uy tín luôn đặt quy trình kiểm thử lên hàng đầu và rất nghiêm
ngặt nếu một phần mềm không có tài liệu kiểm thử thì không được chấp nhận.
Mục đích của kiểm thử là tìm ra những lỗi mà ta chưa phát hiện, tìm ra một
cách nhanh nhất và chắc chắn rằng lỗi đó sẽ được sửa.
Mục tiêu của kiểm thử là thiết kế được một bản kiểm thử có hệ thống và thực

hiện nó một cách tốt nhất, tiết kiệm thời gian thực hiện, công sức và kinh phí thực
hiện nó.
Tuy nhiên, vấn đề kiểm thử thường gặp một số khó khăn như:
- Các hệ thống phức tạp cần rất nhiều tài nguyên và chi phí.
- Quá trình phát triển phần mềm luôn phải trải qua những biến đổi cũng như sự
mất mát thông tin do biến đổi làm cho việc kiểm thử gặp nhiều khó khăn.

6


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

- Trong quá trình kiểm thử chưa chú trọng việc đào tạo con người.
- Kiểm thử không khẳng định phần mềm hoàn toàn không có lỗi.
2. Các phương pháp kiểm thử phần mềm
Người ta có 2 phương pháp kiểm thử:
a. Kiểm thử tĩnh
Phương pháp sử dụng thủ công thông qua việc dùng giấy bút để kiểm thử, lặp
đi lặp lại từng chi tiết.
b. Kiểm thử động
Sử dụng máy để chạy chương trình theo từng bước.
Kiểm thử tĩnh thường được tiến hành trước kiểm thử động nhằm tạo ra được
kịch bản cho kiểm thử động để người kiểm thử dễ theo dõi.
2.1 Các cấp độ kiểm thử phần mềm
Cấp độ kiểm thử phần mềm:
Các bộ phận

Kiểm thử module

đơn lẻ


Kiểm thử mức tích hợp các đơn

Các nhóm bộ

vị (Integration Test)

phận

Kiểm thử mức hệ thống, sau

Toàn bộ hệ

khi tích hợp (System Test)

thống

Kiểm thử để chấp nhận sản

Toàn bộ hệ thống nhìn

phẩm (Acceptance Test)

từ khách hàng

Hình 1 : Cấp độ cơ bản của kiểm thử phần mềm
a. Kiểm thử module
Được thực hiện một cách độc lập với nhau dựa trên các kỹ thuật có. Khi quá
trình kiểm thử kết thúc thì bước kiểm thử tiếp theo sẽ được thực hiện.


7


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

b. Kiểm thử tích hợp ((Integration Test )
Là việc kết hợp các thành phần trong ứng dụng lại với nhau thành một sản
phẩm hoàn chỉnh nhằm phát hiện ra các lỗi liên quan đến giao diện.
c. Kiểm thử hệ thống (System Test)
Là loại kiểm thử xem giao diện thiết kế và hệ thống sau khi tích hợp có tương
thích thỏa mãn với yêu cầu đặt ra hay không.
Kiểm thử hệ thống được bắt đầu tiến hành sau khi kiểm thử tích hợp đã được
kiểm thử thành công. Nó chiếm phần lớn thời gian và kinh phí
Điểm khác nhau rõ rệt là giữa kiểm thử hệ thống và kiểm thử tích hợp là kiểm
thử tích hợp chú trọng đến các thành phần riêng lẻ khi chúng được tích hợp lại với
nhau còn kiểm thử hệ thống là chú trọng đến toàn lỗi trên hệ thống.


Kiểm thử hệ thống gồm các loại:



Kiểm thử chức năng (Functional Test)



Kiểm thử hiệu năng (Performance Test)




Kiểm thử khả năng chịu tải (Stress Test hay Loal Test)



Kiểm thử cấu hình (Configuration Test)



Kiểm thử bảo mật (Sercurity Test)



Kiểm thử khả năng phục hồi (Recovery Test)

d. Kiểm thử chấp nhận sản phẩm (Acceptance Test)
Mục đích là kiểm thử khả năng cuối cùng chấp nhận được để sản phẩm phù
hợp với các đạc tả, các yêu cầu của khách hàng và sản phẩm được khách hàng chấp
nhận được để đi đến việc cuối cùng là thanh toán hợp đồng.
Giai đoạn này thì người kiểm thử, đánh giá sẽ là khách hàng và nó được coi là
giai đoạn cuối cùng của quá trình.
2.2 Các kỹ thuật kiểm thử phần mềm
Các kỹ thuật kiểm thử phần mềm là thiết kế các trường hợp kiểm thử có khả
năng cao nhất trong việc tìm và phát hiện ra lỗi với thời gian và công sức tối thiểu.

8


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

Vậy nên việc quan trọng nhất là ta phải thiết kế và tạo ra tất cả các trường hợp kiểm

thử có hiệu quả cao nhất. Chính vì vậy ta có các kỹ thuật kiểm thử phần mềm sau:
-

Kỹ thuật kiểm thử hộp trắng.

-

Kỹ thuật kiểm thử hộp xám

-

Kỹ thuật kiểm thử hộp đen.

a. Kỹ thuật kiểm thử hộp trắng.
Kiểm thử hộp trắng là kiểm thử hướng cấu trúc và logic, cho phép người
kiểm thử kiểm tra cấu trúc bên trong của phần mềm có thể là 1 hàm chức năng, 1
module chức năng,…và dựa vào giải thuật cụ thể, vào cấu trúc dữ liệu bên trong của
đơn vị phần mềm để đảm bảo rằng tất cả các lệnh, các điều kiện đã được đưa ra sẽ
thực hiện ít nhất một lần khi chạy chương trình phần mềm. Do đó trong trường hợp
này người kiểm thử sẽ phải có kiến thức, kỹ năng nhất định về ngôn ngữ lập trình
được dùng để có thể hiểu chi tiết về đoạn code cần kiểm thử.
Khi nói đến vấn đề kiểm thử hộp trắng cần quan tâm đến các luồng thực thi
trong chương trình. Nếu có thể thực hiện kiểm tra tất cả các luồng thực thi của
chương trình thì có thể nói rằng chương trình đã được kiểm thử một cách triệt để.
Tuy nhiên, điều đó khó có thể thực hiện được vì số lượng luồng thực thi khác nhau
trong một chương trình thường là rất lớn.
Hình 2 mô tả khái quát ý tưởng của kỹ thuật kiểm thử hộp trắng.

Hình 2 : Kiểm thử hộp trắng
Có 2 hoạt động kiểm thử hộp trắng:

-

Kiểm thử luồng điều khiển: tập trung kiểm thử thuật giải chức năng.

-

Kiểm thử dòng dữ liệu: tập trung kiểm thử vòng đời của từng biến dữ

9


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

liệu được dùng trong giải thuật.
b. Kỹ thuật kiểm thử hộp xám.
Kiểm thử hộp xám đòi hỏi phải có sự truy cập tới cấu trúc dữ liệu và giải
thuật bên trong cho những mục đích thiết kế các ca kiểm thử, nhưng việc kiểm thử
sẽ được thực hiện ở mức người sử dụng hay mức hộp đen. Kỹ thuật này thường
được ứng dụng trong kiểm thử tích hợp (intergartion testing) giữa 2 modun mã lệnh
được viết bởi hai chuyên viên thiết kế khác nhau, trong đó chỉ có giao diện được
đưa ra để kiểm thử. Kiểm thử hộp xám cũng có thể được ứng dụng trong việc đối
chiếu thiết kế, ví dụ, xác định giá trị biên hay thông báo lỗi.
c. Kỹ thuật kiểm thử hộp đen
Còn gọi là kiểm thử chức năng. Việc kiểm thử này được thực hiện mà không
cần quan tâm đến các thiết kế và viết mã của chương trình. Kiểm thử theo cách này
chỉ quan tâm đến chức năng đã đề ra của chương trình. Vì vậy, kiểm thử loài này
dựa vào bản mô tả chức năng của chương trình, xem chương trình có thực sự cung
cấp đúng chức năng đã mô tả trong bản chức năng hay không mà thôi. [2]
3. Tự động hóa kiểm thử hộp đen.
 Kiểm thử chức năng (Kỹ thuật kiểm thử hộp đen)

Kỹ thuật này dựa trên việc kiểm tra các chức năng của hệ thống, người kiểm
thử hoàn toàn không quan tâm tới cấu trúc và hành vi bên trong của phần mềm.
Chính vì vậy người kiểm thử chỉ quan tâm tới chức năng có bị sai sót gì hay không
mà không quan tâm đến việc cài đặt cụ thế ra sao hay nói chính xác hơn là người
kiểm thử chỉ quan tâm tới nhiệm vụ mà mô đun phải đảm nhiệm, đầu vào cho từng
mô đun và kết quả đầu ra sau khi đã được xử lý (Hình 3).
Kiểm thử hộp đen thực hiện các trường hợp kiểm thử để cố gắng tìm ra các lỗi
như sau:
-

Thiếu hoặc sai chức năng.

-

Lỗi cấu trúc dữ liệu hay dữ liệu bên ngoài.

10


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

-

Lỗi giao diện.

-

Lỗi bắt đầu hay kết thúc chương trình.

-


Lỗi thực thi chương trình.

Hình 3 : Kiểm thử hộp đen
Kiểm thử hộp đen chia ra nhiều kỹ thuật:
-

Phân đoạn tương đương.

-

Phân tích giá trị biên

-

Đoán lỗi

-

……
Có 3 hướng tiếp cận chính trong phương pháp kiểm thử hộp đen:

-

Phân tích miền vào\ra của chương trình: dẫn tới việc phân chia hợp lý miền
vào/ra vào tập hợp con quan tâm.

-

Phân tích tính chất đáng chú ý của hộp đen để đề xuất một kỹ thuật kiểm

thử hộp trắng thích hợp.

-

Heuristics: các kỹ thuật này giống với phân tích rủi ro với các đầu vào
được lựa chọn ngẫu nhiên.

 Phân đoạn tương đương
Kỹ thuật này được sử dụng để chia vùng dữ liệu nhập vào cho chương trình
thành các lớp thông tin/dữ liệu. Mỗi lớp thể hiện thành một tập các giá trị hợp lệ và
không hợp lệ. Những lớp này có thể được xác định theo các cách sau:
 Nếu điều kiện dữ liệu đầu vào được xác định trong khoảng miền giá trị
[a,b] thì cần phân đoạn cho lớp tương đương hợp lệ và lớp tương đương
không hợp lệ.

11


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

VD: Nếu đầu vào của giá trị x nằm trong khoảng giá trị [0,50] thì lớp tương
đương hợp lệ nằm trong khoảng là 0 <= x <= 50 và lớp tương đương
không hợp lệ là x < 0 và x > 50.
 Nếu điều kiện đầu vào yêu cầu một giá trị xác định thì phân hoạch thành
một lớp tương đương hợp lệ và hai lớp tương đương không hợp lệ.
VD: Nếu đầu vào của giá trị x= 10 thì lớp tương đương hợp lệ là x = 10 và hai
lớp tương đương không hợp lệ là x < 10 và x > 10.
 Nếu điều kiện đầu vào cần xác định giá trị của một phần tử của một tập hợp
thì phân hoạch thì sẽ có một lớp tương đương hợp lệ và một lớp tương
đương không hợp lệ.

 Nếu điều kiện đầu vào mang giá trị là Boolean thì phân hoạch một lớp
tương đương không hợp lệ và phân hoạch một lớp tương đương không hợp
lệ sẽ tương ứng với hai giá trị là true và false.
Ngoài ra, người kiểm thử có thể phán đoán theo khả năng, kinh nghiệm và trực
giác của mình.
Các trường hợp kiểm thử:
Sau khi sử dụng cách để xác định lớp có các giá trị hợp lệ và không hợp lệ là
bước thiết kế các trường hợp kiểm thử dựa trên các giá trị của các lớp tương đương
cho miền đầu vào. Tiến trình thực hiện như sau:
1. Gán một giá trị duy nhất cho mỗi lớp tương đương.
2. Sau khi các lớp tương đương hợp lệ được kiểm thử thì sẽ viết một trường
hợp kiểm thử mới phủ nhiều nhất có thể các lớp tương đương hợp lệ chưa
được phủ.
3. Khi các lớp tương đương không hợp lệ được phủ tất cả các trường hợp
kiểm thử, viết các trường hợp kiểm thử mới sao cho mỗi trường hợp kiểm
thử mới chỉ phủ duy nhât một lớp tương đương không hợp lệ chưa được
phủ.

12


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

Điều kiện đầu
vào
Số CMT
Tên
Giới tính

Các lớp tương đương hợp lệ


Các lớp tương đương không hợp
lệ

Các ký số

Không phải ký số

Ký tự chữ cái

Không phải chữ cái

Không rỗng

Rỗng

Ký tự chữ cái, “M” hoặc “F”

Không phải chữ cái
Không phải “M” hoặc “F”

Bảng ví dụ các lớp tương đương
 Phân tích giá trị biên
Khi các ca kiểm thử sử dụng các giá trị biên thì tỷ lệ sẽ có tỷ lệ phần trăm
cao hơn các ca kiểm thử khác.
Các điều kiện biên là các điều kiện ở phía trên và phía dưới của các lớp
tương đương đầu vào và lớp tương đương đầu ra. Phân tích giá trị biên khác với
phân hoạch tương đương ở chỗ:
-


Phân tích giá trị biên sử dụng một hoặc một số phần tử để kiểm tra còn
phân hoạch tương đương chúng ta sẽ chọn phần tử bất kỳ.

-

Ngoài việc tập trung vào điều kiện đầu vào kiểm thử cũng được suy ra từ
các kết quả đầu ra.

Ta có một số nguyên tắc để phân tích giá trị biên:
1. Nếu điều kiện đầu vào là khoảng giữa a và b thì giá trị được lấy để kiểm thử
sẽ là giá trị a và b, các giá trị sát trên và sát dưới giá trị a và b.
2. Nếu điều kiện đầu vào là một số các giá trị thì các giá trị cực đại, cực tiểu sẽ
được lấy để kiểm thử và các giá trị sát cực đại, cực tiểu cũng được lấy để
kiểm thử.
3. Sử dụng nguyên tắc 1 áp dụng cho đầu vào.
4. Sử dụng nguyên tắc 2 áp dụng cho đầu ra.
5. Nếu đầu vào hay đầu ra của 1 chương trình là một tập được sắp trật tự như
là 1 file tuần tự thì ta sẽ lấy giá trị đầu và giá trị cuối.

13


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

6. Sử dụng sự khéo léo, sáng tạo của bản thân để có thể tìm được các điều
kiện biên thích hợp.
Ví dụ: Kiểm tra một hàm tính giá trị tuyệt đối của 1 số nguyên [2]
Các lớp tương đương như sau:
Condition lớp tương đương “Valid”
Abs


lớp tương đương “Invalid”

<0, >=0
Các trường hợp thử:
Lớp x<0, giá trị tuỳ ý

x=-10

Lớp x>=0, giá trị tuỳ ý

x=100

Các lớp x<0, x>=0, giá trị biên

x=0

Các lớp x<0, x>=0, giá trị dưới và trên

x=-1, x=1

 Đoán lỗi
Người kiểm thử sẽ sử dụng 1 chương trình đặc biệt, ngoài ra dựa trên cơ sở
trực giác và kinh nghiệm làm việc thì việc đoán trước các lỗi có thể xảy ra và dựa
trên các lỗi đó viết các trường hợp kiểm thử để đưa ra các lỗi đó.
Để đưa ra được quy trình đoán lỗi là rất khó vì tất cả các lỗi đều rất khó đoán
trước được và nó là quy trình có tính trực giác rất cao. Chúng ta chỉ có ý tưởng cơ
bản là liệt kê tất cả các lỗi có thể xảy ra, dễ xảy ra và sau đó sẽ viết các ca kiểm thử
cho tất cả các trường hợp lỗi đó. Ngoài ra chúng ta còn có một ý tưởng khác để thực
hiện các ca kiểm thử có liên quan tới các giả định mà người lập trình có thể đã thực

hiện khi đọc đặc tả như là những thứ bị bỏ sót khỏi đặc tả hoặc do tình cờ hoặc do
người viết có cảm giác những đặc tả đó là rõ ràng. Nói cách khác là ta sẽ liệt kê toàn
bộ các trường hợp đặc biệt mà có thể đã bị bỏ sót khi thiết kế chương trình.
 Kiểm thử phi chức năng [15]
Trái ngược với kiểm thử chức năng (kiểm thử hộp đen), đó là chỉ ra được phần
mềm hoạt động đúng, nghĩa là phần mềm hoạt động tốt theo các hoạt động đã được
liệt kê trong bảng yêu cầu chi tiết, loại kiểm thử này chứng thực rằng các chức năng
của phần mềm có thể hoạt động bình thường ngay cả khi dữ liệu đầu vào không hợp

14


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT

lệ hoặc không như ta mong đợi. Sofware fault injection và fuzzing testing là một
trong những ví dụ về kiểm thử phi chức năng. Kiểm thử phi chức năng được thiêt kế
để kiểm chứng xem phần mềm trong điều kiện kiểm tra có thể chịu được các loại dữ
liệu không hợp lệ hay không mong đợi.
Các loại kiểm thử phi chức năng:
- Kiểm thử hiệu năng và khả năng chịu tải của phần mềm
- Kiểm thử tính ổn định
- Kiểm thử tính khả dụng
- Kiểm thử bảo mật
- Kiểm thử ở mực toàn cầu và cục bộ
- Kiểm thử phá huỷ.


Kiểm thử hiệu năng và khả năng chịu tải của phần mềm

Kiểm thử hiệu năng được thực hiện để xác định hệ thống chính hoặc phụ hoạt

động thế nào trong từng lượng công việc theo đặc thù riêng của nó hoặc nó cũng có
thể kiểm tra tính hợp lệ và chứng thực cho các thuộc tính chất lượng khác của hệ
thống như là khả năng mở rộng, mực độ tin cậy, cách sử dụng tài nguyên. Khả năng
chịu tải quan tâm chính tới việc kiểm thử phần mềm có thể tiếp tục hoạt động với
một số lượng lớn dữ liệu người dùng hay một lượng công việc riêng lẻ?


Kiểm thử tính ổn định

Là việc xem các chức năng của phần mềm có thể hoạt động liên tục trong
khoảng thời gian cho phép được hay không. Loại hoạt động này thường liên quan
đến kiểm thử tải (độ bền) của phần mềm.


Kiểm thử tính khả dụng

Đó là việc ta cần kiểm tra giao diện người dùng có dễ sử dụng, dễ hiểu, thân
thiện với người dùng hay không, nếu khó sử dụng, khó hiểu thì khách hàng sẽ ít
khách hàng chấp nhận và dùng.

15


CHƢƠNG 1 – CƠ SỞ LÝ THUYẾT



Kiểm thử bảo mật

Bảo mật là yếu tố rất cần thiết cho mọi sản phẩm phần mềm, việc bảo mật dữ

liệu để ngăn chặn hacker xâm phạm trái phép vào hệ thống.


Kiểm thử ở mức toàn cầu và cục bộ

Quốc tế hoá hay nội địa hoá là khía cạnh cần thiết của phần mềm. Với mục
đích việc giả lập môi trường nội địa để chạy chương trình, điều đó sẽ làm cho ứng
dụng dễ dàng làm việc hơn.


Kiểm thử phá huỷ

Loại kiểm thử này cố gắng tìm ra nguyên nhân mà hệ thống phần mềm hay
phần phụ khác bị lỗi, chính việc này giúp cho phần mềm có độ bền cao hơn.

16


×