Kỹ thuật sinh test case tự động từ yêu cầu phần mềm
Kỹ thuật sinh test case tự động từ yêu cầu phần mềm
Xem bên trong

Kỹ thuật sinh test case tự động từ yêu cầu phần mềm

68 tr. + CD-ROM
Đưa ra các vấn đề cần thiết và cấp bách trong việc nghiên cứu và xây dựng một kỹ thuật sinh Test case hiệu quả từ yêu cầu người dùng. Giới thiệu tổng quan về quá trình sinh test case tự động và các phương pháp sinh Test case: Sinh Test case dựa trên đặc tả, sinh test case dựa trên mô hình, sinh test case hướng đường dẫn. Trình bày các phương pháp và kỹ thuật sinh Test case tự động hiện có, từ đó đề xuất một kỹ thuật sinh Test case tự động và phân tích ưu điểm của nó so với các kỹ thuật trước. Phát triển chương trình ứng dụng quá trình sinh Test case tự động
Luận văn ThS. Công nghệ phần mềm — Trường Đại học Công Nghệ. Đại học Quốc gia Hà Nội, 2008
Electronic Resources

0.00

Tải về miễn phí bản đầy đủ PDF luận văn tại Link bản đầy đủ 1

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

VŨ THỊ ĐÀO

KỸ THUẬT SINH TEST CASE TỰ ĐỘNG TỪ YÊU
CẦU PHẦN MỀM

LUẬN VĂN THẠC SĨ

Hà Nội – 2008

-1-
MỤC LỤC

CHƯƠNG 1. ĐẶT VẤN ĐỀ …………………………………………………………………….. 6
1.1. Tầm quan trọng của các yêu cầu phần mềm …………………………………………. 6
1.2. Khái niệm về Test case ………………………………………………………………………. 6
1.3. Vấn đề sinh Test case từ các yêu cầu phần mềm . …………………………………. 7
CHƯƠNG 2. TỔNG QUAN VỀ QUÁ TRÌNH …………………………………………… 8
SINH TEST CASE TỰ ĐỘNG …………………………………………………………………….. 8
2.1. Giới thiệu …………………………………………………………………………………………. 8
2.2. Tổng quan về các phương pháp sinh Test case ……………………………………… 8
2.2.1. Sinh Test case dựa trên đặc tả …………………………………………………………….. 9
2.2.2. Sinh Test case dựa trên mô hình………………………………………………………….. 9
2.2.3. Sinh Test case hướng đường dẫn……………………………………………………….. 10
2.3. Kiểm thử phần mềm và UML …………………………………………………………… 10
CHƯƠNG 3. CÁC KỸ THUẬT VÀ PHƯƠNG PHÁP SINH …………………….. 11
TEST CASE TỰ ĐỘNG ……………………………………………………………………………. 11
3.1. Giới thiệu ……………………………………………………………………………………….. 11
3.2. Kỹ thuật sinh Test case dựa trên đặc tả ………………………………………………. 12
3.2.1. Các phương thức đặc tả trạng thái SCR ……………………………………………… 13
3.2.2. Kỹ thuật sinh ra Test case dựa theo đặc tả của SCR …………………………….. 14
3.2.3. Kỹ thuật tạo Test case cho đặc tả UML ……………………………………………… 21
3.2.4. Các thuận toán sinh Test case dựa trên đặc tả. …………………………………….. 28
3.3. Kỹ thuật sinh Test case dựa trên mô hình …………………………………………… 36
3.3.1. Tạo ra Test case bằng việc sử dụng các biểu đồ cộng tác UML …………….. 37
3.3.2. Tạo Test case dựa trên Use case cải tiến …………………………………………….. 45
CHƯƠNG 4. PHÁT TRIỂN CHƯƠNG TRÌNH ỨNG DỤNG ……………………. 57
QUÁ TRÌNH SINH TEST CASE TỰ ĐỘNG ………………………………………………. 57
4.1. Mục tiêu …………………………………………………………………………………………. 57
4.2. Tóm tắt quá trình sinh Test case tự động ……………………………………………. 57
4.2.1. Ví dụ ……………………………………………………………………………………………… 57
4.2.2. Các Test case của ví dụ ……………………………………………………………………. 60
4.2.3. Tính ứng dụng, các ưu điểm và nhược điểm ……………………………………….. 60
4.2.4. Kết luận …………………………………………………………………………………………. 61
4.3. Cài đặt ……………………………………………………………………………………………. 62

-2-
DANH MỤC CÁC KÝ HIỆU THUẬT NGỮ VIẾT TẮT

Từ và cụm từ viết tắt Viết đầy đủ
UML Unified Modeling Language
OCD Object Collaboration Diagram
SCR Software Cost Reducation
Test Sự kiểm thử
Tester Kiểm thử viên

-3-
DANH MỤC CÁC HÌNH VẼ

