Hình ảnh của hệ thống phần mềm

Một phần của tài liệu (LUẬN văn THẠC sĩ) mô hình hóa và kiểm thử máy rút tiền ATM bằng kỹ thuật sinh ca kiểm thử từ máy trạng thái hữu hạn (FSM FINITE state machines testing) (Trang 35)

Trong một hệ thống dữ liệu chiếm ưu thế, hệ thống dành phần lớn thời gian xử lý dữ liệu đó và yêu cầu người sử dụng, các trình tự tương tác với người sử dụng rất đơn giản. Vì vậy, phần điều khiển là đơn giản hơn so với việc xử lý dữ liệu, đó là phức tạp hơn. Do vậy, các phần điều khiển của một hệ thống phần mềm thường có thể được mô hình hóa như một trạng thái hữu hạn (FSM), có nghĩa là sự tương tác giữa hệ thống và người dùng hoặc môi trường.

Bởi vậy, một mô hình FSM hành vi bên ngoài của hệ thống mô tả trình tự của đầu vào và đầu ra mong đợi từ hệ thống. Một mô hình như là một nguồn chính cho các trường hợp kiểm thử. Trong phần này, tôi xin giải thích làm thế nào để lấy được các trường hợp kiểm thử từ một mô hình FSM.

1 2008 Software Testing and Quality Assurance Theory and Practice - KSHIRASAGAR NAIK - PRIYADARSHI TRIPATHY

Hình 2.2. Tƣơng tác giữa hệ thống và môi trƣờng mô hình hóa nhƣ FSM2. 2.3. Máy trạng thái hữu hạn.

Trong các phương pháp phát triến phần mềm, máy trạng thái hữu hạn là một phương pháp được dùng để đặc tả phần mềm dành cho lớp các bài toán sinh ra ca kiểm thử từ máy trạng thái hữu hạn, mà các đối tượng được cấu hình thành hệ thống có các trạng thái khác nhau trong quá trình vận hành như cầu thang máy, máy giặt, máy rút tiền tự động,… do đặc trưng của bài toán sinh ca kiểm thử này, mà hệ thống phát triển phần mềm được lập trình theo hướng đối tượng. Bên cạnh đó, do đặc thù của phương pháp dựa trên mô hình hóa máy trạng thái hữu hạn, cũng là một tiêu chí kiểm thử phủ toàn bộ về các trạng thái, chuyển dịch, sự kiện và hành động của hệ thống phần mềm.

Máy hữu hạn trạng thái (FSM) là một mô hình hành vi sử dụng các trạng thái và chuyển trạng thái. Nó là một mô hình được sử dụng rộng rãi trong lĩnh vực công nghệ phần mềm và đặc biệt phổ biến trong thiết kế hệ thống. Máy trạng thái hữu hạn tạo ra output trên chuyển trạng thái và input nhận được. Máy hữu hạn trạng thái là một bộ M = <S, I, O, s0, δ, λ>. Trong đó:

 S: là một tập các trạng thái,  I: là tập thông tin đầu vào,  O: là tập thông tin đầu ra,  s0: là trạng thái ban đầu,

 δ: S x I → S là hàm chuyển trạng thái,  λ: S x I → O là hàm thông tin đầu ra.

2 2008 Software Testing and Quality Assurance Theory and Practice - KSHIRASAGAR NAIK - PRIYADARSHI TRIPATHY

