Mơ hình hoạt động của giải pháp AgileUATM đề xuất

Một phần của tài liệu NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG (Trang 80 - 83)

Ghi chú: các ví dụ và dữ liệu được sử dụng sau đây là các yêu cầu, nội dung, dữ liệu từ dự án ACMapp, hồ sơ phân tích thiết kế hồn tồn bằng tiếng Anh nên NCS sử dụng nguyên gốc ngôn

Các thành phần trong giải pháp AgileUATM:

(1) User story (US): yêu cầu của sản phẩm với bối cảnh của người dùng được

viết bởi khách hàng hoặc bởi chủ sở hữu sản phẩm (Product owner-PO). Nếu có sự hợp tác giữa nhóm phát triển và khách hàng sẽ có sự hiểu biết tốt hơn về sản phẩm. Bảng 3.1 mơ tả ví dụ mẫu về một US theo cú pháp đã trình bày trong mục 3.2.1.

Bảng 3.1. Ví dụ mẫu về mơ tả một user story

USER I WANT TO So that I CAN <achieve some

STORY AS A <type of user> <perform some goals>

ID tasks>

Asaconference I want to be able so that I can register

1 attendee, to register quickly and cut down on

online, paperwork

(2) Acceptance criteria (AC): Trong môi trường phát triển Agile, AC là một tập

hợp các câu lệnh, mỗi câu lệnh có tun bố thành cơng / thất bại được chỉ định trong cả các yêu cầu chức năng và phi chức năng và được áp dụng. AC được cung cấp để xác định ranh giới cho một câu chuyện hoặc tính năng người dùng và được nhà phát triển sử dụng để kiểm thử. Vì vậy, từ yêu cầu được xác định tại bước (1), PO và kỹ sư kiểm thử xác định các điều kiện chấp nhận cho từng câu chuyện của người dùng

để có cơ sở cho trường hợp thử nghiệm trong các bước tiếp theo. Tiêu chí chấp nhận AC cũng giúp nhóm phát triển xác định tầm quan trọng của US một cách nhanh chóng vì họ biết cách US được kiểm tra, hiểu nỗ lực cần thiết để triển khai nó. Ví dụ về đặc tả AC được trình bày trong Bảng 3.2.

Bảng 3.2. Ví dụ về đặc tả tiêu chuẩn chấp nhận cho tính năng Register

Acceptance INPUT PROCESS OUTPUT

Criteria ID

Valid User- Pre-condition: fieldname.length>0; name, First- Condition: Username.length >=4 and

AC1 name, Last- Username.length ¡=16 and not user- Register name, Email, name.contains (!%$#@ˆ˜?/*)

successfully Password, Email is valid format.

Institution, Password.length =8 characters and Detail-Info

Password.contains(!,@,#,$,%,ˆ,˜,*)

(Username.length>0 and

AC2 Invalid Username.length <= 4) or Register Username Username.length >=16 or failed

ˆ Username.contains(!%$#@ ?/()*+-=)

(3) Đặc tả yêu cầu kiểm thử bằng ngôn ngữ myDSL: là một ngôn ngữ đặc tả

chuyên biệt cho một miền ứng dụng cụ thể. Dựa trên xText, tác giả luận án định nghĩa cú pháp, ngữ nghĩa và quy tắc cho ngôn ngữ đặc tả hình thức được gọi là myDSL. Trong cú pháp này, các kỹ sư kiểm thử dựa vào AC được mô tả trong bước (2), xác định lại các điều kiện này thành dạng myDSL. Các kỹ sư kiểm thử có thể sử dụng bất kỳ trình soạn thảo nào như Notepad, Wordpad hoặc có thể sử dụng tính năng chỉnh sửa mà tác giả luận án đã phát triển để biên dịch và kiểm tra cú pháp đặc tả myDSL. Hình 3.2 là cú pháp được xác định để xây dựng ngôn ngữ đặc tả myDSL và Hình 3.3 là một ví dụ AC được chỉ định bởi trình soạn thảo giải pháp được đề xuất (từ AC đến myDSL). Bảng 3.3 dưới đây là mô tả cú pháp của myDSL.

(1) ================ myDSLsyntax ===================

(2) grammar org.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.common.Terminals

(3) generate domainmodel "http://www.xtext.org/example/domainmodel/Domainmodel"

(4) (5) Model:

(6) myDSL+=myDSL*;

(7) myDSL: (8)

(9) Enum | Define | Precondition | Postcondition | Testcase | Function | Run | Example | Limit; (10) (11)terminal DIGIT: (12) (13) '-'?('0'..'9')* (14) ; (15)terminal REAL: (16) DIGIT'.'DIGIT (17) ; (18) terminal STRING : (19) (20) '"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') | !('\\'|'"') )* '"'; (21) (22) // "'" ( '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') | !('\\'|"'") )* "'"; (23) ConditionOperation: '||' | 'and'; (24) MathOperation: '+' | '-' | '*' | '/' | '^' | '%'; (25) CompareOperation: '>' | '<' | '=' | '>=' | '<='; (26) Variable: MyID | DIGIT | REAL; (27)

(28) MathFormula: '('? Variable ( MathOperation Variable)* ')'?;

(29) CompareFormula: MathFormula CompareOperation MathFormula | MathFormula CompareOperation STRING; (30)

(31) Method: '.'('onlyDigit' | 'onlyLetter' | 'length' | 'contain')('(' (STRING)* ')')?; (32)

(33) MyID: (ID | ('!')ID) (Method)*; (34)

(35) TestcaseElement: CompareFormula | MathFormula; (36)

(37) //enum

(38) Enum: 'enum' (ID | 'Int' | 'Real' | 'Bool' | 'String') '{' EnumOptions '}'; (39) EnumOptions: (ID)*;

(40) //define

(41) Define: 'define' name=ID '{' (42)

(43) '('?(CompareFormula | MyID)')'? (ConditionOperation '(‘? (CompareFormula | MyID)')'?)* (44) '}'

(46) //precondition (47) Precondition: 'precondition' '{' (49) '}' (50) ; (51) //postcondition (52) Postcondition: 'postcondition' '{' (54) '}' (55) ; (56) //example (57) Example: 'example' '{' (59) '}'; (60) //limit

(61) Limit: 'limit' DIGIT; (62)

(63) TestCondition: STRING ('('? TestcaseElement ')'? '('? (ConditionOperation '('? TestcaseElement')'?) * ')'?)? (64) ; (65) //test case (66) Testcase: 'testcase' '{' (67) (TestCondition)* (68) '}' (69) ;

(70) Datatype: 'Int' | 'Real' | 'Bool' | 'String';

(71) Function: 'function' name=ID '(' (Datatype name=ID (',' Datatype name=ID) *) * ')'; (72) Run: 'run';

================ myDSLsyntax ===================

Một phần của tài liệu NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG (Trang 80 - 83)

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

(143 trang)
w