Stt Tên hình vẽ
1 Một quy trình kiểm tra cơ bản.
2 Kiểm thử dựa trên đặc tả
3 Kiểm thử dựa trên chương trình
4 Xây dựng các yêu cầu Test case từ cây biểu thức cú pháp
5 Qúa trình chung của việc tạo ra các Test case từ đặc tả SCR
6 Sự kiện gọi (call events)
7 Sự kiện báo hiệu (signal events)
8 Sự kiện thời gian (time Events)
9 Sự kiện thay đổi (Change Events)
10 Qúa trình chung cho việc tạo ra các Test case từ đặc tả UML
11 Cấu trúc của file MDL cho biểu đồ lớp và biểu đồ chuyển trạng thái.
12 Biểu đồ lớp của mô hình thiết kề
13 OCD cho việc sinh ra các Test case chỉnh sửa đầy đủ các thuộc tính
14 OCD cho việc sinh ra các Test case chỉnh sửa chuyển tiếp
15 OCD cho việc sinh ra các Test case chỉnh sửa cặp chuyển tiếp.
16 Thuật toán phân tích đặc tả SCR
17 Thuật toán phân tách đặc tả UML
18 Biểu đồ cộng tác mức độ đặc tả
19 Biểu đồ cộng tác cho một thao tác
20 Các cặp cộng tác
21 Một đường chuỗi thông điệp
22 Thuật toán instrumentation
23 Mô hình hóa các vùng trong thiết kế phần mềm
24
Các hoạt động của cách tiếp cận được đề xuất bên trong quá trình
phát triển phần mềm.
25 Biểu đồ trạng thái mức độ cao nhất cho ví dụ use case của bảng 3.
26 Cải tiến biểu đồ trạng thái cho ví dụ use case của bảng 3
27 Mô hình cách sử dụng có thể cho ví dụ thư viện của bảng 3.
28 Mô hình hành vi
29 Các lược đồ test và các giá trị test
30 Test case cho kịch bản chính

-4-
DANH MỤC CÁC BẢNG BIỂU

Stt Tên bảng biểu
1 Phân biệt các biểu đồ UML và các mức độ test
2 Mẫu cải tiến các use case
3 Một ví dụ về mẫu chi tiết các use case

-5-
MỞ ĐẦU

Mặc dù việc nghiên cứu về các phương pháp và kỹ thuật sinh Test case tự động
từ yêu cầu người dùng đã được quan tâm nhiều trên thế giới, nhưng ở Việt Nam các
nghiên cứu và ứng dụng chỉ mới ở bước đầu. Thực vậy, công việc sinh Test case tự
động từ yêu cầu người dùng một cách có hiệu quả trong quá trình kiểm thử là vấn đề
cần thiết và bức xúc của các công ty sản xuất phần mềm cũng như các tổ chức thực
hiện phát triển dự án phần mềm.
Trong quá trình phát triển dự án phần mềm, thường công việc tạo ra các Test
case từ yêu cầu người dùng do các Tester phụ trách. Nhưng không phải Tester nào viết
các tài liệu Test case này cũng như nhau. Vì vậy trong các công ty phần mềm cũng
như các tổ chức thực hiện phát triển các dự án phần mềm sẽ phát sinh một vấn đề là:
Tester nào viết tài liệu Test case tốt, có hiệu quả thì chất lượng phần mềm sẽ tốt hơn
những dự án có Test case tồi. Vậy tại sao chúng ta không đồng nhất hóa công việc viết
Test case bằng các phương pháp và kỹ thuật tự động nhằm giảm bớt công sức và thời
gian của các tester, làm cho chất lượng của Test case tốt hơn.
Có các hướng tiếp cận khác nhau trong việc sinh Test case tự động: thứ nhất là
có thể sinh Test case tự động dựa trên đặc tả từ một file input đã được định sẵn; thứ
hai là sinh Test case tự động dựa trên code, chương trình có sẵn; thứ ba là sinh Test
case tự động dựa trên các mô hình UML. Trong ba hướng tiếp cận trên chúng tôi chọn
hướng tiếp cận thứ ba và nghiên cứu các phương pháp theo hướng tiếp cận này.
Trong đề tài luận văn này chúng tôi nghiên cứu các vấn đề về tạo Test case tự
động từ yêu cầu người dùng. Sau đó, chúng tôi xem xét các phương pháp và kỹ thuật
hiện có trong việc tạo Test case tự động để từ đó có thể đưa ra những cải tiến bổ sung
và phát triển. Cuối cùng là xây dựng một công cụ sinh Test case tự động có thể áp
dụng trong thực tế.
Bố cục của luận văn gồm phần mở đầu, phần kết luận và 4 chương nội dung
như sau:
 Chương 1: Đặt vấn đề, đưa ra các vấn đề cần thiết và cấp bách trong việc
nghiên cứu và xây dựng một kỹ thuật sinh Test case hiệu quả từ yêu cầu người dùng.
 Chương 2: Giới thiệu tổng quan về sinh Test case tự động. Trên cơ sở đó chọn
hướng tiếp cận sẽ đi sâu vào nghiên cứu ở Chương 3.
 Chương 3: Trình bày các phương pháp và kỹ thuật sinh Test case tự động hiện
có. Từ đó đề xuất một kỹ thuật sinh Test case tự động và phân tích ưu điểm của nó so
với các kỹ thuật trước.
 Chương 4: Trình bày quá trình sinh Test case hiệu quả dựa trên kỹ thuật được
