Xây dựng chương trình

Một phần của tài liệu Nghiên cứu kiểm thử bao phủ phần mềm và ứng dụng (Trang 65)

4. Ý nghĩa lý luận và thực tiễn của đề tài

4.3.3. Xây dựng chương trình

4.3.3.1. Giới thiệu chương trình

Nhằm thể hiện rõ nét nhất các ca kiểm thử cho cầu thang máy, tôi đã xây dựng một chương trình mô phỏng hoạt động của thang máy cho các ca kiểm thử và kết thúc quá trình mô phỏng sẽ hiển thị các quá trình chuyển trạng thái. Để đạt được mục đích này, tôi đã sử dụng ngôn ngữ lập trình C# 2005 để xây dựng chương trình.

Giao diện chương trình đơn giản, thuận tiện cho người dùng thao tác, giao diện chương trình như sau:

Giao diện tách làm hai phần mô hình và kết quả. Phần mô hình nhằm mô phỏng hoạt động của thang máy ứng với các ca kiểm thử. Phần kết quả thể hiện quá trình chuyển trạng thái ứng với ca kiểm thử.

Chương trình cho phép bạn bắt đầu một ca kiểm thử theo hai chế độ: Một là, cho phép bạn chọn tầng và chiều xuất phát, tầng và chiều xuất phát sau khi chọn sẽ hiển thị cho người dùng biết. Tiếp theo sẽ chọn tầng đến, tầng đến được chọn sẽ có màu đỏ. Khi chọn tầng bắt đầu xuất phát thì thanh trượt mô phỏng thang máy sẽ tự động chuyển đến tầng đó. Khi click vào nút “Bắt đầu” thì chương trình sẽ bắt đầu mô phỏng. Bạn có thể dừng quá trình mô phỏng bằng cách click vào nút “Dừng”.

Hai là, cho phép bạn bắt đầu ca kiểm thử với trạng thái xuất phát là tại vị trí cầu thang đang dừng. Bạn chọn tầng cần đến và chiều cần đi, sau đó chọn tầng đến, click vào nút “Bắt đầu” để mô phỏng.

Cả hai chế độ, khi thang máy di chuyển đến đâu thì đều thể hiện tầng và chiều ở vị trí đó. Khi đã qua tầng nào thì tầng được chọn đó sẽ trở lại trạng thái như chưa được chọn. Trong quá trình làm việc đều có xử lý ưu tiên.

Trong quá trình mô phỏng thì quá trình chuyển trạng thái sẽ được hiển thị tự động bên bảng kết quả.

4.3.3.3. Các lớp cài đặt

Enum State : Tập hợp trạng thái.

Tên Mô tả

Property

Up Biểu thị trạng thái lên

Down Biểu thị trạng thái xuống

Class Floor: Lớp tầng.

Tên Mô tả

Property

FloorNumber Biểu thị số tầng.

FState Biểu thị trạng thái của tầng

Name Tên tầng. Sử dụng khi in kết quả

Contrucsor

Floor() Contrucsor không có tham số

Floor(int floorNumber) Contrucsor có 1 tham số là số tầng Floor(int numFloor,State state) Contrucsor có 2 tham số là số tầng

và trạng thái tầng. Floor(int numFloor,State

state,string name)

Contrucsor có 3 tham số là số tầng, trạng thái tầng và tên tầng.

Method bool Contains(Floor floor) Hàm kiểm tra 2 tầng giống nhau về tầng và trạng thái

Class Elevator: Lớp cầu thang.

Tên Mô tả

Property

LastFloor Biểu thị trạng thái tầng có bấm nút gọi đi tầng khác.

CurrentState Biểu thị trạng thái thang máy.

StateExact Biểu thị trạng thái thang máy tiếp theo khi bấm nút gọi.

CurrentFloor Biểu thị trạng thái tầng hiện thời.

ListOle Danh sách các tầng thang máy đã chạy qua.

Member

m_items Danh sách lưu các trạng thái tầng.

m_itemsUp Danh sách lưu các tầng được bấm đi lên. m_itemDown Danh sách lưu các tầng được bấm đi xuống. m_lassposition Lưu vị trí cuối cùng của trạng thái cầu

Contrucsor

Elevator() Contrucsor không có tham số Elevator(int

initialFloor,State state)

Contrucsor có 2 tham số là trạng thái tầng bắt đầu và trạng thái chiều của tầng.

Method

SetCurrentState(Fl oor floor)

Thiết lập trạng thái hiện tại cho thang máy

SetCurrentState(Fl oor a,Floor b)

So sánh 2 tầng và thiết lập trạng thái cho cầu thang.

Start(Floor) Thêm tầng đầu tiên vào danh sách. Add(Floor) Thêm các tầng vào danh sách. OpenFloor(Floor,r

ef int numFloor)