Tuy nhiên, kiểm thử phần mềm có rất nhiều mô hình được sử dụng như UML (Unified Modeling Language), văn phạm, bảng quyết định, máy trạng thái hữu hạn FSM (Finte State Machine)… được sử dụng rộng rãi để mô hình hóa các đặc tả hành vi của hệ thống. Những mô hình này gồm các trạng thái, các chuyển tiếp, các hành động (action) bao gồm: hành động vào (Entry action) được thực hiện khi vào trạng thái tương ứng; hành động thoát (Exit action) được thực hiện khi rời trạng thái tương ứng; hành động nhập (Input action) được thực hiện theo dữ liệu nhập và trạng thái tương ứng; hành động chuyển trạng thái (Transition action) được thực hiện khi chuyển trạng thái theo cung tương ứng. Nó được dựa trên các khái niệm trạng thái (States) và sự mô hình hóa máy trạng thái (FSM), cho phép các kiểm thử viên xem sự phát triển phần mềm trong một số điều kiện trạng thái của nó, mà quá trình chuyển đổi giữa các trạng thái, điều kiện nhập đầu vào và sự kiện kích hoạt thay đổi trạng thái.

Hình 2.3. Mô hình chuyển trạng thái của FSM.

Việc xem xét này, làm cho các Tester có thêm cơ hội phát triển các test case để phát hiện ra các lỗi mà không phát hiện được bằng điều kiện input, output bình thường cũng như việc xem đồ thị nguyên nhân – kết quả được lập ra từ lớp tương đương và vẽ đồ thị nguyên nhân – kết quả.

Về ứng dụng, máy trạng thái hữu hạn đóng vai trò quan trọng trong nhiều lĩnh vực như: công nghệ điện tử, ngôn ngữ học, khoa học máy tính, triết học, sinh học, toán học, logic học…Trong kiểm thử phần mềm, máy trạng thái hữu hạn được sử dụng rộng rãi trong việc mô hình hóa hoạt động của hệ thống phần mềm, thiết kế hệ thống phần cứng, công nghệ mạng, xử lý trong ngôn ngữ…Trạng thái là cấu hình bên trong của một hệ thống hoặc chức năng của thành phần (component). Nó được định nghĩa dựa trên điều kiện các giá trị giả định tại một thời điểm riêng biệt cụ thể cho các biến đặc trưng cho hệ thống. FSM là một thiết bị để mô hình hóa các hành vi (mô hình trừu tượng hóa toán học đôi khi dùng để thiết kế ra các kỹ thuật logic hoặc các chương trình máy tính) gồm một số trạng thái có hạn, quá trình chuyển đổi qua lại giữa các trạng thái và các hành động tương tự như một đồ thị luồng xử lý (flow graph). Trong đó, có thể kiểm tra các bước chạy logic khi các điều kiện nhất định được đáp ứng. Nó

Si Sj

có bộ nhớ trong, một chức năng nhập đầu vào (input) có thể đọc được những ký hiệu liên tục trong một thời điểm mà không cần phải quay lại và một chức năng output có thể là một hình thức giao diện người dùng khi mô hình hoạt động.

Cách hoạt động của mô hình máy trạng thái hữu hạn FSM được bắt đầu từ một trạng thái khởi tạo, đến các trạng thái chuyển tiếp sang các trạng thái khác nhau phụ thuộc vào điều kiện nhập và có thể kết thúc ở bất kỳ trạng thái nào hợp lệ. Tuy nhiên chỉ có một tập các trạng thái được đánh dấu là luồng xử lý thành công. Ví dụ dưới đây là một mô hình nhận dạng mã PIN đơn giản của hệ thống ATM:

Hình 2.4. Mô hình nhận dạng mã PIN của ATM3.

FSM là những mô hình bao gồm:

o Những yếu tố tĩnh: gồm có trạng thái (state) và sự chuyển tiếp trạng thái (state transition). Những sự chuyển tiếp trạng thái thường được gọi là các sự chuyển tiếp. Số lượng của những trạng thái là hữu hạn. Sự chuyển tiếp trực tiếp từ trạng thái A sang trạng thái B chỉ có thể theo 1 đường link duy nhất là A-B. Số lượng của những chuyển tiếp là giới hạn.