đề xuất. Đồng thời xây dựng chương trình demo quá trình sinh Test case tự động.
Sau khi nghiên cứu và thử nghiệm, trong phần Kết luận có nêu một số tổng kết và
nhận xét về việc sinh Test case tự động, đồng thời đề ra hướng nghiên cứu tiếp theo.

-6-

CHƯƠNG 1. ĐẶT VẤN ĐỀ
1.1. Tầm quan trọng của các yêu cầu phần mềm
Các yêu cầu phần mềm là rất quan trọng với mọi dự án phần mềm. Các dự án
thành công hoặc thất bại có nguyên nhân là do chất lượng của các yêu cầu. Các yêu
cầu này cấu thành phạm vi của tất cả các công việc sau đó cho nhóm phát triển dự án.
Không có các yêu cầu tốt, các dự án sẽ thất bại, bị chậm trễ, tốn kém, hoặc làm ra các
hệ thống không bao giờ được sử dụng.
Các vấn đề yêu cầu nên được cố định sớm, trước khi vào giai đoạn thiết kế, bởi
vì các vấn đề là do các yêu cầu kém có khuynh hướng gắn chặt vào trong thiết kế và
khó để cho việc sửa chữa sau này. Những người phát triển và người dùng có một cách
nhìn khác nhau từ những yêu cầu khi người phát triển xem xét yêu cầu từ quan điểm
làm thế nào để thực hiện còn người dùng chỉ cảm nhận vấn đề là sử dụng nó như thế
nào. Cách an toàn nhất để bảo đảm rằng nhu cầu của người dùng đã được đáp ứng
những gì đã được đưa ra, ta nên làm hai tài liệu song song, những gì người dùng cần,
và những gì một hệ thống sẽ phải làm để đáp ứng nhu cầu đó. Đây là các yêu cầu
người dùng và các đặc tả hệ thống theo thứ tự định sẵn.
Vậy tại sao cần có các yêu cầu phần mềm tốt? Bất kỳ lỗi nào được phát hiện
trong giai đoạn đầu trong quá trình phát triển dự án phần mềm là kết quả rất quan
trọng. Nếu ở các giai đoạn sau lỗi mới được phát hiện ra thì chi phí cho việc sửa chữa
hệ thống phần mềm sẽ tốn kém hơn rất nhiều. Nếu những người thiết kế hệ thống
hướng tới mục tiêu không đúng, việc thực thi hệ thống sẽ đi chệch với mong muốn ban
đầu. Một yêu cầu sai có thể tạo ra hàng loạt các lỗi thiết kế. Vì vậy để một sản phẩm
phần mềm tốt thì điều đầu tiên quan trọng là chúng ta phải có các yêu cầu tốt.
1.2. Khái niệm về Test case
Trong quá trình phát triển dự án phầm mềm, thông thường một quy trình kiểm
thử có các bước cơ bản như sau: lập kế hoạch, thiết kế Test, phát triển test script, thực
hiện test và đánh giá (xem Hình 1)

Hình 1: Một quy trình kiểm tra cơ bản.
Lập kế
hoạch
Thiết kế
Test
Phát triển
Test Script
Đánh giá
Thực hiện Test

-7-
Trong đó Test case được viết trong bước thiết kế test. Mục đích của thiết kế test
là viết và chỉ định các Test case trong các bước kiểm tra chi tiết cho mỗi phiên bản
phần mềm. Giai đoạn thiết kế test là hết sức quan trọng, nó bảo đảm tất cả các tình
huống kiểm tra “quét” hết tất cả yêu cầu cần kiểm tra.
Vì vậy công việc tạo ra các Test case hiệu quả là đặc biệt quan trọng để đảm
bảo chất lượng phần mềm. Để làm được việc đó, trước hết phải hiểu Test case là gì?
Một Test case có thể coi là một tình huống kiểm thử, được thiết kế để kiểm thử một
đối tượng có thỏa mãn yêu cầu đặt ra hay không. Một Test case thường bao gồm 3
phần cơ bản:
• Mô tả: đặc tả các điều kiện cần có để tiến hành kiểm thử.
• Đầu vào: đặc tả đối tượng hay dữ liệu cần thiết, được sử dụng làm đầu vào để
thực hiện việc kiểm thử.
• Kết quả mong muốn: kết quả trả về từ đối tượng kiểm thử, chứng tỏ đối tượng
đã thỏa mãn yêu cầu.
Test case có một ý nghĩa vô cùng quan trọng, mục đích đưa ra các trường hợp
test nhằm phát hiện ra các lỗi nhiều nhất có thể, để cho các dự án phát triển phần mềm
có chất lượng tốt hơn.
1.3. Vấn đề sinh Test case từ các yêu cầu phần mềm .
Trong quá trình phát triển dự án phần mềm, thường công việc tạo ra các Test
case từ yêu cầu người dùng do các Tester phụ trách. Nhưng không phải Tester nào viết
các tài liệu Test case này cũng như nhau.Vì vậy trong các công ty phần mềm cũng như
các tổ chức thực hiện dự án phần mềm sẽ phát sinh một vấn đề là: Tester nào viết tài
liệu Test case tốt, có hiệu quả thì chất lượng phần mềm sẽ tốt hơn những dự án có các
Test case tồi (có nhiều trường hợp test trùng lặp nhau hoặc thiếu các trường hợp test).
Vậy chúng ta phải chuẩn hóa và đồng bộ hóa để làm sao tạo ra Test case một cách hiệu
quả và có chuẩn về chất lượng. Để làm điều này, chúng ta phải nghiên cứu các phương
pháp và kỹ thuật để tự động tạo ra các Test case. Việc tạo ra Test case một cách tự
động cũng làm giảm bớt công sức và thời gian của các tester, giúp giảm bớt chi phí
phát triển phần mềm.
Qúa trình tạo ra các Test case sẽ giúp các tester phát hiện ra các vấn đề mâu
thuẫn hoặc chưa rõ ràng của các yêu cầu phần mềm. Nếu bước này được làm sớm, các
vấn đề có thể được loại bỏ sớm, tiết kiệm thời gian và nguồn lực khi phát triển các dự
án phần mềm.
Vậy việc nghiên cứu các phương pháp và công cụ sinh Test case một cách tự
động từ yêu cầu người dùng rất hữu ích và cần thiết trong quá trình phát triển các dự
án phần mềm. Quá trình này nhằm mục đích tạo ra Test case một cách có hiệu quả, có
chất lượng. Giúp giảm bớt công sức và thời gian của các tester, làm giảm bớt chi phí
phát triển phần mềm và chất lượng phần mềm được nâng cao hơn.

