intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Một phướng pháp kiểm chứng và sinh test case cho các dịch vụ web dựa vào kiểm chứng mô hình

Chia sẻ: Hoang Son | Ngày: | Loại File: PDF | Số trang:6

74
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài báo này, chúng tôi đề xuất một phương pháp mới nhằm kiểm chứng và sinh bộ kiểm thử cho mô hình hành vi và mô hình điều khiển của ứng dụng dịch vụ web. Với phương pháp này, mô hình hành vi của ứng dụng web được chuyển đổi thành sang ngôn ngữ SMV, các chuẩn bao phủ kiểm thử được đặc tả bằng ngôn ngữ LTL, CTL, sau đó bộ công cụ kiểm chứng NuSMV được sử dụng để kiểm chứng một cách tự động mô hình hành vi và sinh ra các phản ví dụ từ đó sinh ra các bộ kiểm thử.

Chủ đề:
Lưu

Nội dung Text: Một phướng pháp kiểm chứng và sinh test case cho các dịch vụ web dựa vào kiểm chứng mô hình

Nguyễn Hồng Tân và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> 102(02): 27 - 32<br /> <br /> MỘT PHƯỚNG PHÁP KIỂM CHỨNG VÀ SINH TEST CASE<br /> CHO CÁC DỊCH VỤ WEB DỰA VÀO KIỂM CHỨNG MÔ HÌNH<br /> Nguyễn Hồng Tân1*, Nguyễn Trường Thắng2,<br /> Bùi Anh Tú1, Nguyễn Thị Tuyến1<br /> 1<br /> <br /> Trường Đại học Công nghệ thông tin và Truyền thông – ĐH Thái Nguyên<br /> 2<br /> Viện Công nghệ thông tin – Viện khoa học và công nghệ Việt Nam<br /> <br /> TÓM TẮT<br /> Ngày nay, các ứng dụng dịch vụ web rất phổ biến và có vai trò quan trọng trong các lĩnh vực của<br /> đời sống xã hội. Bài báo này, chúng tôi đề xuất một phương pháp mới nhằm kiểm chứng và sinh<br /> bộ kiểm thử cho mô hình hành vi và mô hình điều khiển của ứng dụng dịch vụ web. Với phương<br /> pháp này, mô hình hành vi của ứng dụng web được chuyển đổi thành sang ngôn ngữ SMV, các<br /> chuẩn bao phủ kiểm thử được đặc tả bằng ngôn ngữ LTL, CTL, sau đó bộ công cụ kiểm chứng<br /> NuSMV được sử dụng để kiểm chứng một cách tự động mô hình hành vi và sinh ra các phản ví dụ<br /> từ đó sinh ra các bộ kiểm thử.<br /> Từ khóa: Dịch vụ web, Kiểm chứng mô hình, Test Case, NuSMV.<br /> <br /> GIỚI THIỆU*<br /> Các ứng dụng dịch vụ web đang phát triển rất<br /> nhanh và được sử dụng cho nhiều mục đích<br /> khác nhau như trong kinh doanh và hệ thống<br /> chính phủ điện tử [3]. Để đảm bảo chất lượng<br /> dịch vụ web, một số phương pháp đã được đề<br /> xuất dựa vào mô hình hành vi và mô hình<br /> điều khiển để xác minh dịch vụ web. Kết quả<br /> đạt được là dịch vụ web dễ dàng được bảo trì,<br /> kiểm thử tốt hơn, phân tích, gỡ lỗi và các thiết<br /> kế của ứng dụng được xác minh một cách tự<br /> động [3][4]. Tuy nhiên, các phương pháp đề<br /> xuất mới chỉ dừng lại ở mức độ kiểm chứng<br /> các mô hình mà chưa hỗ trợ sinh ra được các<br /> bộ dữ liệu test để đảm bảo khách quan vấn đề<br /> kiểm thử ứng dụng web. Phương pháp tự<br /> động sinh dữ liệu test dựa trên mô hình hành<br /> vi của ứng dụng web giải quyết được các vấn<br /> đề lỗi thiết kế. Hành vi của ứng dụng web<br /> được chia thành hai phần: hành vi thực thi và<br /> hành vi điều khiển. Hành vi thực thi là ứng<br /> dụng độc lập, đó là các chức năng ở tầng<br /> nghiệp vụ của một dịch vụ web. Hành vi điều<br /> khiển là một ứng dụng độc lập hoạt động như<br /> một bộ điều khiển thông qua hành vi thực thi<br /> và thực thi các xử lý. Biểu đồ trạng thái được<br /> sử dụng để mô tả hành vi của ứng dụng web.<br /> Từ biểu đồ trạng thái chuyển đổi hành vi ứng<br /> dụng web thành ngôn ngữ SMV để kiểm<br /> chứng sử dụng bộ công cụ NuSMV. Dựa vào<br /> *<br /> <br /> Tel: 0943 252165, Email: nhtan@ictu.edu.vn<br /> <br /> chuẩn bao phủ test để chuyển các thuộc tính<br /> bẫy của thành công thức LTL/CTL. Các bộ<br /> test được sinh tự động khi kiểm chứng mô<br /> hình hành vi ứng dụng web và áp dụng công<br /> thức LTL/CTL.<br /> CÁC KIẾN THỨC NỀN TẢNG<br /> - Mô hình hành vi dịch vụ web<br /> Hành vi của dịch vụ web được định nghĩa<br /> gồm 5 thành phần: B=(S, L, T, S0, F) [4].<br /> Trong đó, S là tập hữu hạn các trạng thái;<br /> S0 ∈ S là trạng thái khởi tạo; F ∈ S là trạng<br /> thái kết thúc; L là nhãn các đường chuyển<br /> trạng thái; T ⊆ S x L x S là các ràng buộc<br /> chuyển trạng thái với mỗi đường truyền<br /> t=(Ssrc, l, Stgt) là thành phần của một trạng thái<br /> nguồn Ssrc ∈ S, Stgt ∈ S, l ∈ L.<br /> -Kiểm chứng mô hình<br /> Kiểm chứng mô hình là một tập các kỹ thuật<br /> để phân tích sự biểu diễn trừu tượng của một<br /> hệ thống để xác định tính xác thực của một<br /> hay nhiều thuộc tính quan tâm. Cụ thể hơn, nó<br /> được định nghĩa là một thuật toán định dạng<br /> kỹ thuật xác minh với trạng thái hữu hạn cho<br /> hệ thống hiện tại (Clarke 1986, Queille 1982,<br /> NASA 2004).<br /> -Cấu trúc Kripke<br /> Một hệ thống hữu hạn trạng thái được mô tả<br /> như một bộ gồm các thành phần [2]:<br /> <br /> M =< S , I , R, L ><br /> Trong đó, S hữu hạn các trạng thái; I trạng<br /> thái khởi đầu; R ⊆ S × S là phép trạng thái<br /> 27<br /> <br /> Nguyễn Hồng Tân và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> (biểu diễn phép chuyển từ trạng thái này đến<br /> trạng thái khác); L : S − > 2 AP là chức năng<br /> của trạng thái được gán nhãn với phần tử cơ sở<br /> (nguyên tử đề xuất) từ một ngôn ngữ đưa ra.<br /> Logic thời gian (Temporal logic) được sử<br /> dụng để kiểm chứng hành vi của hệ thống<br /> theo cấu trúc Kripke. Một hành vi trong cấu<br /> trúc Kripke bắt đầu từ trạng thái S ∈ I và đạt<br /> đến một trạng thái khác thuộc S thông qua R .<br /> -CTL và LTL[3]<br /> - LTL (Linear-Time-Temporal Logic): Logic<br /> thời gian tuyến tính. Thời gian có cấu trúc<br /> tuyến tính, mỗi trạng thái chỉ có một trạng<br /> thái ngay tiếp sau nó.<br /> Cú pháp:<br /> <br /> Φ ::= p | ¬Φ | Φ ∨ Φ | X Φ | ΦU Φ<br /> - CTL (Branching-Time-Temporal Logic):<br /> Logic thời gian rẽ nhánh. Thời gian có cấu<br /> trúc tuyến tính, mỗi trạng thái có nhiều trạng<br /> thái ngay tiếp sau nó.<br /> Cú pháp:<br /> <br /> Φ::= p| ¬Φ| Φ∨Φ| ΦUΦ| EXΦ| E(ΦUΦ)| A(ΦUΦ)<br /> <br /> Trong đó: X: toán tử Next, U: toán tử Until,<br /> E: toán tử Exit.<br /> -Chuẩn bao phủ test<br /> Dựa vào chuẩn bao phủ test để xác minh và<br /> sinh bộ test cho ứng dụng web được khách<br /> quan và đầy đủ. Các chuẩn bao phủ gồm [2]:<br /> - Bao phủ trạng thái: mọi trạng thái của mô<br /> hình được thăm ít nhất một lần.<br /> - Bao phủ đường truyền: mọi đường truyền<br /> của mô hình phải được đi qua ít nhất một lần.<br /> - Bao phủ cặp đường truyền: mọi cặp đường<br /> truyền liền kề trong mô hình hoặc trong biểu<br /> đồ trạng thái phải được đi qua ít nhất một lần.<br /> - Bao phủ đường thực thi: mọi đường thực thi<br /> phải được đi qua ít nhất một lần. Tất cả các<br /> đường thực thi là tiêu chí tương ứng để kiểm<br /> tra đầy đủ cấu trúc điều khiển của mô hình.<br /> <br /> Trong thực tế điều này là không thể bởi vì mô<br /> hình như vậy thường chứa một số lượng vô<br /> hạn đường thực thi do vòng lặp.<br /> Một bộ test bắt đầu từ trạng thái khởi tạo và<br /> kết thúc ở trạng thái kết thúc.<br /> -Ngôn ngữ SMV và công cụ NuSMV<br /> + Công cụ NuSMV [1]<br /> NuSMV là công cụ kiểm chứng mô hình<br /> được phát triển bởi trường Carnegie Mellon<br /> và viện per Ricerca Scientifica e Tecnolgica<br /> (IRST). NuSMV được viết bằng ngôn ngữ<br /> ANSI C. NuSMV được thiết kế với kiến trúc<br /> mở, mềm dẻo và được mô tả đầy đủ để phục<br /> vụ cho việc kiểm chứng mô hình phần mềm.<br /> Nếu được sử dụng trong các dự án chuyển<br /> giao công nghệ, NuSMV được thiết kế rất<br /> mạnh mẽ, thay đổi dễ dàng và gần với các yêu<br /> cầu chuẩn của công nghệ.<br /> Công cụ NuSMV có chức năng tạo ra một<br /> mô hình ảo (simulate) cho phép người sử<br /> dụng kiểm tra xem mô hình có đúng với đặc<br /> tả hay không.<br /> +Ngôn ngữ SMV [1]<br /> Ngôn ngữ đầu vào của công cụ NuSMV là<br /> ngôn ngữ SMV. Ngôn ngữ này mô tả được<br /> các hệ thống hữu hạn trạng thái. Các kiểu dữ<br /> liệu mà ngôn ngữ này cung cấp bao gồm: kiểu<br /> logic (boolean), kiểu số nguyên (bounded<br /> interger subrange) và các kiểu dữ liệu liệt kê<br /> symbolic enum.<br /> Các mô tả của một hệ thống phức tạp có thể<br /> được chia nhỏ thành các module và mỗi một<br /> module này có thể được thực thi nhiều lần.<br /> PHƯƠNG PHÁP SINH BỘ KIỂM THỬ<br /> CHO CÁC ỨNG DỤNG WEB DỰA VÀO<br /> KIỂM CHỨNG MÔ HÌNH.<br /> Phương pháp kiểm chứng mô hình hành vi và<br /> sinh dữ liệu kiểm thử cho các dịch vụ Web<br /> được nhóm nghiên cứu đề xuất qua 5 bước<br /> như hình vẽ 1 sau đây.<br /> <br /> Hình 1: Phương pháp thực hiện<br /> <br /> 28<br /> <br /> 102(02): 27 - 32<br /> <br /> Nguyễn Hồng Tân và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> 102(02): 27 - 32<br /> <br /> Các bước thực hiện:<br /> Bước 1: Từ mô hình hành vi của ứng dụng web chuyển thành mô hình hành vi điều khiển và<br /> hành vi thực thi.<br /> Ví dụ. Bài toán được phát biểu như sau: Dịch vụ dịch ngôn ngữ của Google Translatetor và cung<br /> cấp ngôn ngữ hỗ trợ từ dịch vụ Microsoft Translatetor. Đầu vào là chuỗi văn bản cần dịch. Trước<br /> hết, dịch vụ kiểm tra hỗ trợ ngôn ngữ. Sau đó, ngôn ngữ của văn bản được tự động phát hiện và<br /> văn bản được dịch. Nếu người dùng chọn ngôn ngữ thì ngôn ngữ được kiểm tra lại một lần nữa,<br /> sau đó văn bản có thể dịch được hoặc không dịch được. Từ đó bài toán được mô tả thành mô hình<br /> hành vi thực thi và mô hình hành vi điều khiển như hình vẽ 2 và 3 sau đây:<br /> <br /> Hình 2: Mô hình hành vi thực thi<br /> <br /> Hình 3: Mô hình hành vi điều khiển<br /> <br /> Ta xác định được cấu trúc Kripke:<br /> <br /> Hình 4: Cấu trúc Kripke của mô hình hành vi<br /> <br /> 29<br /> <br /> Nguyễn Hồng Tân và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> Trong đó, Na: trạng thái không hoạt động;<br /> Re: trạng thái nhận; In: trạng thái gọi; Pr:<br /> trạng thái xử lý; Ab: trạng thái hủy bỏ; Do:<br /> trạng thái thực hiện; En: trạng thái kết thúc.<br /> Dựa vào thuật toán giảm trạng thái và đường<br /> truyền [3][4] để giảm số trạng thái cho mô<br /> hình trên:<br /> - Nếu (s1,s2) và (s2,s1) là hai đường truyền thì<br /> chúng sẽ được thay thế bằng đường truyền<br /> (s1, s1).<br /> - Nếu chỉ một trong hai đường truyền tồn tại<br /> thì nó sẽ bị xóa đi.<br /> - Cho mọi x, nếu (sx,s2) là một đường truyền<br /> thì nó sẽ bị bỏ đi và thay thế bằng đường<br /> truyền (sx,s1) nếu như một đường truyền<br /> không tồn tại.<br /> - Cho mọi y, nếu (s2,sy) là một đường truyền<br /> thì nó sẽ bị bỏ đi và thay thế bằng đường<br /> truyền (s1,sy) nếu như một đường truyền<br /> không tồn tại.<br /> <br /> Hình 5: Cấu trúc Kripke của mô hình sau khi<br /> giảm trạng thái<br /> <br /> Bước 2: Chuyển mô hình hành vi thực thi<br /> thành ngôn ngữ mô hình SMV.<br /> Từ cấu trúc Kripke hình 5 ta chuyển thành<br /> ngôn ngữ SMV như sau:<br /> <br /> MODULE main<br /> VAR state:{Na,Re,In,Ab,Pr,Do,Su,En,Co};<br /> ASSIGN<br /> init(state):=Na;<br /> next(state):=<br /> case<br /> (state=Do):{En};<br /> (state=Re):{Do};<br /> (state=In):{Ab,Pr};<br /> (state=Pr):{Re,In};<br /> (state=Ab):{En};<br /> (state=Na):{Re};<br /> (state=En):{Na};<br /> 1:state;<br /> esac;<br /> Bước 3: Dựa vào chuẩn bao phủ test và mô<br /> hình hành vi điều khiển để viết công thức<br /> CTL và LTL.<br /> LTL: G (state = Na -> X F (state = In |<br /> state = En)).<br /> CTL: AG (state = Na -> AF state = En).<br /> AG (state = Re -> EX (state = In |<br /> state = Do)).<br /> AG (state = Re -> EF state = En).<br /> AG (state = In -> EX ((state = Ab |<br /> state = Re) | state = Pr)).<br /> AG (state = In -> EF state = En).<br /> AG (state = Pr -> EX ((state = Ab |<br /> state = Re) | state = In))<br /> AG (state = Pr -> EF state = En).<br /> Bước 4: Kiểm chứng mô hình nhờ bộ kiểm<br /> chứng NuSMV. Ta dựa vào bộ kiểm chứng<br /> NuSMV để kiểm tra mô hình và có kết quả<br /> như hình vẽ sau.<br /> <br /> Hình 6. Kết quả sau khi kiểm tra mô hình trên bộ kiểm chứng NuSMV<br /> <br /> 30<br /> <br /> 102(02): 27 - 32<br /> <br /> Nguyễn Hồng Tân và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> 102(02): 27 - 32<br /> <br /> Hình 7. Các bộ test sau khi tìm ra các phản ví dụ<br /> <br /> Bước 5: Tìm các trường hợp phản ví dụ<br /> (counter example) để sinh dữ liệu test và thực<br /> thi test. Counter example là do lỗi hệ thống hoặc<br /> thiết kế, lỗi mô hình, hoặc lỗi trong yêu cầu.<br /> Chẳng hạn, Lỗi yêu cầu: đảm bảo trạng thái<br /> Re được thực thi tốt. Ta có công thực sau F<br /> G state = Re.<br /> Sau khi thực thi test bộ test được sinh tự động<br /> dựa vào lưu vết đường đi của mô hình trong<br /> NuSMV.<br /> KẾT LUẬN<br /> Trong bài báo này, phương pháp tự động sinh<br /> dữ liệu test dựa trên mô hình hành vi của ứng<br /> dụng web được trình bày để giải quyết các<br /> vấn đề về tìm lỗi thiết kế trong các dịch vụ<br /> Web. Mô hình hành vi được mô hình hóa dựa<br /> trên hành vi thực thi và hành vi điều khiển.<br /> Hành vi thực thi thể hiện tầng nghiệp vụ của<br /> dịch vụ web. Hành vi điều khiển thể hiện các<br /> ràng buộc và trạng thái trong hành vi thực thi.<br /> Đồng bộ hóa hành vi thực thi và hành vi điều<br /> khiển là vấn đề để đảm bảo một thiết kế dịch<br /> vụ web là tốt. Phương pháp xác minh và tự<br /> động sinh dữ liệu test được sử dụng dựa trên<br /> mô hình hành vi của ứng dụng web, dữ liệu<br /> <br /> test được sinh tự động nhờ vào các thuộc tính<br /> từ mô hình và thuộc tính CLT/LTL dựa trên<br /> chuẩn bao phủ test. Kết quả đạt được là sinh<br /> được dữ liệu test một cách tự động để đảm<br /> bảo chất lượng dịch vụ web.<br /> TÀI LIỆU THAM KHẢO<br /> [1]. A.Cimatti, E.Clarke, F.Giunchiglia, M.Roveri,<br /> NuSMV: a new symbolic model checker, ITCIRST, Italy 2000.<br /> [2]. M.Mark Utting, Bruno Legeard, Practical<br /> model-based testing, Elsevier, 2007.<br /> [3]. Melissa KOVA, Jamal BENTAHAR, Zakaria<br /> MAAMAR and Hamdi YAHYAOUI. A Formal<br /> Verification Approach of Conversations in<br /> Composite Web Services using NuSMV, Artificial<br /> Intelligence and Application, IOS Press, pp. 245261, 2009.<br /> [4]. Quan Z. Sheng, Zakaria Maamar, Lina Yao,<br /> Claudia Szabo, Scott Bourne Behavior modeling<br /> and automated verification of Web services,<br /> Elsevier Inc 2012.<br /> [5]. Yongyan Zheng, Jiong Zhou. A Model<br /> Checking based Test Case Generation Framework<br /> for Web Services, International Conference on<br /> Information Technology (ITNG'07)0-7695-27760/07, IEEE 2007.<br /> <br /> 31<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
17=>2