o Những yếu tố động: gồm đầu vào input được cung cấp cho FSM và đầu ra output được lấy ra từ FSM ở việc thực hiện trong hệ thống. Nói chung, cả hai số lượng đầu vào và đầu ra đều là hữu hạn. Nếu trường hợp mà có số lượng đầu vào và đầu ra có thể chiếm một số lượng lớn hoặc một số lượng vô hạn các giá trị, thông thường chúng ta cần phải nhóm chúng vào các phân vùng.

3

Các mô hình FSM và các yếu tố của hệ thống cần kiểm tra được biểu diễn bằng đồ thị gồm:

o Mỗi trạng thái được mô tả như là một nút (node) trong đồ thị.

o Mỗi sự chuyển tiếp được diễn tả như một đường link được kết nối trực tiếp từ trạng thái này sang trạng thái khác.

o Input và output được nối với sự chuyển tiếp và được diễn tả như sự chú thích bởi các sự chuyển tiếp.

Thông thường một trạng thái thì tương ứng với vài trạng thái xử lý chương trình của một hệ thống hoặc là một khoảng thời gian cụ thể, hoặc là tương ứng với một trường hợp đặc biệt giữa những hoạt động nào đó của hệ thống.

2.4. Một số cách biểu diễn cho FSM.

a. Biểu diễn kiểu liệt kê

Cho FSM ATM= <S, I, O, s0, δ, λ>. Trạng thái ban đầu s0

Tập trạng thái S = {s1, s2..., sn} Tập Inputs I = {i1, i2, ..., in}

Tập chuyển trạng thái {δ(ii,sj) = st} với ∀ ii I và sj, st S Tập Outputs O = {λ(si,ik) = ot} với si S; ∀ ik I; ∀ot O

Ví dụ: FSM ATM = <S, I, O, s0, δ, λ),

Tập các trạng thái S={S0, S1, S2}

Tập Inputs I={<card (pin,b)/prompt for pin>,

<pin(p); [(p!=pin) & attempt<3]/ Display error>, <withdraw(w)/ b=b-w>,<deposit(d)/ b=b+d>, <continue transaction/print(b); Display menu>}

Tập Outputs O={<card (pin,b)/ prompt for pin>, <pin(p);[(p!=pin)&attempt<3]/ Display error>, <withdraw(w)/ b=b-w>,<deposit(d) / b=b+d>, <continue transaction/ print(b); Display menu>}

Trạng thái ban đầu: s0=S0

Tập chuyển trạng thái: {δ(S0, pin(p); p==pin)=S1, δ (S1, withdraw(w))=S2, δ (S1,exit)=S0,

δ(S1, deposit(d))=S2, δ(S2, continue transaction)=S1 }.

Tập Outputs tƣơng ứng với sự chuyển trạng thái:

{ λ(S0, pin(p); p==pin)=Display menu, λ (S1, withdraw(w))=b=b-w, λ(S1, exit)=Eject card, λ (S1, deposit(d))=b=b+d,

λ(S2, continue transaction)=print(b);display menu}.

b. Biểu diễn bằng đồ thị

Các FSM và các yếu tố của chúng có thể được biểu diễn bằng đồ thị. Các yếu tố chính trong đồ thị bao gồm:

o Mỗi trạng thái được mô tả như là một nút (node) trong đồ thị.

o Mỗi sự chuyển tiếp được diễn tả như một đường link được kết nối trực tiếp từ trạng thái này sang trạng thái khác được coi là cạnh của đồ thị với nhãn là cặp input/output (ký hiệu „/‟ để phân biệt input và output). Từ việc mô tả FSM ATM bằng phương pháp liệt kê như ví dụ ở trên, ta có thể biểu diễn FSM ATM bằng đồ thị như hình 2.5 dưới đây:

c. Biểu diễn bằng dạng bảng.

Mặc dù sự mô tả đồ thị thì rất trực giác và dễ giải thích, nhưng nó trở nên không thực tế khi số lượng các trạng thái là lớn. Khi chúng ta có nhiều trạng thái, thì đồ thị sẽ trở nên rối và rất khó theo dõi. Vì thế mô tả dạng bảng biểu hay sự mô tả theo ma trận là một cách rất hệ thống, thường là kiểu ma trận vuông (N x N) ô:

o Trạng thái được liệt kê theo cả hàng và cột.

Bảng 2. 1. Biểu diễn FSM bằng dạng bảng.

 Hàng mô tả những trạng thái đầu và cột mô tả trạng thái kết thúc cho sự chuyển tiếp xác định.

 Nếu sự chuyển tiếp từ trạng thái X (hàng X) sang trạng thái (cột) được cho phép thì phần tử tương ứng (ở vị trí hàng X, cột) được đánh 13 dấu bằng chính input output của nó. Với những input/output không xác định thì được đánh dấu bởi ký tự „-‟.

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

Kiểm thử dựa trên mô hình được bắt đầu bằng việc xây dựng mô hình. Một mô hình của phần mềm là một mô tả về hoạt động của phần mềm đó. Có nhiều dạng mô hình, mỗi dạng được mô tả một khía cạnh khác nhau về hoạt động phần mềm như:

Start state End state S0 S1 S2 S0 Pin(p);[(p!=pin) &attempt<3]/ Display error; Pin(p);[(p!=pin) &attempt==3]/ Display error; Eject card; P==pin/Display menu; _

S1 Exit/ Eject card _ Withdraw(w)/ b=b-w;

Deposit(d)/ b=b+d; S2 _ Contiune transaction/ print (b), Display menu; _

luồng điều khiển, luồng dữ liệu được mô tả chương trình qua cấu trúc mã nguồn. Bên cạnh đó, bảng quyết định (decision table) và mô hình máy trạng thái hữu hạn (Finite state machine) được sử dụng để mô tả các hành vi của hệ thống đang được kiểm thử. Để xây dựng mô hình, các kiểm thử viên dựa vào định nghĩa các trừu tượng trạng thái hệ thống. Mô hình hóa hệ thống là trừu tượng hóa trạng thái dựa trên các đầu vào, các thông tin về cách sử dụng của mỗi đầu vào và hành vi gắn liền với hệ thống. Mô hình này được biểu diễn bằng máy hữu hạn trạng thái, otomat, biểu đồ trạng thái UML,…với mục đích là sinh ra các ca kiểm thử dựa vào mô hình được xây dựng cho hệ thống.

Quá trình kiểm thử dựa trên mô hình được bắt đầu bằng việc xác định yêu cầu của hệ thống từ đó xây dựng mô hình dựa vào các yêu cầu và chức năng của hệ thống. Việc xây dựng mô hình còn phải dựa trên các yếu tố dữ liệu đầu vào và đầu ra. Mô hình này được sử dụng để sinh đầu vào cho các ca kiểm thử. Bước kế tiếp, sẽ sinh ra giá trị đầu ra mong muốn ứng với mỗi bộ đầu vào. Khi kết thúc bước này, thì đã có các ca kiểm thử. Các kịch bản kiểm thử sẽ được thiết kế và thực thi nhằm phát hiện các lỗi/ khiếm khuyết của sản phẩm bằng cách so sánh đầu ra thực tế với đầu ra mong đợi tương ứng với ca kiểm thử. Từ kết quả kiểm thử trên mới đưa ra quyết định hành động tiếp theo như sửa đổi mô hình hoặc dừng kiểm thử của hệ thống.

Dưới đây là mô hình mô tả các bước thực hiện của quy trình kiểm thử dựa trên mô hình:

Hình 2.6. Quy trình kiểm thử dựa trên mô hình4.

 Sinh mô hình dựa trên các yêu cầu và chức năng của hệ thống.

 Sinh các ca kiểm thử (bộ đầu vào và giá trị đầu ra mong đợi cho mỗi ca kiểm thử).

 Chạy các kịch bản kiểm thử để phát hiện các lỗi hoặc khiếm khuyết của sản phẩm.

 So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến.

 Quyết định hành động tiếp theo (sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiểm thử, đánh giá chất lượng của phần mềm).