-8-
CHƯƠNG 2. TỔNG QUAN VỀ QUÁ TRÌNH
SINH TEST CASE TỰ ĐỘNG
2.1. Giới thiệu
Việc test phần mềm là một công việc rất quan trọng trong vòng đời phát triển
của phần mềm. Để cắt giảm chi phí của việc test bằng tay và tăng độ tin cậy của phần
mềm thì chúng ta đang cố gắng thực hiện tự động hóa nó. Một trong những công việc
quan trọng trong môi trường test là tạo ra Test case một cách tự động mô tả về cách
thức test, mỗi một hệ thống phần mềm nhất định được thiết lập theo một cách thức độc
lập. Chương này trình bày cách nhìn tổng quan về kỹ thuật tạo Test case một cách tự
động.
Các tổ chức phần mềm sử dụng một phần ngân sách đáng kể của mình để thực
hiện các công việc liên quan đến giai đoạn test. Một hệ thống phần mềm test tốt sẽ
được kiểm chứng bởi khách hàng trước khi chấp nhận, làm thỏa mãn yêu cầu của
khách hàng. Tính hiệu quả của qúa trình xác nhận và kiểm chứng này phụ thuộc vào số
lượng lỗi được phát hiện và chỉnh sửa trước khi công bố hệ thống. Điều này lần lượt
phụ thuộc vào chất lượng của các Test case được tạo ra.
Các phương pháp khác nhau về việc sinh ra Test case đã được đề xuất. Một
Test case là một sự miêu tả cách thức test, mỗi một hệ thống phần mềm nhất định
được thiết lập theo một cách thức độc lập. Test case có thể được viết ra trực tiếp từ yêu
cầu người dùng, từ các yêu cầu hệ thống, hoặc từ các use case. Một trong những lợi
ích của việc tạo ra Test case từ các đặc tả và thiết kế đó là chúng có thể được sinh ra
sớm hơn trong vòng đời phát triển và sẵn sàng để sử dụng trước khi các chương trình
được tạo ra. Thêm vào đó, khi các Test case được sinh ra ban đầu các kỹ sư phần mềm
phát hiện ra sự không nhất quán và mập mờ trong đặc tả các yêu cầu và các tài liệu
thiết kế. Điều này sẽ chắc chắn sẽ làm giảm chi phí của việc xây dựng hệ thống phần
mềm khi các lỗi được loại bỏ sớm trong vòng đời phát triển của sản phẩm.
2.2. Tổng quan về các phương pháp sinh Test case
Một vài cách tiếp cận được đưa ra trong việc tạo ra Test case, một số mang tính
ngẫu nhiên, có mục đích, định hướng và một số rất thông minh. Kỹ thuật ngẫu nhiên
xác định các Test case dựa trên các giả định. Kỹ thuật định hướng đường dẫn sử dụng
các luồng thông tin kiểm soát để xác định một tập hợp các đường dẫn để được bao
quát và tạo ra các Test case phù hợp cho các đường dẫn này. Những kỹ thuật này có
thể được phân chia thành tĩnh và động. Kỹ thuật tĩnh thường được dựa trên thực thi
các ký hiệu mô tả, ngược lại các kỹ thuật động đạt được từ các dữ liệu cần thiết bằng
việc chạy chương trình trong khi test. Kỹ thuật định hướng mục tiêu xác định các Test
case bao gồm một mục tiêu đã được lựa chọn chẳng hạn một câu lệnh hoặc nhánh câu

