1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Kiểm thử tích hợp với độ phức tạp tương đương kiểm thử thành phần

23 27 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 367,74 KB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐẶNG THỊ THU KIỂM THỬ TÍCH HỢP VỚI ĐỘ PHỨC TẠP TƯƠNG ĐƯƠNG KIỂM THỬ THÀNH PHẦN Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60 48 10 TÓM TẮT LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2012 MỤC LỤC DANH SÁCH CÁC BẢNG .3 DANH SÁCH CÁC HÌNH CHƯƠNG - GIỚI THIỆU .4 1.1 Mục tiêu nghiên cứu 1.2 Ý tưởng giải toán .5 1.3 Cấu trúc luận văn CHƯƠNG - KIẾN THỨC NỀN TẢNG 2.1 Kiểm thử đơn vị .6 2.2 Phân tích tĩnh 2.3 Kiểm thử luồng điều khiển 2.4 Kiểm thử luồng liệu 2.4.1 Kiểm thử định nghĩa - sử dụng ( Define/Use Testing) .8 2.4.2 Kiểm thử dựa lát cắt (Slice-based testing) CHƯƠNG - KỸ THUẬT KIỂM THỬ SINH MÔI TRƯỜNG 10 3.1 Chọn chức cần kiểm thử xác định đơn vị 10 3.2 Xác định giao diện .10 3.3 Kiểm thử 13 CHƯƠNG - ỨNG DỤNG 13 4.1 Giới thiệu phần mềm TestSystem 13 4.2 Kiểm thử chức Đăng nhập phần mềm TestSystem 13 4.2.1 Xác định đơn vị .13 4.2.2 Xác định giao diện đơn vị – môi trường 14 4.2.3 Kiểm thử chức Đăng nhập 14 4.2.4 Báo cáo kết kiểm thử 22 KẾT LUẬN .22 TÀI LIỆU THAM KHẢO 23 CHƯƠNG - GIỚI THIỆU 1.1 Mục tiêu nghiên cứu Với chương trình có kích thước nhỏ chức đơn giản, ta dễ dàng tiến hành kiểm thử kỹ thuật kiểm thử đơn vị Kiểm thử đơn vị lập trình viên thực hiện, có độ phức tạp nhỏ tốn chi phí Với phát triển ứng dụng cơng nghệ thông tin, nay, phần mềm thường lớn chứa nhiều lớp Các lớp thực thi độc lập, sau tích hợp lại thành hệ thống mong muốn Để kiểm thử chức hệ thống đó, người ta thường sử dụng kỹ thuật kiểm thử tích hợp Việc kiểm thử tích hợp chức tồn hệ thống thường có độ phức tạp cao, đòi hỏi kiểm thử không gian kiểm thử lớn Để làm giảm không gian cần kiểm thử, người ta tiếp cận theo hướng mơ-đun hóa cách chia phần mềm thành hai phần: đơn vị (unit) môi trường Đơn vị bao gồm tập hợp số lớp liên quan đến chức cần kiểm thử, môi trường tập hợp lớp mà đơn vị tương tác với Các tương tác xẩy giao diện đơn vị – môi trường Đơn vị tác động số hành vi lên môi trường ngược lại, môi trường tác động số hành vi lên đơn vị Sự tương tác đơn vị môi trường hành vi điều khiển, gọi đến trường hay phương thức; hành vi liệu, thay đổi giá trị trường Tất trường phương thức thể hành vi đơn vị môi trường tạo nên giao diện đơn vị – môi trường Với đơn vị cần kiểm thử, việc tạo môi trường công việc quan trọng Môi trường chia thành hai phần driver stub Driver bao gồm lớp gọi đến trường hay phương thức đơn vị, stub lớp mà đơn vị gọi đến Như vậy, driver thể hành vi mà môi trường tác động lên đơn vị, stub thể hành vi mà đơn vị tác động đến môi trường Với việc định nghĩa khái niệm trên, tổng qt hóa q trình tạo mơi trường cho đơn vị hình 1.1 Tồn phần mềm thể bên trái mũi tên Phần mềm gồm nhiều lớp Mỗi lớp minh họa hình chữ nhật có dòng kẻ bên Đơn vị cần kiểm thử bao quanh đường viền chấm Các đường mũi tên nối lớp, thể quan hệ lớp với Những đường mũi tên nối trực tiếp với đường bao quanh đơn vị thể tương tác đơn vị môi trường Từ thông tin trên, ta cần xác định driver stub cho đơn vị Phần bên phải mũi tên thể mối quan hệ đơn vị, driver stub Sau tạo môi trường cho đơn vị, để đảm bảo đơn vị kiểm thử toàn hệ thống, cần đặt đơn vị vào mối quan hệ với môi trường kiểm thử đơn vị tổng thể mối quan hệ đơn vị – mơi trường Với phạm vi không lớn, để tiến hành kiểm thử tính chất đơn vị, hồn tồn sử dụng kỹ thuật kiểm thử đơn vị kiểm thử luồng điều khiển, kiểm thử luồng liệu để kiểm thử Hình 1.1 Tạo mơi trường cho đơn vị [3] Kết quả, cần sử dụng kỹ thuật kiểm thử đơn vị, kiểm thử chức toàn hệ thống mà khơng cần sử dụng kỹ thuật kiểm thử tích hợp Nghiên cứu có ý nghĩa lớn việc kiểm thử hệ thống phức tạp, làm đơn giản tăng hiệu kiểm thử 1.2 Ý tưởng giải tốn Để làm cơng việc trên, với chức cần kiểm thử phần mềm, làm bước sau: Bước thứ - Xác định đơn vị: Sử dụng kỹ thuật phân tích tĩnh, tài liệu đặc tả, thiết kế, mã chương trình, xác định lớp định trực tiếp đến chức cần kiểm thử Tập hợp lớp gọi đơn vị Bước thứ hai - Xác định giao diện đơn vị – môi trường: giao diện đơn vị – môi trường bao gồm hai phần: giao diện đơn vị giao diện môi trường Giao diện đơn vị bao gồm trường, phương thức đơn vị mà môi trường tham chiếu đến Giao diện đơn vị thể hành vi môi trường tác động lên đơn vị Ngược lại, giao diện môi trường bao gồm trường, phương thức lớp môi trường mà đơn vị tham chiếu đến Giao diện môi trường thể hành vi đơn vị tác động lên môi trường Bước cuối – Kiểm thử: sau xác định giao diện đơn vị - môi trường, tất phương thức trường liên quan trực tiếp đến hành vi mà đơn vị môi trường tác động qua lại lên rõ Sử dụng kỹ thuật kiểm thử đơn vị kiểm thử luồng điều khiển, kiểm thử luồng liệu, tiến hành kiểm thử trường phương thức Kết xác trường phương thức đảm bảo chức ban đầu cần kiểm thử hoạt động toàn hệ thống Như vậy, với việc sử dụng kỹ thuật kiểm thử đơn vị, ta kiểm thử chức cần kiểm thử tồn hệ thống mà khơng cần sử dụng kỹ thuật kiểm thử tích hợp Trong luận văn này, ta gọi kỹ thuật kiểm thử trình bày kỹ thuật kiểm thử sinh môi trường 1.3 Cấu trúc luận văn Để trình bầy cụ thể kiến thức, giúp người đọc tiếp cận phương pháp kiểm thử sinh môi trường nêu trên, nội dung luận văn tập trung vào chương Những kiến thức tảng kiểm thử trình bày chương - Kiến thức tảng Đó kiến thức về: kiểm thử đơn vị, phân tích tĩnh, kỹ thuật kiểm thử hộp trắng bao gồm: kiểm thử luồng điều khiển kiểm thử luồng liệu Những kiến thức hỗ trợ người đọc việc tiếp cận hiểu vấn đề mà luận văn nghiên cứu Lý thuyết luận văn đề cập chương – Kiểm thử sinh mơi trường Chương trình bày sở lý thuyết thuật toán sử dụng kỹ thuật kiểm thử sinh môi trường Kỹ thuật bao gồm bước: xác định đơn vị, xác định giao diện đơn vị - môi trường, áp dụng kỹ thuật kiểm thử đơn vị để kiểm thử chức cần kiểm thử Việc áp dụng kỹ thuật kiểm thử sinh mơi trường vào ví dụ cụ thể trình bầy chương - Ứng dụng Chương giới thiệu khái quát phần mềm kiểm tra trực tuyến - TestSystem Sau trình bày bước áp dụng kỹ thuật kiểm thử sinh môi trường để kiểm thử chức Đăng nhập (Login) phần mềm TestSystem CHƯƠNG - KIẾN THỨC NỀN TẢNG 2.1 Kiểm thử đơn vị Kiểm thử đơn vị kỹ thuật kiểm thử đơn vị chương trình Đơn vị kiểm thử lập với tồn chương trình Người ta thường hiểu với nghĩa rằng, đơn vị hàm, thủ tục, phương thức hay lớp [1] Kiểm thử đơn vị mức kiểm thử thấp có ý nghĩa quan trọng Việc đảm bảo đơn vị chạy xác làm giảm thời gian chi phí nhiều cho mức kiểm thử cao sau Quá trình kiểm thử đơn vị nên tiến hành sớm giai đoạn viết mã cần thực thường xuyên xuyên suốt chu kỳ phát triển phần mềm Kiểm thử đơn vị bao gồm hai hướng: Kiểm thử hộp đen kiểm thử hộp trắng Trong đó, kiểm thử hộp đen kiểm thử dựa phân tích tất hành vi xẩy chạy chương trình mà khơng chạy chương trình thực Còn kiểm thử hộp trắng kiểm thử dựa việc chạy chương trình phân tích kết đầu 2.2 Phân tích tĩnh Phân tích tĩnh kỹ thuật đòi hỏi duyệt lại tài liệu yêu cầu, đặc tả, thiết kế mã chương trình để kiểm tra tính logic chương trình, mà khơng chạy chương trình [1] Trong kiểm thử, phân tích tĩnh thường dùng kỹ thuật bổ xung cho kỹ thuật kiểm thử truyền thống kiểm tra mơ hình Do khơng xác phân tích, phân tích tĩnh xác hơn, nói chung có khả mở rộng tốt kiểm tra mơ hình Do an tồn, khơng giống kỹ thuật kiểm thử truyền thống, phân tích tĩnh đưa kết thức đắn 2.3 Kiểm thử luồng điều khiển Kiểm thử luồng điều khiển kỹ thuật kiểm thử hộp trắng Tom McCabe đề xuất Để tiếp cận với kiểm thử luồng điều khiển, ta cần làm quen với khái niệm trích dẫn tài liệu [2] sau: Đường thi hành (execution path): danh sách có thứ tự lệnh chương trình thực thi lần chạy, điểm nhập đến điểm kết thúc đơn vị Đồ thị luồng điều khiển: cơng cụ hữu ích để hiển thị luồng điều khiển chương trình Trong nút hình tròn biểu thị đoạn câu lệnh chương trình, cung biểu thị luồng điều khiển Độ phức tạp Cyclomatic C thước đo phần mềm, đo độ phức tạp chương trình Trong ngữ cảnh kiểm thử luồng điều khiển, độ phức tạp cyclomatic cho biết số đường thi hành tuyến tính độc lập thủ tục cần kiểm thử Độ phức tạp Cyclomatic C = V(G) đồ thị dòng điều khiển tính công thức sau : o V(G) = E - N + 2, E số cung, N số nút đồ thị o V(G) = P + 1, đồ thị chứa nút định luận lý (chỉ có cung xuất Đúng/Sai) P số nút định Phủ kiểm thử: tỉ lệ thành phần thực kiểm thử so với tổng thể sau kiểm thử trường hợp kiểm thử chọn Phủ lớn độ tin cậy cao Vậy để kiểm thử luồng điều khiển đơn vị, tiến hành bước sau: o Xác định phủ kiểm thử o Xây dựng đồ thị luồng điều khiển dựa phủ kiểm thử o Tính độ phức tạp Cyclomatic đồ thị (=C) o Xác định C đường thi hành tuyến tính cần kiểm thử o Tạo trường hợp kiểm thử cho đường thi hành tuyến tính o Thực kiểm thử trường hợp kiểm thử o So sánh kết có với kết kỳ vọng o Lập báo cáo kết kiểm thử 2.4 Kiểm thử luồng liệu 2.4.1 Kiểm thử định nghĩa - sử dụng ( Define/Use Testing) Để tiếp cận với lý thuyết kiểm thử định nghĩa – sử dụng, cần làm quen với số định nghĩa nút định nghĩa, nút sử dụng, đường định nghĩa – sử dụng,… Nội dung định nghĩa trích dẫn từ tài liệu [4] Những định nghĩa áp dụng cho chương trình P P có đồ thị chương trình G(P) có tập hợp biến chương trình V G(P) thiết lập với nút đoạn chương trình, cạnh biểu diễn thứ tự nút G(P) có nút đơn đầu vào nút đơn đầu Trong G(P) không cho phép cạnh nút kết thúc nút Với chương trình P xác định trên, ta có định nghĩa sau đây: Định nghĩa Nút n G(P) nút định nghĩa (defining node) biến v V, ký hiệu DEF(v,n), giá trị biến v định nghĩa đoạn câu lệnh tương ứng với nút n Định nghĩa Nút n G(P) nút sử dụng (usage node) biến v V, ký hiệu USE(v,n), giá trị biến v sử dụng đoạn câu lệnh tương ứng với nút n Định nghĩa Một nút sử dụng USE(v,n) sử dụng mệnh đề (predicate use) (kí hiệu P-use) câu lệnh n câu lệnh mệnh đề, trường hợp ngược lại USE(v,n) sử dụng tính tốn (kí hiệu C-use) Định nghĩa Đường định nghĩa – sử dụng (definition-use path) với biến v đường thuộc PATHS(P) với m n nút bắt đầu nút kết thúc, DEF(v, m) USE(v,n) nút định nghĩa nút sử dụng biến v Định nghĩa Đường định nghĩa - rõ ràng (definition-clear path) với biến v đường định nghĩa - sử dụng PATHS(P) với nút bắt đầu kết thúc DEF(v,m) USE(v,n), đồng thời không tồn nút định nghĩa khác biến v đường Vậy để kiểm thử định nghĩa – sử dụng chương trình, cần tiến hành kiểm thử theo quy trình sau : o Xác định phủ kiểm thử o Xây dựng đồ thị chương trình dựa phủ kiểm thử o Tìm đường định nghĩa - sử dụng với biến o Với đường định nghĩa - sử dụng, xây dựng trường hợp kiểm thử qua câu lệnh đường để kiểm thử dòng liệu biến 2.4.2 Kiểm thử dựa lát cắt (Slice-based testing) Bắt đầu việc phát triển định nghĩa lát cắt chương trình Tiếp tục sử dụng ký hiệu dùng cho đường định nghĩa - sử dụng mục 2.4.1: Một chương trình P có đồ thị chương trình G(P), có tập hợp biến chương trình V Đầu tiên cần xem xét định nghĩa phép chuyển đổi nút G(P) thành đoạn câu lệnh Định nghĩa Cho chương trình P, tập V biến P Một lát cắt tập biến V câu lệnh n, ký hiệu S(V,n), tập hợp tất câu lệnh P mà có đóng góp tạo giá trị biến V Định nghĩa Cho chương trình P, đồ thị chương trình G(P), câu lệnh đoạn câu lệnh đánh số, tập hợp V biến P Một lát cắt tập biến V đoạn câu lệnh n, ký hiệu S(V,n), tập hợp số nút tất đoạn câu lệnh P đứng trước n mà có đóng góp tạo giá trị biến V đoạn câu lệnh n [4] Như lát cắt nắm bắt thời gian thực thi hành động chương trình tương ứng với biến lát cắt Cuối phát triển mạch (đồ thị hở, có hướng) lát cắt, đó, nút lát cắt, cạnh tương ứng với mối quan hệ tập hợp 10 CHƯƠNG - KỸ THUẬT KIỂM THỬ SINH MƠI TRƯỜNG Chương trình bầy bước để tạo môi trường cho đơn vị tiến hành kiểm thử đơn vị tương tác với mơi trường Q trình bao gồm bước: chọn chức cần kiểm thử; xác định đơn vị gồm lớp nào; xác định giao diện đơn vị - môi trường; liệt kê hành vi môi trường lên đơn vị hành vi đơn vị lên môi trường; cuối cùng, tiến hành kiểm thử tổng thể mối quan hệ đơn vị môi trường để đảm bảo tính đắn chức 3.1 Chọn chức cần kiểm thử xác định đơn vị Những phần mềm lớn có nhiều lớp nhiều chức Ta cần xác định chức cần kiểm thử Sử dụng kỹ thuật phân tích tĩnh, tài liệu đặc tả, thiết kế, mã chương trình, xác định lớp định trực tiếp đến chức Tập hợp lớp gọi đơn vị, lớp gọi lớp đơn vị 3.2 Xác định giao diện Nội dung bước hai tìm hiểu cấu trúc giao diện đơn vị – môi trường Giao diện đơn vị - môi trường gồm hai phần: giao diện đơn vị giao diện môi trường Giao diện đơn vị thể hành vi mà mơi trường thực thi đơn vị Ngược lại, giao diện môi trường thể hành vi mà đơn vị tác động lên môi trường Giao diện đơn vị: Bằng việc sử dụng kỹ thuật phân tích tĩnh, phân tích lớp đơn vị Giao diện đơn vị bao gồm tất phương thức trường công khai (public) lớp đơn vị, mà bị tham chiếu mơi trường Nghĩa là, xét trường phương thức lớp đơn vị, xem trường, phương thức gọi đến môi trường, hay bị thay đổi giá trị môi trường Để xác định giao diện đơn vị ta sử dụng thuật toán 3.1 Thuật toán 3.1 – Thuật toán xác định giao diện đơn vị [3] Đầu vào: U: tập lớp đơn vị Đầu ra: S: tập phương thức trường đơn vị Khởi tạo: S = 1: for each class u U 2: for each method m u.getMethods() 3: if isRelevant(m) then 4: S=S m 5: end if 6: end for 7: for each field f u.getFields() 10 11 8: 9: 10: 11: 12: 13: if isRelevant(f) then S=S f end if end for end for return S Lần lượt xét tất lớp đơn vị Với lớp ta kiểm tra phương thức trường xem phương thức trường có thi hành driver đơn vị hay khơng Nghĩa là, tìm xem phương thức trường lớp gọi lớp khác ngồi đơn vị Trong thuật tốn việc kiểm tra minh họa hàm isRevelant Nếu phương thức trường gọi driver thêm chúng vào giao diện đơn vị – S Giao diện môi trường: Để xác định giao diện môi trường, phân tích phương thức trường lớp đơn vị, tìm kiếm liên kết mà lớp đơn vị tham chiếu đến Để xác định giao diện môi trường, ta sử dụng thuật toán 3.2 Thuật toán 3.2: Thuật toán xác định giao diện môi trường [3] Đầu vào: U: tập lớp đơn vị, CG: đồ thị gọi phương thức Đầu ra: E: tập lớp, phương thức, trường môi trường Khởi tạo: E = 1: for each class u U 2: envCheck(u.getSuperclass()) 3: for each interface I u.getInterfaces() 4: envCheck(I) 5: end for 6: for each field f u.getFields() 7: envCheck(f.getTypeClass()) 8: end for 9: for each method m u.getMethods() 10: envCheckSignature(m) 11: for each local l m.getLocals() 12: envCheck(l.getTypeClass()) 13: end for 14: for each statement s m.getStatements() 15: if (s.containsInvokeExpr()) then 16: method m’ = CG.resolveDispatch(s) 17: envCheckSignature(m’) 18: class D = m’.getDeclaringClass() 19: if (envCheck(D)) then 11 12 20: E = E m’ 21: end if 22: end if 23: if (s.containsFieldRef()) then 24: f = s.getFieldRef() 25: class D = f getDeclaringClass() 26: if (envCheck(D)) then 27: E=E f 28: end if 29: end if 30: end for 31: end for Với lớp đơn vị, xét lớp cha giao diện (interface) có nằm ngồi đơn vị hay khơng, nằm ngồi chưa có mơi trường thêm vào mơi trường Cơng việc minh họa hảm envCheck thuật tốn Sau đó, xét phương thức trường lớp đơn vị Với trường, kiểm tra xem kiểu có cần thêm vào mơi trường hay không hàm envCheck Với phương thức, kiểm tra giá trị trả về, tham số, biến nội câu lệnh Hàm envCheckSignature kiểm tra kiểu giá trị trả về, kiểu tham số hàm Với câu lệnh phương thức, tìm xem có gọi đến phương thức hay trường đơn vị hay khơng Nếu câu lệnh có lời gọi hàm, tìm xem hàm gì, thuộc lớp Kiểm tra xem lớp có nằm ngồi đơn vị khơng lớp nằm ngồi hàm chưa thêm vào mơi trường thêm hàm vào mơi trường Tương tự, câu lệnh có tham chiếu đến trường khác lớp xét, kiểm tra xem trường thuộc lớp Lớp có nằm ngồi đơn vị hay khơng, có, kiểm tra xem trường thêm vào mơi trường chưa, chưa, thêm vào môi trường Đơn vị môi trường tác động qua lại với mặt điều khiển hay mặt liệu Mơi trường làm thay đổi giá trị trường hay gọi đến trường, phương thức đơn vị Tập hợp hành vi gọi hành vi mà môi trường tác động lên đơn vị Sử dụng giao diện đơn vị xác định trên, liệt kê hành vi mơi trường tác động lên đơn vị, từ đòi hỏi cần tiến hành kiểm thử trường, phương thức đơn vị để đảm bảo hành vi mơi trường lên đơn vị có kết xác Tương tự, đơn vị có tác động ngược lại lên môi trường, chẳng hạn đơn vị sử dụng phương thức hay trường nằm ngồi đơn vị Những hành vi gọi hành vi đơn vị lên mơi trường Với kết tìm giao diện mơi trường trên, xác định cần tiến 12 13 hành kiểm thử phương thức, trường lớp để đảm bảo tính đắn hành vi mà đơn vị tác động lên môi trường Sau xác định hành vi đơn vị môi trường, sử dụng kỹ thuật kiểm thử hộp trắng để kiểm thử, đảm bảo chức thỏa mãn 3.3 Kiểm thử Để kiểm tra tính đắn chức năng, sử dụng kỹ thuật kiểm thử luồng điều khiển kiểm thử luồng liệu trình bảy mục 2.3 2.4 để kiểm thử trường phương thức liên quan đến hành vi đơn vị môi trường Áp dụng kỹ thuật kiểm thử đơn vị để kiểm thử trường phương thức giao diện đơn vị - môi trường Sau phân tích, ta có hệ thống trường hợp kiểm thử (testcase) Chạy chương trình, theo dõi kết quả, so sánh với kết kỳ vọng trường hợp kiểm thử, lập báo cáo trình kiểm thử Q trình kiểm thử cho kết xác đảm bảo chức hoạt động toàn hệ thống CHƯƠNG - ỨNG DỤNG Nội dung chương bao gồm giới thiệu khái quát phần mềm TestSystem – phần mềm kiểm tra trực tuyến qua mạng, đồng thời trình bày việc áp dụng bước kỹ thuật kiểm thử sinh môi trường để kiểm thử chức Đăng nhập hệ thống TestSystem 4.1 Giới thiệu phần mềm TestSystem Phần mềm TestSystem cho phép người dùng thực quản lý trắc nghiệm trực tuyến qua mạng trường đại học Hệ thống bao gồm loại người dùng: sinh viên, giáo viên người quản trị Để thực chức cho phép mình, người dùng truy cập vào hệ thống cần phải đăng nhập với tên (user) mật (password) đăng ký trước 4.2 Kiểm thử chức Đăng nhập phần mềm TestSystem Trong phần này, ta thực hóa bước trình bày chương với chức cụ thể - Đăng nhập, phần mềm TestSystem 4.2.1 Xác định đơn vị Sử dụng kỹ thuật phân tích tĩnh, nghiên cứu mã chương trình, kết cho thấy lớp định trực tiếp đến chức Đăng nhập lớp Login thuộc namespace TestSystem.Models 13 14 4.2.2 Xác định giao diện đơn vị – môi trường Giao diện đơn vị - môi trường bao gồm hai phần: giao diện đơn vị giao diện môi trường Chi tiết giao diện trình bày sau: Giao diện đơn vị: Áp dụng thuật toán xác định giao diện đơn vị trình bày mục 3.2, tìm giao diện đơn vị gồm trường sau: o o o o o o o o nTypeUser nUserName nIDTeacher nIDStudent CountAnonymous CountStudent CountTeacher CountAdmin Giao diện môi trường: Áp dụng thuật tốn xác định giao diện mơi trường trình bày mục 3.2, xác định giao diện môi trường gồm phương thức sau: o GetStudent lớp Student o GetDataTeacher lớp Teacher o SetPresenceStudent lớp Student o SetPresenceTeacher lớp Teacher Sau xác định giao diện đơn vị giao diện môi trường, cần tiến hành kiểm thử để đảm bảo chức hoạt động xác 4.2.3 Kiểm thử chức Đăng nhập Để kiểm thử tính đắn chức Đăng nhập, cần kiểm thử trường phương thức sau: Kiểm thử trường đơn vị mà môi trường cần dùng Sử dụng kiểm thử luồng liệu theo phương pháp định nghĩa – sử dụng để kiểm thử trường nTypeUser, nIDStudent, nIDTeacher, countTeacher, countAdmin, countStudent, countAnonymous lớp Login Mã lớp Login đánh số dòng sau: prvate void Login_bt_Click(object sender, System.EventArgs e) { Error_lb.Visible = false; string nUser, nPassword; int nTypeUser; nUser = User_tb.Text; 14 15 nPassword = Password_tb.Text; DBStudent = CStudent.GetStudent(nUser, nPassword); 10 if (DBStudent.Rows.Count > 0) 11 { 12 nTypeUser = 3; 13 PrLogin( DBStudent, nTypeUser); 14 } 15 else 16 { 17 DBTeacher = CTeacher.GetDataTeacher(nUser, nPassword); 18 if (DBTeacher.Rows.Count > 0) 19 { 20 nTypeUser = Convert.ToInt16(DBTeacher.Rows[0]["TypeUser"]); 21 PrLogin(DBTeacher, nTypeUser); 22 } 23 else 24 { 25 Error_lb.Visible = true; 26 Error_lb.Text = "Khong ton tai User nay"; 27 28 29 }// if DBTeacher }// if DBStudent } // -30 private void PrLogin( DataTable DB, int nTypeUser) 31 { 32 bool nLocked Convert.ToBoolean(DB.Rows[0]["Locked"]); 33 if (nLocked) 34 { 35 Error_lb.Visible = true; 36 Error_lb.Text = "User da bi khoa"; 37 } 38 else 39 { 40 bool nPresence = Convert.ToBoolean(DB.Rows[0]["Presence"]); 41 if (nPresence) 42 { 43 Error_lb.Visible = true; = 15 16 44 thong"; 45 46 47 Error_lb.Text = "User hien dang truy cap he } else { 48 Application["CountAnonymous"]= Convert.ToInt16(Application["CountAnonymous"])-1; 49 50 51 if (nTypeUser == 3) { Application["CountStudent"]= Convert.ToInt16(Application["CountStudent"])+1; 52 int nIDStudent = Convert.ToInt16(DB.Rows[0]["IDStudent"]); 53 CStudent.SetPresenceStudent(nIDStudent, true); 54 Session["IDStudent"] = nIDStudent; 55 56 57 58 59 60 61 62 } else { if (nTypeUser == 1) Application["CountAdmin"]= Convert.ToInt16(Application["CountAdmin"])+1; else Application["CountTeacher"]= Convert.ToInt16(Application["CountTeacher"])+1; int nIDTeacher = Convert.ToInt16(DB.Rows[0]["IDTeacher"]); 63 CTeacher.SetPresenceTeacher(nIDTeacher, true); 64 Session["IDTeacher"] = nIDTeacher; 65 66 67 68 69 70 71 } } Session["UserName"] = User_tb.Text; Session["TypeUser"] = nTypeUser; Error_lb.Text = ""; Response.Redirect("Default.aspx"); }// if Presence //if locked 16 17 72 } Tiến hành kiểm thử với độ phủ cấp Kết quả, đồ thị luồng điều khiển lớp Login biểu diễn hình 4.1 Các nút tròn thể câu lệnh chương trình Số nút tròn số dòng lệnh đánh dấu chương trình Các mũi tên thể luồng điều khiển chương trình Các nút hình bầu dục màu tối điểm kết thúc chương trình Căn vào mã chương trình, xác định nút định nghĩa, sử dụng biến cần kiểm thử Kết liệt kê bảng 4.1 Bảng 4.1 Các nút định nghĩa, sử dụng biến Tên biến Nút định nghĩa Nút sử dụng nTypeUser 12, 20 49, 58, 67 nIDStudent 52 53, 54 nIDTeacher 62 63, 64 CountTeacher 61 61 CountStudent 51 51 CountAdmin 59 59 CountAnonymous 48 48 Dựa vào đồ thị luồng điều khiển hình 4.1, kết hợp với nút định nghĩa, nút sử dụng biến liệt kê bảng 4.1, xác định đường định nghĩa – sử dụng biến, từ xây dựng trường hợp kiểm thử biến bảng từ bảng 4.2 đến bảng 4.8 Bảng 4.2 Các trường hợp kiểm thử biến nTypeUser Đường nUser nPassword Kết kỳ vọng Ghi (Session[“TypeUser”]) P2 thu thu Sinh viên P4 teacher teacher Giáo viên P5 admin admin Admin Bảng 4.3 Các trường hợp kiểm thử biến nIDStudent Đường nUser nPassword Kết kỳ vọng (Session[“IDStudent”]) P7 thu thu 37 Bảng 4.4 Các trường hợp kiểm thử biến nIDTeacher Đường nUser nPassword Kết kỳ vọng (Session[“IDTeacher”]) P9 teacher teacher Bảng 4.5 Các trường hợp kiểm thử biến countTeacher 17 18 Đường P10 nUser nPassword teacher teacher Kết kỳ vọng (countTeacher) Tăng thêm Bảng 4.6 Các trường hợp kiểm thử biến countStudent Đường nUser nPassword Kết kỳ vọng (countStudent) P11 thu Thu Tăng thêm Bảng 4.7 Các trường hợp kiểm thử biến countAdmin Đường nUser nPassword Kết kỳ vọng (countAdmin) P12 admin Admin Tăng thêm Bảng 4.8 Các trường hợp kiểm thử biến countAnonymous Đường nUser nPassword Kết kỳ vọng (countAnonymous) P13 thu thu Giảm 18 19 Hình 4.1: Đồ thị luồng điều khiển lớp Login Kiểm thử phương thức mà Đơn vị gọi đến Sử dụng kiểm thử luồng điều khiển để kiểm thử phương thức mà đơn vị gọi đến Với phương thức, kiểm thử luồng điều khiển với độ phủ cấp Kiểm thử phương thức GetStudent thuộc lớp Student Bước 1: Xây dựng đồ thị luồng điều khiển Mã phương thức chia thành phần nhỏ hình 4.2 Câu lệnh gọi phương thức Connect() để kết nối với sở liệu gọi hành động Kiểm tra điều kiện UserName Passwd xem liệu đầu vào có thỏa mãn khơng nhóm thành hành động Chọn tất hàng bảng Students sở liệu thỏa mãn điều kiện gọi hành động Lưu kết thu câu lệnh Select vào chuyển đổi sở liệu dAdapt gọi hành động Hành động cuối hành động 5, bao gồm câu lệnh 19 20 lưu kết thu hành động vào bảng GetStudent myDS trả kết cho phương thức Với việc chia mã chương trình thành phần trên, đồ thị luồng điều khiển phương thức có dạng hình 4.3 Đồ thị từ điểm bắt đầu đến điểm kết thúc Điểm bắt đầu kết thúc biểu diễn hình tròn màu tối Các nút tròn với số bên tương ứng với hành động chia hình 4.2 Mũi tên thể luồng điều khiển chương trình Hình 4.2 Mã phương thức GetStudent Bước 2: Tính độ phức tạp Cyclomatic đồ thị (=C) Đồ thị luồng điều khiển phương thức GetStudent chứa nút định luận lý (nút 5) nên độ phức tạp C = 1+1 = Vậy cần xác định đường thi hành tuyến tính Bước 3: Xác định C đường thi hành tuyến tính cần kiểm thử Dựa vào đồ thị luồng điều khiển, xác định đường thi hành tuyến tính cần kiểm thử sau: 1: 1->4->2->5 2: 1->4->3->2->5 Bước 4: Tạo trường hợp kiểm thử cho đường thi hành tuyến tính Tương ứng với đường thi hành tuyến tính tìm bước 3, trường hợp kiểm thử xác định bảng 4.9 Tương tự phương thức GetStudent thuộc lớp Student kiểm thử trên, xây dựng trường hợp kiểm thử cho phương thức GetDataTeacher, SetPresenceStudent, SetPresenceTeacher bảng từ bảng 4.10 đến bảng 4.12 Bảng 4.9 Các trường hợp kiểm thử phương thức GetStudent 20 21 Đường nUser nPassword Kết kỳ vọng số dangthu thu Không tồn sinh viên thu thu Tồn sinh viên với Tên Mật Bảng 4.10 Các trường hợp kiểm thử phương thức GetDataTeacher Đường nUser nPassword Kết kỳ vọng số thu dangthu Không tồn giáo viên dangthu dangthu Tồn Giáo viên với Tên Mật Bảng 4.11 Các trường hợp kiểm thử phương thức SetPresenceStudent Đường số nIDStudent Kết kỳ vọng 35 Không tồn sinh viên 37 Thuộc tính presence sinh viên có ID 37 thiết lập giá trị true Hình 4.3 Đồ thị luồng điều khiển phương thức GetStudent Bảng 4.12 Các trường hợp kiểm thử phương thức SetPresenceTeacher Đường số nIDTeacher Kết kỳ vọng 100 Không tồn giáo viên 102 Thuộc tính presence giáo viên có ID 102 thiết lập giá trị true Như vậy, với việc áp dụng kiểm thử định nghĩa – sử dụng kiểm thử luồng điều khiển, trường hợp kiểm thử cho biến lớp Login mà môi 21 22 trường cần đến trường hợp kiểm thử cho phương thức môi trường mà lớp Login sử dụng xác định 4.2.4 Báo cáo kết kiểm thử Để chạy trường hợp kiểm thử trình bày mục 4.2.3, cần tạo mã driver cho phương thức cần kiểm thử Tác giả viết luận văn xây dựng mã lưu trữ lớp TestLogin phần mềm TestSystem Chi tiết mã lớp TestLogin trình bày phụ lục – Mã lớp TestLogin KẾT LUẬN Với phần mềm lớn, sử dụng kiểm thử sinh mơi trường trình bầy luận văn để làm giảm khơng gian cần kiểm thử Thay tốn nhiều cơng sức cho kiểm thử tích hợp, người kiểm thử thực kiểm thử với độ phức tạp tương đương kiểm thử đơn vị Sau nghiên cứu luận văn, người đọc giới thiệu kiến thức kiểm thử, kiến thức sử dụng việc nghiên cứu lý thuyết luận văn Đó kiến thức kiểm thử đơn vị, phân tích tĩnh, kiểm thử luồng điều khiển hai dạng kiểm thử luồng liệu là: kiểm thử định nghĩa – sử dụng kiểm thử dựa lát cắt Phần lý thuyết luận văn trình bày chương - Kỹ thuật kiểm thử sinh môi trường Với ý tưởng chia phần mềm thành phần: đơn vị môi trường mà đơn vị tương tác với, kỹ thuật kiểm thử sinh môi trường làm giảm không gian cần kiểm thử Kỹ thuật bao gồm bước: xác định chức cần kiểm thử; xác định đơn vị: bao gồm lớp định trực tiếp đến chức cần kiểm thử; xác định giao diện đơn vị giao diện môi trường: trường, phương thức đơn vị bị môi trường tham chiếu đến trường, phương thức môi trường mà đơn vị gọi đến; bước cuối cùng, tiến hành kiểm thử trường phương thức liên quan đến hành vi đơn vị môi trường kỹ thuật kiểm thử hộp trắng Chương cuối luận văn trình bày chi tiết bước kỹ thuật kiểm thử sinh môi trường với ví dụ cụ thể Áp dụng kỹ thuật kiểm thử sinh môi trường để kiểm thử chức Đăng nhập phần mềm kiểm tra trực tuyến TestSystem Với chức Đăng nhập cần kiểm thử, luận văn chi tiết đơn vị, giao diện đơn vị - mơi trường gì; cần kiểm thử thuộc tính, phương thức nào; áp dụng kỹ thuật kiểm thử đơn vị để sinh trường hợp kiểm thử; xây dựng mã driver phương thức cần kiểm thử, từ chạy chương trình TestSystem, so sánh kết với kết kỳ vọng lập báo cáo kiểm thử Như vậy, với mục đích giúp người đọc tiếp cận với ý tưởng kiểm thử mới, luận văn đáp ứng mục tiêu, yêu cầu đặt Để phát triển hoàn thiện kỹ thuật kiểm thử sinh mơi trường trình bày luận văn, tác giả 22 23 viết luận văn muốn phạm vi nghiên cứu khác lớn hơn, xây dựng bước xác định đơn vị cách tự động dựa vào đồ thị cấu trúc chương trình xây dựng dựa phân tích tĩnh Hy vọng đề tài đông đảo người nghiên cứu khoa học quan tâm, nghiên cứu hoàn thiện để áp dụng vào thực tiễn, nâng cao hiệu chất lượng kiểm thử, đóng góp cho phát triển khoa học xã hội TÀI LIỆU THAM KHẢO Tiếng Anh Kshirasagar Naik, Priyadarshi Tripathy (2008), Software Testing and Quality assurance – Theory and Practice, The John Wiley and sons, INC Publication Lee Copeland (2003), A Practitioner's Guide to Software Test Design, Artech House Publishers Oksana Tkachuk (2003), Doctor of Philosophy: Domain – specific environment generation for modular software model checking, M.S, Kansas State University Paul C Jorgensen, Ph.D (2002), Software Testing, Craftsman’s Approach, CRC Press 23 Thank you for evaluating AnyBizSoft PDF Splitter A watermark is added at the end of each output PDF file To remove the watermark, you need to purchase the software from http://www.anypdftools.com/buy/buy-pdf-splitter.html ... LUẬN Với phần mềm lớn, sử dụng kiểm thử sinh mơi trường trình bầy luận văn để làm giảm khơng gian cần kiểm thử Thay tốn nhiều cơng sức cho kiểm thử tích hợp, người kiểm thử thực kiểm thử với độ phức. .. thi độc lập, sau tích hợp lại thành hệ thống mong muốn Để kiểm thử chức hệ thống đó, người ta thường sử dụng kỹ thuật kiểm thử tích hợp Việc kiểm thử tích hợp chức tồn hệ thống thường có độ phức. .. xuất Đúng/Sai) P số nút định Phủ kiểm thử: tỉ lệ thành phần thực kiểm thử so với tổng thể sau kiểm thử trường hợp kiểm thử chọn Phủ lớn độ tin cậy cao Vậy để kiểm thử luồng điều khiển đơn vị, tiến

Ngày đăng: 06/03/2020, 00:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w