Hàm kiểm tra và thiết lập danh sách mở cầu thang.

StopTimer() Kiểm tra trạng thái dừng cầu thang.

Mô tả chung:

Nếu bấm nút gọi cầu thang gọi là trạng thái gọi cầu thang. Nếu bấm nút gọi tầng gọi là trạng thái gọi tầng.

Bài toán đặt ra là mô phỏng trạng thái cầu thang chạy và đưa ra chu trình ơle. Đầu vào ở đây được xác định đó là ấn nút trạng thái gọi cầu thang sau đó xác định trạng thái gọi tầng. Sau khi kết thúc quá trình đó mới cho cầu thang chuyển động để đánh giá độ bao phủ tầng.

4.3.3.4. Mô tả một số phương thức chính sử dụng trong chương trình

Phương thức Add(Floor a): Phương thức này kiểm tra tầng đầu vào. Nếu là trạng thái tầng được thêm vào thì thêm vào danh sách m_items và thiết lập giá trị cho LastFloor. Nếu là tầng được bấm thì kiểm tra chiều của LastFloor. Nếu là chiều lên thì thêm vào danh sách m_itemsUp và sắp xếp lại theo chiều tăng dần, ngược lại thì thêm vào danh sách m_itemsDown và sắp xếp theo chiều giảm dần.

Phương thức OpenFloor(Floor a,ref int num): Phương thức này kiểm tra tầng đầu vào a hiện tại của cầu thang đang chuyển động. Nếu tầng hiện tại xác

thái gọi cầu thang đó và thiết lập lại chiều chuyển động cho cầu thang, ngược lại thì chỉ xét đến danh sách tầng được gọi và xoá tầng a trong danh sách.

KẾT LUẬN

Kiểm thử phần mềm, một nội dung nghiên cứu được triển khai từ rất sớm và không phải là mới mẻ đối với thế giới, nhưng luôn là vấn đề cấp thiết cho việc nâng cao chất lượng phần mềm, và trong điều kiện phát triển phần mềm ở Việt Nam việc hiểu biết và vận dụng nó còn nhiều hạn chế.

Trong luận văn này, tác giả đã trình bày tổng quan về kiểm thử phần mềm: bao gồm các khái niệm cơ bản, các chiến lược kiểm thử, các phương pháp kiểm thử, và các vấn đề liên quan đến kiểm thử trong đảm bảo chất lượng phần mềm.

Luận văn cũng trình bày tổng quan về kiểm thử phủ và những nghiên cứu liên quan đến kiểm thử phủ trong các phần mềm phát triển theo phương pháp truyền thống, phần mềm phát triển theo hướng đối tượng, những kết quả đạt được, những khó khăn thuận lợi và những vấn đề đặt ra.

Cuối cùng luận văn đi sâu nghiên cứu về mô hình máy trạng thái – một mô hình phát triển phần mềm sử dụng lập trình hướng đối tượng cho một lớp bài toán mô tả hệ thống có các đối tượng di chuyển trong không gian các trạng thái khác nhau. Tại đây luận văn cũng trình bày sâu về kiểm thử phủ và vận dụng phương pháp kiểm thử để tiến hành lập trình thử nghiệm kiểm thử phủ cho bài toán cầu thang máy được phát triển theo mô hình máy trạng thái hữu hạn.

Những kết quả của luận văn chưa nhiều, nhưng nó thực sự đóng góp cho việc nghiên cứu và ứng dụng kiểm thử phủ phần mềm cho mô hình phát triển đối với một lớp bài toán hạn chế. Trong hướng tiếp tục của luận văn, tác giả hy vọng có thể mở rộng nghiên cứu kiểm thử phủ phần mềm với mô hình cho những lớp bài toán rộng rãi hơn.

TÀI LIỆU THAM KHẢO

[Beiz90] Boris Beizer. Software Testing Techniques, Second Edition, Van NostrandReinhold, 1990.

[Beiz95] Beizer, B. Black-box Testing.Wiley,1995.

[Brad77] J.M.Brady. The Theory Computer Science, Chapman and Hall, London, 1977.

[Cem&90] Cem Kaner, Jack Falk, Hung Quoc Nguyen. Testing Computer Software, John Wiley & Sons, Inc., 1990, pp.27-141.

[Hare&90] D.Harel, H. Lachover, A.Laamad, A.Pnuali, M.Politi, R.Sherman, A.Shtull-Trauring, and M.Trakhtenbrot, STATMATE: A Working Environment for the Development of Complex Reactive Sysstems, IEEE Transactions on Software Engineering SE-16 (April 1990), pp 403-14. [Harr&www] Harrold,M.J. and J.D.McGregor, Incremental Testing of Object-

Oriented Class structures,

http://www.cs.clemson.edu/~johnmc/papers/TESTING/HIT/hit.ps