-9-
lệnh. Các kỹ thuật thông minh của các Test case được sinh ra tự động lệ thuộc vào các
tính toán phức tạp để xác định Test case.
Rất nhiều nghiên cứu về việc sinh ra các Test case tối ưu dựa trên các đặc tả,
tuy nhiên không thể đạt 100% các Test case tối ưu. Ngôn ngữ mô hình được sử dụng
để có được đặc tả và sinh ra các Test case. Kể từ khi UML (Unified Modeling
Language) là ngôn ngữ được sử dụng rộng rãi nhất thì nhiều nghiên cứu sử dụng lược
đồ UML như state-chart diagrams, use-case diagrams, sequence diagrams,… để sinh
ra các Test case và dẫn đến việc sinh ra Test case dựa trên mô hình.
2.2.1. Sinh Test case dựa trên đặc tả
Sinh Test case dựa trên đặc tả là phương pháp sinh Test case mà phỏng theo trạng
thái được xác định trước dựa trên đặc tả để tạo ra Test case từ biểu đồ trạng thái UML.
Việc kiểm thử đủ các thuộc tính, các cặp chuyển tiếp và chỉnh sửa các câu lệnh là các
kỹ thuật được đưa ra trong Chương 3. Các kỹ thuật đã sử dụng các biểu đồ trạng thái
UML như một cở sở và tự động sinh ra các bộ phận điều khiển test và test script để
xác nhận các thành phần khi test. Cách tiếp cận trong một mẫu, chỉ ra các lớp và đặc tả
biểu đồ trạng thái tương ứng cho hành vi của lớp đó, định rõ ánh xạ đưa ra bằng sự kết
hợp các mã với đặc tả. Sau đó tester chọn các tiêu chuẩn để chỉnh sửa. Tóm lại, các lỗi
được phát hiện ra như sự không nhất quán giữa hành vi và đặc tả biểu đồ trạng thái
được đưa ra bởi người sử dụng. Mục tiêu là để xác định các đặc tả được cải tiến được
dựa trên các tiêu chuẩn chỉnh sửa thích hợp cho hệ thống và để phát triển các kỹ thuật
cho việc tạo ra bộ điều khiển test với ít nhất thao tác của con người.
2.2.2. Sinh Test case dựa trên mô hình
UML đã nhận được một sự quan tâm lớn từ các công đồng phát triển và thiết kế
phần mềm, và các công việc đang được thực hiện để tăng cường và mở rộng các tính
năng của nó. Tuy nhiên, cộng đồng test phần mềm đã không quan tâm nhiều và thảo
luận nhiều về UML, sự thiếu hụt lớn khi tiêu chuẩn mô hình hóa được phát triển. Đây
là vấn đề cần quan tâm, bởi vì trong các tổ chức phát triển phần mềm, chi phí của việc
test có thể chiếm hơn 40% tổng chi phí phát triển cho một hệ thống phần mềm. Đưa ra
các thực tế này để phát hiện ra khả năng sử dụng UML cho việc test phần mềm.
Đa phần công việc test dựa trên mô hình của các hệ thống tập trung vào việc sử
dụng của các biểu đồ trạng thái hoặc lớp.Các biểu đồ lớp chỉ một tập các lớp, các giao
diện và các sự cộng tác, các mối quan hệ của chúng. Các biểu đồ trạng thái biểu diễn
dòng điều khiển từ trạng thái này đến trạng thái khác, nó nhấn mạnh dòng điều khiển
từ hoạt động này đến hoạt động khác xảy ra bên trong một máy trạng thái. UML có
một phương pháp mô hình trước đó được biết đến là kỹ thuật mô hình đối tượng
(Object Modeling Technique) mà đã thêm một số mô hình chức năng cũng được sử
dụng cho quá trình test.

-10-
2.2.3. Sinh Test case hướng đường dẫn
Một khung chuẩn sử dụng chiến lược tìm kiếm nhị nguyên nổi tiếng trong việc
sinh ra Test case hướng đường dẫn đã được đưa ra. Toán tử được đề xuất có thể được
phận loại như cách tiếp cận hướng tới đường dẫn. Phương pháp này đã nêu vấn đề của
các cách tiếp cận sinh ra Test case tự động và đã cung cấp một giải pháp với thuật toán
sinh ra Test case dựa trên phương thức tìm kiếm nhị nguyên. Đường dẫn được bao
quát được xem xét từng bước một và các Test case sau đó được nghiên cứu để hoàn
thiện chúng. Phương thức tìm kiếm nhị nguyên được sử dụng để xác định các Test
case, đòi hỏi các giả định nhất định nhưng cho phép sinh ra Test case hiệu quả. Các lợi
ích của phương pháp này đó là nó không đòi hỏi bất cứ một một sự điều chỉnh tham số
nào và không cần bất cứ kỹ thuật tối ưu nào để tạo ra dữ liệu test.
2.3. Kiểm thử phần mềm và UML
Có nhiều mức độ test trong giai đoạn kiểm thử phần mềm gồm đơn vị, chức
năng, hệ thống, hồi qui, và test giải pháp. Bảng sau minh họa những sự khác biệt giữa
các giai đoạn, cũng như biều đồ UML tiềm năng cho việc sử dụng trong các giai đoạn.

