2.Thiết kế kiến trúc phân tầng và quan hệ trong ontology
Ontology kiểm thử được thiết kế với nền tảng kế thừa từ mô hình ontology kiểm thử phần mềm đã có (đã trình bày ở mục 4 – chương 1). Ontology kế thừa 2 nhóm khái niệm từ mô hình đã có đó là khái niệm cơ bản (Basic_Concepts) và khái niệm kết hợp (Compound_Concepts). Người làm luận văn phát triển mới 2 nhóm khái niệm là: kỹ thuật kiểm thử (Technical_Concepts) và dữ liệu kiểm thử (Testing_Data_Concepts).
Sau đây sẽ giới thiệu kiến trúc phân tầng các khái niệm chính trong ontology.
2.1.Khái niệm tổng quát
Hình 25. Các khái niệm tổng quát
Basic_Concepts: bao gồm các khái niệm mô tả thành phần chính trong hoạt động kiểm thử phần mềm.
Testing_Data_Concepts: bao gồm các khái niệm về dữ liệu trong kiểm thử phần mềm.
Technical_Concepts: bao gồm các khái niệm về các kỹ thuật sinh testcase trong kiểm thử phần mềm.
62
2.2.Khái niệm cơ bản
Hình 26. Các khái niệm cơ bản
Các khái niệm này tham khảo từ mô hình ontology kiểm thử phần mềm đã trình bày ở mục 4 – chương 1.
2.3.Khái niệm về dữ liệu kiểm thử
Mục đích thực nghiệm của luận văn là xây dựng ontology kiểm thử phần mềm và sinh ca kiểm thử. Vì vậy người làm luận văn tập trung vào các khái niệm liên quan đến dữ liệu kiểm thử.
QA_Report_Data: dữ liệu liên quan đến tạo báo cáo chất lượng (khái niệm này được xây dựng với mục đích mở rộng khả năng sử dụng ontology ngoài phạm vi luận văn).
Test_Planning_Data: dữ liệu liên quan đến kế hoạch kiểm thử (khái niệm này được xây dựng với mục đích mở rộng khả năng sử dụng ontology ngoài phạm vi luận văn).
Test_Coverage_Data: dữ liệu liên quan đến độ bao phủ.
Test_Spec_Data: dữ liệu liên quan đến đặc tả ca kiểm thử.
Common_Data: dữ liệu liên quan đến các khái niệm phổ biến - HistoryData: khái niệm về lịch sử của dữ liệu.
63
- ArtefactType: khái niệm về kiểu của tài liệu liên quan đến phát triển phần mềm
- Input_Data: khái niệm về dữ liệu đầu vào (của ca kiểm thử). - Output_Data: khái niệm về dữ liệu đầu ra (của ca kiểm thử)
Extracting_Data: khái niệm liên quan đến dữ liệu trích xuất từ các tài liệu phát triển phần mềm
- Programming_Document_Data: khái niệm về dữ liệu trích xuất từ các tài liệu như yêu cầu chức năng, thiết kế vật lý, thiết kế logic.
Module_Data: khái niệm về module Function_Data: khái niệm về chức năng Flow_Data: khái niệm về luồng xử lý.
64
Vì mục đích của hệ thống là sinh ca kiểm thử nên ta tập trung vào việc xây dựng khái niệm dữ liệu đặc tả kiểm thử (Test_Spec_Data)
- PreCondition_Data: khái niệm về điều kiện tiền đề của ca kiểm thử. - TargetTesting_Data: khái niệm về mục đích ca kiểm thử.
- ExpectedResult_Data: khái niệm về kết quả mong đợi của ca kiểm thử.
Hình 28. Các khái niệm về thông tin đặc tả ca kiểm thử
2.4.Khái niệm về kỹ thuật kiểm thử
Trong kiểm thử phần mềm, kỹ thuật kiểm thử (Technical_Concepts) đóng vai trò quan trọng trong việc quyết định phương pháp tạo các ca kiểm thử.
Approach: khái niệm về cách tiếp cận để tạo ca kiểm thử
- Program_Approach: khái niệm về cách tiếp cận hướng tài liệu phát triển (thiết kế vật lý, thiết kế logic)
- Specifiaction_Approach: khái niệm về cách tiếp cận hướng tài liệu đặc tả
Technique: khái niệm về phương pháp tạo ca kiểm thử
- Struture: khái niệm về phương pháp tạo hướng cấu trúc (cấu trúc hệ thống, chức năng, module)
65
- Error_Based: khái niệm về phương pháp tạo hướng vào các ca lỗi (với các ca lỗi kiểu này thì người kiểm thử có khả năng kiểm soát và phán đoán trước nguyên nhân gây lỗi).
- Fault_Based: khái niệm về phương pháp tạo hướng vào các ca thất bại (với các ca lỗi kiểu này thì người kiểm thử khó có khả năng kiểm soát và phán đoán trước nguyên nhân gây lỗi).
66
2.5.Khái niệm tổng hợp
Khái niệm tổng hợp là khái niệm kế thừa từ mô hình ontology kiểm thử đã có. Ở đây tập trung vào khái niệm Task. Task là khái niệm về một công việc trong kiểm thử phần mềm. Một Task có thể:
- Bao gồm 1 Activity, có thể là tạo tetscase, tạo test report, …
- Có hoặc không có hoàn cảnh thực hiện cụ thể. Nếu là tạo testcase thì cần xác định hoàn cảnh là unit test hay integration test, …
- Có hoặc không có phương thức thực hiện cụ thể. - Bao gồm 1 hoặc nhiều dữ liệu kiểm thử.
Hình 30. Khái niệm tổng hợp
2.6.Một số quan hệ cụ thể trong ontology
Quan hệ giữa dữ liệu kiểm thử và tài liệu tham chiếu
Dữ liệu kiểm thử có tài liệu tham chiếu để trích xuất dữ liệu cụ thể. Tài liệu tham chiếu chính là một Artefact của hệ thống phần mềm, mỗi artefact có
67
phân loại (artefact type) , định dạng (format), dữ liệu lịch sử (history data) cụ thể.
Hình 31. Quan hệ giữa dữ liệu kiểm thử và tài liệu tham chiếu
Quan hệ giữa phương thức với kỹ thuật và cách tiếp cận tạo ca kiểm thử
Mỗi phương thức kiểm thử có một kỹ thuật và một cách tiếp cận kiểm thử.
68
Quan hệ giữa dữ liệu trích xuất và các thông tin liên quan của ca kiểm thử
Dữ liệu trích xuất từ tài liệu phát triển như module, function, flow. Một module có thể mô tả về nhiều chức năng (function), mỗi chức năng có thể bao gồm nhiều luồng xử lý (flow ) khác nhau. Mỗi luồng xử lý bao gồm các thông tin sau:
- PreCondition_Data: khái niệm về dữ liệu tiền đề của ca kiểm thử. - TargetTesting_Data: khái niệm về mục đích ca kiểm thử.
- ExpectedResult_Data: khái niệm về kết quả mong đợi của ca kiểm thử. - FlowType: chứa thông tin về trạng thái kết thúc của luồng xử lý, cho biết
xử lý kết thúc ở trạng thái bình thường (normal) hay là bất thường (abnormal).
69
Hình 33. Quan hệ giữa dữ liệu trích xuất với thông tin đặc tả ca kiểm thử
Quan hệ giữa một số thông tin lưu trữ cơ bản
- Thông tin history data bao gồm: creator (người tạo), update date (thời gian cập nhật), version (thông tin phiên bản)
70
Hình 34. Quan hệ giữa một số thông tin cơ bản
- Thông tin đầu vào (input data), thông tin đầu ra (output data), mục đích test (target testing data) đều phải có nội dung tóm tắt (summary content) nhằm mục đích mô tả nội dung test case sau này.
71
3.Xây dựng ontology trên Protege 3.1.Danh sách các lớp 3.1.Danh sách các lớp
3.1.1.Các lớp tổng quan
Hình 36. Các lớp tổng quan
STT Tên Lớp Mô tả
1 Basic_Concepts Các khái niệm cơ bản của kiểm thử phần mềm
2 Compound_Concepts Các khái niệm kết hợp
3 Technique_Concepts Các khái niệm về kỹ thuật trong kiểm thử phần mềm
72
3.1.2.Các lớp khái niệm cơ bản về kiểm thử
Hình 37. Các khái niệm cơ bản về kiểm thử
STT Lớp Mô tả
1 Activity Khái niệm về các hoạt động trong kiểm thử phần mềm
2 Artefact Khái niệm về các tài liệu trong kiểm thử phần mềm
3 Enviroment Khải niệm về môi trường kiểm thử 4 Method Khái niệm về phương thức kiểm thử 5 Tester Khái niệm về người kiểm thử
73
3.1.3.Các khái niệm về dữ liệu kiểm thử
74
Hình 39. Các khái niệm về dữ liệu
STT Lớp Mô tả
1 Extracting_Data Khái niệm về dữ liệu trích xuất từ các tài liệu liên quan đến công nghệ phần mềm
2 Programming_Document_Data Là lớp con của Extracting_Data: khái niệm về dữ liệu trích xuất từ các tài liệu phát triển phần mềm, ví dụ như tài liệu yêu cầu
75
chức năng, tài liệu thiết kế, ....
3 Module_Data Là lớp con của
Programming_Document_Data: khái niệm về một module trong hệ thống phần mềm
4 Function_Data Là lớp con của
Programming_Document_Data: khái niệm về chức năng trong một hệ thống phần mềm
5 Flow_Data Là lớp con của
Programming_Document_Data: khái niệm về luồng xử lý 6 Test_Spec_Data Khái niệm về thông tin đặc tả
một test case
7 Pre_Condition_Data Là lớp con của Test_Spec_Data: khái niệm về thông tiền đề của một testcase
8 Target_Testing_Data Là lớp con của Test_Spec_Data: khái niệm về mục đích thực hiện của một testcase
7 Expected_Result_Data Là lớp con của Test_Spec_Data: khái niệm về kết quả mong đợi của một testcase
8 CommonData Khái niệm về thông tin chung
trong kiểm thử phần mềm
9 ArtefactType Là lớp con của CommonData:
khái niệm về kiểu của tài liệu trích xuất thông tin
10 Format Là lớp con của CommonData:
khái niệm về định dạng của dữ liệu
11 HistoryData Là lớp con của CommonData:
khái niệm về nguồn gốc của dữ liệu (do ai tạo? tạo vào thời gian nào? ...)
12 InputData Là lớp con của CommonData:
khái niệm về dữ liệu đầu vào của testcase
13 OutputData Là lớp con của CommonData:
76
testcase
3.1.4.Các khái niệm kết hợp
STT Lớp Mô tả
1 Task Khái niệm về một tác vụ cụ thể trong kiểm thử phần mềm. Ví dụ như: task tạo test spec, tạo test report, ...
3.1.5.Các khái niệm về kỹ thuật trong kiểm thử phần mềm
Hình 40. Các khái niệm về kỹ thuật kiểm thử
STT Lớp Mô tả
1 Approach Khái niệm về phương pháp tiếp cận trong kiểm thử phần mềm
2 Program_Based Là lớp con của Approach: khái niệm về phương pháp kiểm thử dựa trên chương trình (source code, physical design) 3 Specification_Based Là lớp con của Approach: khái niệm về
77
phương pháp kiểm thử dựa trên đặc tả (requirement, logical design)
4 Technique Khái niệm về kỹ thuật kiểm thử cụ thể 5 Error_Based Là lớp con của Technique: khái niệm về kỹ
thuật kiểm thử dựa trên lỗi nằm trong dự đoán
6 Fault_Based Là lớp con của Technique: khái niệm về kỹ thuật kiểm thử dựa trên lỗi bất thường 7 Structural Là lớp con của Technique: khái niệm về kỹ
thuật kiểm thử dựa trên cấu trúc chương trình
3.2.Danh sách thuộc tính kiểu đối tượng
78
STT Thuộc tính Miền / Domain Phạm vi/Range Mô tả
1 hasApproach Method Approach
Một phương thức kiểm thử có một phương pháp tiếp cận thực hiện 2 hasArtefactTyp e Artefact ArtefactType
Mỗi loại tài liệu có một kiểu đặc trưng
3 hasContext Task Context
Một task có một ngữ cảnh
thực hiện
4 hasEvironment Task Evironment
Một task có một môi trường
thực hiện
5 hasFlow Function Flow Một function có thể có
nhiều luồng xử lý.
6 hasFormat Artefact Format Mỗi loại tài liệu có
một định dạng file
7 hasFunction Module Function Một module có thể có
nhiều function
8 hasHistory Artefact HistoryData Mỗi tài liệu có lịch sử
ghi chú 9 hasInputData Pre_Conditon
Data InputData
Một điều kiện tiền đề có thể bao gồm nhiều thông tin input
10 hasMethod Task Method
Một task có một phương pháp thực hiện
11 hasOutputData Expected_Res
ult_Data OutputData
Một kết quả mong đợi có thể bao gồm nhiều thông tin output 12 hasReferenceD
ocument Testing_Data Artefact
Dữ liệu kiểm thử có tài liệu tham chiếu cụ thể. 13 hasResult Target_Testing _Data Expected_Result _Data Một mục đích testcase có thể có nhiều kết quả mong đợi
79
một kỹ thuật thực hiện
15 includeActivity Task Activity Một task bao gồm một
hoạt động 16 includeTestDat
a Task Testing_Data
Một task bao gồm một hoặc nhiều dữ liệu kiểm thử.
17 isCalledBy Function Function
Một chức năng có thể được gọi bởi nhiều chức năng khác
18 callTo Function Function
Một chức năng có thể gọi tới nhiều chức năng khác
3.3.Danh sách thuộc tính kiểu nguyên thủy
Hình 42. Danh sách thuộc tính kiểu nguyên thuỷ
STT Thuộc tính Miền/Domain Phạm vi/Range Mô tả
1 hasCreator HistoryData String
Thông tin lịch sử bao gồm tên người tạo tài liệu
2 hasId
Task Module Function
80 Flow
3 hasLocation Artefact String Tài liệu có địa chỉ lưu trữ
cụ thể 4 hasName Method Task Module Function Flow
String Mỗi đối tượng có một tên xác định 5 hasSummary Content InputData OutputData Artefact TargetTestingD ata
String Mỗi đối tượng có nội dung tóm tắt cụ thể.
6 hasType Flow String
Mỗi luồng xử lý có một kiểu xác định, có thể là normal hoặc abnormal.
7 hasUpdateD
ate HistoryData String
Thông tin lịch sử có thời gian cập nhật
8 hasVersion HistoryData String Thông tin lịch sử có
thông tin phiên bản
4.Tạo thể hiện cho ontology
Phần này thực hiện tạo các thực thể cho ontology một cách thủ công. Người làm luận văn đã sử dụng thông tin từ một dự án thực tế để tạo thực thể. Trong phạm vi luận văn, người làm luận văn đã lựa chọn module [Quản lý báo cáo ngày] trong phần mềm [Hệ thống quản lý cho thuê tài sản] để minh họa. [Hệ thống quản lý cho thuê tài sản] là phần mềm quản lý thông tin liên quan đến các hoạt động cho thuê như vật tư thiết bị sản xuất, nhà ở, thiết bị đi lại,... Một hoạt động quan trọng của hệ thống đó là thực hiện các báo cáo ngày cho người quản lý hệ thống. Đó là nhiệm vụ của module [Quản lý báo cáo ngày]. Module này bao gồm 4 chức năng chính:
- Function 1: chức năng xem thông tin liên quan báo cáo ngày - Function 2: chức năng tìm kiếm thông tin liên quan
81 - Function 3: chức năng tạo báo cáo ngày
- Function 4: chức năng tạo chú thích, yêu cầu cho báo cáo ngày
Hình 43. Minh hoạ trên Protege – Một Module bao gồm nhiều Function
Mỗi chức năng (Function) sẽ bao gồm nhiều luồng xử lý (Flow). Ví dụ chức năng [Xem thông tin liên quan báo cáo ngày] bao gồm 4 luồng xử lý chính:
Flow 1: luồng kiểm tra thông tin nhập vào như ngày tháng, người tạo báo cáo,...
Flow 2: luồng lấy thông tin về lịch báo cáo ngày
82
Flow 4: luồng lấy thông tin khởi tạo báo cáo ngày.
Hình 44. Minh hoạ trên Protege – Một Function bao gồm nhiều Flow
Mỗi luồng xử lý (Flow) sẽ bao gồm các thông tin về điều kiện tiền để, mục đích xử lý, kết quả xử lý. Ví dụ với luồng [Kiểm tra thông tin nhập vào] sẽ bao gồm các thông tin sau:
Pre_Condition: điều kiện tiền đề là thông tin nhập vào không hợp lệ. - InputData: giá trị đầu vào cụ thể là trống.
Target_TestingData: mục tiêu xử lý.
- SummaryContent: có nội dung xử lý là đưa ra cảnh báo.
Expected_Result: kết quả mong đợi của xử lý.
- OutputData: giá trị đầu ra là đưa ra thông điệp cảnh báo về nội dung nhập vào là không hợp lệ.
83
84
Dưới đây là hình minh hoạ tổng quát quan hệ giữa các thực thể trong ontology
Task DailyReport hasName TS0001 UnitTest Test spec Generation Testing Data Artefact Method hasID hasContext hasActivity hasMethod includeTestData hasReferenceDocument hasFunction Module_Data Fucntion1 Daily Report Management U0001 hasName hasID hasFunction Fucntion2 Search Information U0002 hasName hasID Flow1 hasFlow Flow2 hasFlow AbNormal hasType Normal hasType hasInputData InValidUser : ID = !!!xxxx Pre Condition Data include Target Testing Data include Stop hasSummaryContent hasOutputData Not OK Expected Result Data include isConditionOf hasResult hasInputData ValidUser: ID = CB110209 Pre Condition Data include Target Testing Data include Go to Confirm Next Step is hasOutputData OK Expected Result Data include isConditionOf hasResult callTo isCalledBy Flow1 hasFlow Flow2 hasType include Throw Message Exception to Screen Target Testing Data Expected Result Data is include Error Message include hasOutputData isConditionOf hasResult hasFlow Pre Condition Data Normal hasType include InputData hasInputData Target Testing Data include User Information include Display User Information is Expected Result Data hasOutputData InValidUser : ID = !!!xxxx is OutputData is
is : tương đương với hasSummaryContent
Vì giới hạn hình vẽ nên sẽ lược bỏ quan hệ giữa PreConditionData và InputData, ExpectedResultData và OutputData. Chỉ minh hoạ ở Function2 – Flow2
85