Để bàn về các vấn đề của bài toán kiểm thử từ mô hình hóa máy trạng thái hữu hạn được dễ dàng hơn, ta cần một ví dụ thực tế hơn. Đó là, mô hình hệ thống rút tiền tự động (ATM) sử dụng máy trạng thái hữu hạn. Ví dụ như: một khách hàng muốn thực hiện giao dịch với Ngân hàng thông qua máy ATM, việc đầu tiên khách hàng phải làm là đến địa điểm được đặt máy ATM. Sau đó khách hàng thực hiện các giao dịch với Ngân hàng thông qua máy ATM. Khi khách hàng muốn giao dịch với Ngân hàng qua máy ATM thì họ phải đưa thẻ đa năng được Ngân hàng phát (khi đã đăng ký với Ngân hàng) vào đầu đọc thẻ của máy ATM thì màn hình đầu tiên hiện ra yêu cầu khách hàng nhập mã PIN ứng với chiếc thẻ đa năng của khách hàng. Bao gồm một số trường hợp sau: Nếu mã PIN không hợp lệ thì sẽ có thông báo lỗi; Nếu khách hàng nhập sai mã PIN của mình quá 3 lần thì đầu đọc thẻ sẽ tự động nuốt thẻ đó. Ngược lại, khách hàng muốn lấy lại thẻ của mình cần phải đến trực tiếp Ngân hàng; Nếu mã PIN khách hàng nhập mã PIN vào là hợp lệ thì màn hình Giao dịch sẽ được hiện ra.

Khi màn hình Giao dịch được hiện ra khách hàng có thể chọn một trong các Giao dịch như sau:

+ Rút tiền.

+ Vấn tin số dư tài khoản. + In sao kê.

+ Chuyển khoản. + Đổi PIN.

+ Xem thông tin Ngân hàng.

Khi khách hàng lựa chọn Giao dịch nào thì màn hình tương ứng với Giao dịch đó sẽ được hiện ra.

Từ những cơ sở đó, việc xây dựng mô hình máy trạng thái hữu hạn dựa trên thử nghiệm đã được nghiên cứu ở trên. Việc xây dựng máy trạng thái hữu hạn được thử nghiệm dựa trên các sự kiện của mô hình được sử dụng nhờ các node trong đồ thị. Nếu trong hệ thống được mô hình hóa bằng cách sử dụng một node chọn dữ liệu và gắn liền với quá trình chuyển trạng thái sẽ là một cơ chế mạnh mẽ cho việc chọn kịch bản kiểm thử được mạch lạc và rõ ràng. Tuy nhiên, FSM có thể được sử dụng để mô tả các hành vi của sự kiện trong hệ thống như giao thức truyền thông hoặc người dùng đồ họa của hệ thống giao diện. Trong kiểm thử phần mềm, một yêu cầu quan trọng là phải đảm bảo tính đúng đắn và an toàn đối với các tính năng hoặc yêu cầu đối với những phần mềm kiểm thử.

Kiểm thử dựa trên mô hình là một phương pháp tiếp cận, kiểm thử được sinh ra ca kiểm từ các mô hình như: biểu đồ trạng thái, máy trạng thái hữu hạn,… có thể đạt được một cách dễ dàng bằng cách đảm bảo rằng, mỗi trường hợp kiểm thử sẽ tương ứng với một quy trình hoặc đường dẫn trong một mô hình được tạo ra. Một đường dẫn khả thi là đường dẫn có nguồn gốc từ node bắt đầu và kết thúc trong một trạng thái

Một phần của tài liệu (LUẬN văn THẠC sĩ) mô hình hóa và kiểm thử máy rút tiền ATM bằng kỹ thuật sinh ca kiểm thử từ máy trạng thái hữu hạn (FSM FINITE state machines testing) (Trang 35)

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

(88 trang)