Test Type
(Loại test)
Coverage
Criteria
Fault Model
(mô hình lỗi)
UML Diagram
(biều đồ UML)
Unit Code
Correctness, error handling pre/post
conditions, invariants
Class and state diagrams
Function Functional
Functional and API behavior,
intergration issuses
Interaction and class
diagrams
System
Operational
scenarios
Workload, contention, synchron,
recovery
Use case, activity, and
interaction diagrams
Regresstion Functional
Unexpected behavior from
new/changed function
SAME AS FUNCTION
Solution
Inter-System
commun
Interop. Problems
Use case and
deployment diagrams

Bảng 1: Phân biệt các biểu đồ UML và các mức độ test

Tuy nhiên, vấn đề của việc sử dụng UML không kết thúc bằng sự chú ý đơn
thuần trong quá trình test mà các biểu đồ có thể được sử dụng hữu ích trong nhiều giai
đoạn khác nhau của quá trình này. Một vài vấn đề phải được giải quyết trước khi UML
có thể được áp dụng hiệu quả trong quá trình test [2].
Có 2 vấn đề sau: Vấn đề đầu tiên quan tâm là các vấn đề liên quan đến việc sử
dụng các mô hình UML trong quá trình test. Tester hiểu được sự quan trọng của việc
xây dựng hoặc chỉnh sửa cơ bản các mô hình để được sử dụng trong quá trình test.
Thứ hai, các mô hình từ quá trình phát triển thiếu đi các chi tiết và tính năng đặc thù
mà được yêu cầu để phát triển các Test case.

-11-
CHƯƠNG 3. CÁC KỸ THUẬT VÀ PHƯƠNG PHÁP SINH
TEST CASE TỰ ĐỘNG
3.1. Giới thiệu
Test phần mềm là công việc chạy một chương trình trên một bộ các Test case
và so sánh kết quả thực tế của với các kết quả mong muốn. Test và thiết kế test là các
giai đoạn để đảm bảo chất lượng phần mềm, tập trung vào việc phát hiện lỗi. Chúng ta
nên tìm các nguyên nhân để có thể phát hiện ra các triệu chứng được gây ra các lỗi.
Cuối cùng, khi test nên cung cấp chẩn đoán rõ ràng để các lỗi có thể dễ dàng được sửa
chữa.
Vậy trong quá trình test phần mềm “tiêu chuẩn test là gì”. Một tiêu chuẩn test là
một quy tắc hoặc một tập hợp của các quy tắc mà áp đặt các yêu cầu vào một bộ của
các Test case. Có nhiều cách để phân loại các tiêu chuẩn phù hợp. Một trong những
cách thông dụng nhất là bằng nguồn thông tin được sử dụng để xác định các yêu cầu
test và sự phù hợp của test. Do đó, một tiêu chuẩn phù hợp có thể là được dựa trên đặc
tả hoặc dựa trên chương trình.
Một tiêu chuẩn dựa trên đặc tả xác định công việc test được yêu cầu trong điều
kiện của các chức năng khác nhau của các đặc tả phần mềm, vì vậy một bộ test là phù
hợp nếu tất cả các chức năng được xác định đã được đưa ra đầy đủ vào các Test case.
Ở đây các đặc tả được sử dụng để tạo ra các Test case, cũng như tạo ra chương trình.
Một cái nhìn trừu tượng về quá trình test dựa trên đặc tả được đưa ra trong Hình số 2.
Một tiêu chuẩn được dựa trên chương trình xác định các yêu cầu test trong điều
kiện chương trình đang test và quyết định nếu một bộ test là phù hợp theo chương
trình đã được thử nghiệm kỹ lưỡng hay không. Một quan điểm trừu tượng về quá trình
test được dựa trên chương trình được cho thấy ở Hình số 3.
Chú ý rằng cả test dựa trên chương trình và test dựa trên đặc tả, tính chính xác
của các kết quả chương trình phải được kiểm tra với các yêu cầu hoặc đặc tả. Tuy
nhiên, trong cả hai trường hợp, đánh giá sự phù hợp của test không phụ thuộc vào các
kết quả của việc kiểm tra này. Thêm vào đó, sự định nghĩa về các tiêu chuẩn được dựa
trên đặc tả đã đưa trước đó không coi là sự tồn tại của một đặc tả chuẩn.

-12-
Hình 2:Kiểm thử dựa trên đặc tả