[Hare&87] Harel D. State Chart: A Visual Formalism for Complex System. Science of Computer Programming,1987.

[Kamp87] G.R.Kampen, “A Eclectic Approach to Specification”. Proceedings of Fourth Internetional Workshop on Software Specification and Design, Monterey, CA, April 1987.

[Myer79] Myers,G. The Art of Sofware Testing. Wiley,1979.

[Vy&Ha09] Nguyễn Văn Vỵ, Nguyễn Việt Hà. Giáo trình kỹ nghệ phần mềm, NXB Giáo dục Việt nam, Hànội, 2009.

[Zand] Statement Coverage & Decision Coverage – Shailaja Kiran Arnold Zanderink.

MỤC LỤC

MỞ ĐẦU ... 1

1. Lý do chọn đề tài ... 1

2. Đối tượng nghiên cứu ... 2

3. Mục đích và phương pháp nghiên cứu ... 2

4. Ý nghĩa lý luận và thực tiễn của đề tài ... 2

CHƢƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM ... 3

1.1. Khái niệm về lỗi phần mềm ... 3

1.2. Nguyên nhân có lỗi phần mềm ... 4

1.3. Chi phí cho việc sửa lỗi ... 4

1.4. Khái niệm về kiểm thử phần mềm ... 5

1.5. Các mức của kiểm thử phần mềm ... 6

1.5.1. Kiểm thử mức đơn vị ... 7

1.5.2. Kiểm thử tích hợp ... 7

1.5.3. Kiểm thử mức hệ thống ... 9

1.5.4. Kiểm thử chấp nhận ... 11

1.5.5. Kiểm thử hồi quy ... 12

1.6. Các chiến lược kiểm thử ... 12

1.7. Các phương pháp kiểm thử ... 13

1.7.1. Kiểm thử hộp trắng ... 13

1.7.2. Kiểm thử hộp đen ... 14

1.7.3. Kiểm thử dựa trên mô hình... 17

CHƢƠNG 2: KIỂM THỬ HƢỚNG ĐỐI TƢỢNG ... 22

2.1. Lập trình hướng đối tượng ... 22

2.1.1. Khái niệm lập trình hướng đối tượng ... 22

2.1.2. Các tính chất của lập trình hướng đối tượng ... 23

2.2. Kiểm thử phần mềm hướng đối tượng ... 24

2.3. Điểm khác biệt trong kiểm thử phần mềm hướng đối tượng ... 25

2.4. Những khó khăn kiểm thử phần mềm hướng đối tượng ... 26

2.5. Tiến trình kiểm thử hướng đối tượng ... 27

2.5.3. Kiểm thử hệ thống ... 32

CHƢƠNG 3. KIỂM THỬ BAO PHỦ PHẦN MỀM ... 33

3.1. Khái niệm về kiểm thử bao phủ ... 33

3.2. Các độ đo bao phủ truyền thống ... 33

3.2.1. Bao phủ câu lệnh ... 33

3.2.2. Bao phủ nhánh ... 35

3.2.3. Bao phủ đường đi ... 35

3.2.4. Bao phủ điều kiện ... 36

3.2.5. Bao phủ nhiều điều kiện ... 36

3.3. Bao phủ phần mềm hướng đối tượng ... 37

3.3.1. Một cách mới đo mức độ bao phủ ... 37

3.3.2. Bao phủ phạm vi kế thừa ... 38

3.3.3. Kiểm thử phạm vi dựa trên trạng thái ... 39

3.4. Các công cụ phân tích kiểm thử bao phủ ... 42

CHƢƠNG 4: MÁY TRẠNG THÁI VÀ THỬ NGHIỆM KIỂM THỬ BAO PHỦ MÁY TRẠNG THÁI ... 43

4.1. Máy trạng thái hữu hạn ... 43

4.1.1. Khái niệm về máy trạng thái hữu hạn ... 43

4.1.2. Mô hình máy trạng thái ... 44

4.1.3. Lược đồ trạng thái ... 45

4.1.4. Cách xây dựng biểu đồ chuyển trạng thái ... 46

4.1.5. Ví dụ về đặc tả bằng máy tráng thái hữu hạn ... 47

4.2. Vấn đề bao phủ mô hình máy trạng thái ... 51

4.2.1. Những đặc trưng của máy trạng thái ... 51

4.2.2. Kiểm thử bao phủ máy trạng thái ... 52

4.3. Chương trình thử nghiệm ... 54

4.3.1. Giới thiệu bài toán ... 54

4.3.2. Xây dựng các ca kiểm thử cho chương trình ... 56

4.3.3. Xây dựng chương trình ... 59

KẾT LUẬN ... 65

Một phần của tài liệu Nghiên cứu kiểm thử bao phủ phần mềm và ứng dụng (Trang 65)

Tải bản đầy đủ (PDF)

(74 trang)