Hình 3: Kiểm thử dựa trên chương trình
3.2. Kỹ thuật sinh Test case dựa trên đặc tả
Kiểm thử dựa trên đặc tả lấy được các thông tin test từ một đặc tả của phần
mềm khi test.Tuy nhiên, khi việc thực hiện được phát triển không chuẩn mực từ một
đặc tả chuẩn mực, đặc tả có thể đóng một vai trò chủ yếu trong quá trình test bằng
cách cho phép chúng ta thu được các đầu vào test và các kết quả mong đợi từ các đầu
vào này. Có hai vai trò chính một đặc tả có thể đóng vai trò trong test phần mềm [3].
Đầu tiên là cung cấp các công tin cần thiết để kiểm tra hoặc là đầu ra của chương trình
có đúng hay không. Thứ hai là cung cấp thông tin để lựa chọn các Test case và để
đánh giá sự phù hợp của test.
Kiểm thử dựa trên đặc tả đưa ra nhiều ưu điểm trong test phần mềm. Đặc tả
chuẩn của một sản phầm phần mềm có thể được sử dụng như một sự hướng dẫn cho
việc thiết kế các test chức năng cho sản phẩm. Đặc tả xác định chính xác các khía cạnh
cơ bản của phần mềm, trong khi thông tin cấu trúc và chi tiết bị loại bỏ. Dó đó, tester
có các thông tin thiết yếu về tính năng của sản phẩm không phải triết xuất nó ra từ các
chi tiết thiết yếu.
Kiểm thử dựa trên đặc tả từ các đặc tả chuẩn đưa ra một cách tiếp cận chuẩn
hơn, được cấu trúc và đơn giản hơn cho sự phát triển của các test chức năng hơn là các
kỹ thuật test không dựa trên đặc tả. Mối quan hệ mạnh mẽ giữa đặc tả và test giúp phát
hiện ra các lỗi và có thể đơn giản quá trình hồi quy. Đặc tả là một bản mô tả thẩm
quyền của hành vi hệ thống và có thể được sử dụng để lấy được các kết quả mong
muốn cho các dữ liệu test. Các lợi ích khác của kiểm thử dựa trên đặc tả gồm phát
triển test cùng lúc với việc thực hiện và thiết kế, sử dụng các test đã lấy được để phê
chuẩn đặc tả gốc, và kiểm định đã được đơn giản của quá trình test. Đặc tả có thể cũng
được phân tích tương ứng với khả năng test ổn định.
Có ba cách tiếp cận chính tới các đặc tả chức năng phần mềm chuẩn: (1) các
đặc tả dựa trên mô hình, (2)các đặc tả định hướng đến thuộc tính chẳng hạn các đặc tả
thuật toán và có nhiều ngôn ngữ, và (3) các đặc tả dựa trên trạng thái.

-13-
Các ngôn ngữ đặc tả dựa trên mô hình, cố gắng để có được các đặc tả chuẩn của
phần mềm dựa trên các mô hình của các đối tượng thực tế. Ngôn ngữ đặc tả thuật toán
mô tả phần mềm bằng việc đưa ra các câu lệnh chuẩn, về các mối quan hệ trong số
các thao tác và các chức năng mà có tác dụng lên chúng. Các đặc tả dựa trên trạng thái
mô tả phần mềm trong điều kiện của các chuyển tiếp trạng thái. Các đặc tả được dựa
trên trạng thái tiêu biểu xác định điều kiện trước trên các chuyển tiếp, mà là các giá trị
mà các biến xác nhận phải có cho các chuyển tiếp có thể được phép, các thay đổi trong
các giá tri biến đổi mà khiến các chuyển tiếp được diễn ra.
3.2.1. Các phương thức đặc tả trạng thái SCR
Có một vài phương pháp để xác định các hệ thống trạng thái cơ bản. Phương
pháp này xác định các tiêu chuẩn test dựa trên đặc tả, và đã phát triển một mô hình
sinh Test case cho các đặc tả SCR.
Đặc tả Software Cost Reducation (SCR) xây dựng các bảng để xác định các yêu
cầu hành vi cho các hệ thông phần mềm được gắn vào thời gian thực tế. Một lợi ích
của phương pháp SCR đó là cấu trúc được xác định tốt cho phép các phân tích cấu trúc
được sử dụng để kiểm tra sự đồng nhất, tính hoàn chỉnh của đặc tả. Bên cạnh đó, các
ứng dụng SCR cung cấp khả năng phát hiện dấu vết từ các yêu cầu phần mềm tới mã
nguồn. Nhiều loại của các phân tích đã được áp dụng tới các đặc tả SCR.
Trong một đặc tả SCR, một mode class là một máy trạng thái mà trạng thái của
nó được gọi là system modes hoặc modes. Hành vi của Complex system có thể được
xác định bởi một vài mode class hoạt động song song. Mỗi mode class mô tả một khía
cạnh của hành vi của hệ thống, và hành vi bao trùm của toàn bộ hệ thống được xác
định bởi thành phần của các mode class của hệ thống. Môi trường của hệ thống được
đưa ra bởi một tập hợp của các điều kiện môi trường Boolean. Một event xuất hiện
khi các giá trị của một điều kiện thay đổi từ True thành False hoặc ngược lại. Do đó,
các event xác định các thời điểm, trong khi các điều kiện xác định khoảng thời gian.
Thông thường, một conditional event là một event mà xuất hiện khi các điều kiện nhất
định tiếp tục.
Các mode và mode transitions xác định các thuộc tính của hệ thống mà giữ
những điều kiện nhất định. Một mode invariant phải là True khi hệ thống tham gia vào
mode, phải duy trì True trong khi hệ thống ở trong mode đó, và có thể hoặc là True
hoặc là False khi hệ thống không còn ở trong mode đó. Sự không thay đổi của mode là
các thuộc tính bất biến của một mode hệ thống. Nếu các điều kiện nhất định tiếp tục
sau đó hệ hoặc là hệ thống là ở trong một mode cụ thể, các điều kiện hệ thống nhất
định có các giá trị bất biến. Các đặc tả SCR xác định hành vi chức năng hệ thống phần
mềm. Sự bất biến của hệ thống là rõ ràng hoặc đôi khi là rõ ràng được xác định trong
đặc tả. Một đặc tả SCR có thể gồm một bộ của các biến không đổi an toàn như một sự
khẳng định, nhưng hệ thống các biến không đổi này không phải là các ràng buộc thêm
vào của hành vi đuợc yêu cầu, chúng không đuợc tính vào, chỉ là các mục tiêu mà các

-14-
yêu cầu được trình bày thành dạng bảng được mong muốn được đưa đến. Thêm vào
đó, nếu các biến bất biến này không đuợc liệt kê rõ ràng, sau đó chúng ta có thể nên
lấy chúng từ đặc tả. Các biến không đổi có được có thể được so sánh với các biến rõ
không đổi rõ ràng giống như các tiêu chuẩn xác định.
3.2.2. Kỹ thuật sinh ra Test case dựa theo đặc tả của SCR
Kiểm thử các mức độ trong phát triển phần mềm thực tế đã được thực hiện từ
lâu được dựa trên các phân tích không chuẩn mực của các yêu cầu phần mềm. Điều
này dẫn đến các kết quả không thống nhất, các vấn đề trong việc hiểu mục đích và kết
quả của việc kiểm thử, hoàn thành thiếu tính hiệu quả trong việc kiểm thử. Việc xác
định đúng cho một yêu cầu rõ ràng để thực hiện kiểm thử bởi chúng mô tả chính xác
phần mềm đóng vai trò như thế nào trong việc trợ giúp việc cung cấp một mẫu cái mà
có thể tự động điều khiển. Kỹ thuật sinh Test case dựa theo đặc tả SCR thiết lập các
tiêu chuẩn và giải quyết việc sinh ra các ca kiểm thử mức độ hệ thống từ các xác
nhận/các yêu cầu chức năng. Những tiêu chuẩn này cung cấp một quá trình chuẩn, một
phương pháp để đo lường việc kiểm thử, và một nền tảng cho việc tự động hóa hoàn
toàn việc tạo ra các ca kiểm thử.
3.2.2.1. Mô hình kiểm thử
Thỏa mãn thuộc tính sử dụng các điều kiện đầu vào, các biến, và luôn luôn
đúng để tạo ra kết quả, sau đó sinh ra các Test case để thỏa mãn các yêu cầu riêng biệt
trong một kết quả xác nhận. Công việc này liên quan chặt chẽ đến việc nghiên cứu sự
tạo ra kiểm thử tự động được dựa trên mã hóa trước đó. Mộ hình được đưa ra ở đây
phát triển thêm các ý tưởng trước đó về sự thỏa mãn các kết quả xác nhận theo một số
cách [5]
Thay cho việc chỉ bao hàm các điều kiện trước và sau thì rất quan trọng để sử
dụng việc kiểm thử để liên hệ chặt chẽ các điều kiện trước và sau. Việc kiểm thử nhằm
mục đích phát hiện ra các lỗi, bao gồm cả vùng dữ liệu đưa vào. Phần này đưa ra các
ví dụ sử dụng Software Cost Reduction Specifications (SCR).
Trong mô hình này, các việc kiểm thử được tạo ra như một sản phẩm đa mức
độ, nhiều bước thực hiện và nhiều phần. Nhiều phần có nghĩa là một Test case sinh ra
một vài thành phần. Các giá trị đầu vào là các giá trị đầu vào của Test case, những giá
trị này cần được thỏa mãn trực tiếp các yêu cầu. Các thành phần khác cung cấp các giá
trị hỗ trợ, gồm các kết quả đầu ra được mong đợi, các dữ liệu đầu vào cần thiết để có
trạng thái phù hợp. Nhiều bước có nghĩa là việc kiểm thử sinh ra một số bước từ các
đặc tính chức năng bởi một quá trình xử lý. Các đặc tính chức năng được lọc trong các
đặc tính kiểm thử, cái mà sau đó được lọc trong các tập lệnh. Đa mức độ có nghĩa là
việc kiểm thử tạo ra để kiểm thử phần mềm ở một số mức độ trừu tượng hóa.
Mô hình này định nghĩa Test case tại bốn mức độ: (1) mức độ chỉnh sửa kế tiếp,
(2) mức độ chỉnh sửa đầy đủ các thuộc tính, (3) mức độ chỉnh sửa từng cặp kế tiếp, và

Tác giả

Vũ Thị Đào

Nhà xuất bản

ĐHCN

Năm xuất bản

2008

Người hướng dẫn

Trương Anh Hoàng

Định danh

V_L0_01727

Kiểu

text

Định dạng

text/pdf

Nhà xuất bản

Khoa công nghệ thông tin,

Trường đại học Công nghệ

Các đánh giá

Hiện chưa có đánh giá cho sản phẩm.

Hãy là người đầu tiên đánh giá “Kỹ thuật sinh test case tự động từ yêu cầu phần mềm”

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *