1. Trang chủ
  2. » Thể loại khác

Kiểm chứng giao diện phần mềm bằng phương pháp mô hình hóa Event - B

66 17 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 66
Dung lượng 1,97 MB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TRƢỜNG KIỂM CHỨNG GIAO DIỆN PHẦN MỀM BẰNG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT – B LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI, 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TRƢỜNG KIỂM CHỨNG GIAO DIỆN PHẦN MỀM BẰNG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT – B Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60.48.01.03 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS TRƢƠNG NINH THUẬN HÀ NỘI, 2016 LỜI CAM ĐOAN Tôi xin cam đoan tồn nội dung luận văn tơi tìm hiểu, nghiên cứu, tham khảo tổng hợp từ nguồn tài liệu khác làm theo hướng dẫn người hướng dẫn khoa học Các nguồn tài liệu tham khảo, tổng hợp có nguồn gốc rõ ràng trích dẫn theo quy định Tơi xin chịu hoàn toàn trách nhiệm lời cam đoan Nếu có điều sai trái, tơi xin chịu hình thức kỷ luật theo quy định Hà Nội, tháng 06 năm 2016 Ngƣời cam đoan Nguyễn Xuân Trường LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành đến thầy, cô khoa Công nghệ Thông Tin – Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức, kinh nghiệm quý báu suốt thời gian học tập trường Em xin gửi lời cảm ơn sâu sắc tới thầy PGS.TS Trương Ninh Thuận – Phó chủ nhiệm khoa cơng nghệ thông tin – Trường Đại học Công nghệ – ĐHQGHN tận tình bảo, hướng dẫn, định hướng cho em để em hoàn thành luận văn tốt nghiệp Cuối em xin cảm ơn gia đình, bạn bè, đồng nghiệp động viên ủng hộ tạo điều kiện tốt suốt trình học tập hoàn thành luận văn Với việc tìm hiểu nghiên cứu lĩnh vực, cơng cụ tương đối mẻ với kiến thức nhiều hạn chế, nên khơng tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp quý báu thầy cô bạn để luận văn hoàn thiện Hà Nội, tháng 06 năm 2016 Học viên Nguyễn Xuân Trường MỤC LỤC MỤC LỤC DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ Chƣơng GIỚI THIỆU 1.1 Sự cần thiết đề tài 1.2 Nội dung nghiên cứu 1.3 Đóng góp đề tài 1.4 Cấu trúc luận văn Chƣơng TỔNG QUAN VỀ KIỂM CHỨNG GIAO DIỆN PHẦN MỀM VÀ PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT-B 11 2.1 Giao diện người dùng 11 2.2 Các phương pháp kiểm chứng giao diện 12 2.2.1 Phương pháp tĩnh 14 2.2.2 Phương pháp động 14 2.3 Tổng quan Event-B 16 2.3.1 Context 17 2.3.2 Machine 18 2.3.3 Ký hiệu toán học Event-B 21 2.3.4 Tinh chỉnh 22 2.3.5 Mệnh đề chứng minh 23 2.3.6 Công cụ Rodin 24 Chƣơng KIỂM CHỨNG GIAO DIỆN PHẦN MỀM BẰNG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT-B 27 3.1 Phương pháp chung 27 3.2 Phương pháp chi tiết 28 3.3 Mơ hình hóa giao diện phần mềm 31 3.4 Mệnh đề chứng minh 32 Chƣơng ÁP DỤNG PHƢƠNG PHÁP KIỂM CHỨNG GIAO DIỆN ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG VỚI EVENT-B 34 4.1 Tổng quan ứng dụng điện thoại di động 34 4.1.1 Các thành phần ứng dụng Android 35 4.1.2 Cơ chế quản lý Activity 35 4.2 Ứng dụng Note 38 4.2.1 Giới thiệu chung 38 4.2.2 Ứng dụng Note 38 4.3 Mơ hình hóa kiểm chứng giao diện ứng dụng Note 44 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 56 Kết luận 56 Hướng phát triển 57 PHỤ LỤC 58 A Đặc tả context Note_C ứng dụng Note 58 B Đặc tả machine Note_M ứng dụng Note 58 TÀI LIỆU THAM KHẢO 62 DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT IDE Integrated Development Environment GUI Graphical User Interface POS Proof Obligations INV Invariant DLF Deadlock Freeness VAR Variant WD well-definedness DANH MỤC CÁC BẢNG Bảng 2.1 Các phép toán logic 21 Bảng 2.2 Luật chứng minh INV với kiện evt 24 Bảng 3.1 Chuyển đổi từ GUI tới Event-B 32 Bảng 4.1 Bảng CSDL ghi Note 38 Bảng 4.2 Mô tả cửa sổ giao diện MainActivity 39 Bảng 4.3 Mô tả sơ đối tượng cửa sổ giao diện CreateActivity 40 Bảng 4.4 Mô tả sơ đối tượng cửa sổ giao diện EditActivity 41 Bảng 4.5 Mô tả sơ đối tượng cửa sổ giao diện ViewActivity 43 DANH MỤC CÁC HÌNH VẼ Hình 2.1 Giao diện đồ họa người dùng 11 Hình 2.2 Giao diện dịng lệnh 12 Hình 2.3 Cấu trúc mối quan hệ thành phần mơ hình EventB 17 Hình 2.4 Cấu trúc context 18 Hình 2.5 Ví dụ context Event-B 18 Hình 2.6 Cấu trúc machine Event-B 20 Hình 2.7 Cấu trúc Event Event-B 20 Hình 2.8 Ví dụ machine Event-B 20 Hình 2.9 Ví dụ Event Event-B 21 Hình 2.10 Ví dụ mối quan hệ Refinement Event-B 22 Hình 2.11 Sơ đồ định nghĩa kiện 23 Hình 2.12 Định nghĩa kiện evt 24 Hình 2.13 Giao diện đồ họa công cụ Rodin 25 Hình 2.14 Symbols View 36 Hình 2.15 Event-B Explorer 36 Hình 2.16 Menu bar 36 Hình 3.1 Quy trình kiểm chứng tổng quát 27 Hình 3.2 Quy trình kiểm chứng chi tiết 30 Hình 4.1 Cơ chế Back Stack 36 Hình 4.2 Activity State 37 Hình 4.3 MainActivity.XML 40 Hình 4.4 CreateActivit.XML 41 Hình 4.5 EditActivit.XML 42 Hình 4.6 ViewActivity.XML 43 Hình 4.7 Quy trình xây dựng Activity Diagram 44 Hình 4.8 Sơ đồ Activity Diagram 45 Hình 4.9 Q trình mơ hình hóa từ đặc tả vào Event-B 46 Hình 4.10 Context Note_C 47 Hình 4.11 Một phần machine Note_M 49 Hình 4.12 Event ứng dụng 50 Hình 4.13 Event chọn chức Create 50 Hình 4.14 Event chọn chức Edit 50 Hình 4.15 Event chọn chức View 51 Hình 4.16 Event chọn chức Delete 51 Hình 4.17 Các Event đối tượng cửa sổ 51 Hình 4.18 Cửa sổ sinh kiểm chứng tự động 53 Hình 4.19 Bảng kết Statistics 53 Hình 4.20 Thơng báo mệnh đề chưa chứng minh tự động 54 Hình 4.21 Cửa sổ Goal 54 Hình 4.22 Cửa sổ Statistics trường hợp lỗi 55 Hình 4.23 Cửa sổ Statistics trường hợp lỗi 55 48  (main_activity=active)  (Create_activity=stop)  (Edit_activity=stop)  ( View_activity=stop)  (main_activity=killed) (Create_activity= killed)  (Edit_activity= killed)  ( View_activity= killed)  (Create_activity=active)  (main_activity=stop)  (Edit_activity=stop)  ( View_activity=stop)  (Edit_activity=active)  (main_activity=stop)  (Create_activity=stop)  ( View_activity=stop)  (View_activity=active)  (main_activity=stop)  (Create_activity=stop)  ( Edit_activity=stop)  … 49 MACHINE Note_M SEES Note_C VARIABLES Main_activity Edit_activity View_activity Create_activity Select INVARIANTS Main_activity ∈ S Edit_activity ∈ S View_activity ∈S Create_activity ∈ S Main_activity=active ∧ Create_activity=stop ∧ Edit_activity=stop ∧ View_activity=stop Main_activity=stop ∧ Create_activity=active ∧ Edit_activity=stop ∧ View_activity=stop Main_activity=stop ∧ Create_activity=stop ∧ Edit_activity=active ∧ View_activity=stop Main_activity=stop ∧ Create_activity=stop ∧ Edit_activity=stop ∧ View_activity=active Main_activity=start ⇒ (Create_activity=start) ∧ (Edit_activity=start) ∧ inv9 : (View_activity=start) ¬(Main_activity=start) ⇒¬(Create_activity=start) ∧ ¬(Edit_activity=start) ∧ inv10 : ¬(View_activity=start) inv11 : Select ∈ Menu inv1 inv2 inv3 inv4 inv5 inv6 inv7 inv8 : : : : : : : : EVENTS INITIALISATION ≙ STATUS ordinary BEGIN act1 : Main_activity ≔ start act2 : Edit_activity ≔ start act3 : View_activity ≔ start act4 : Create_activity ≔ start act5 : Select ≔ Null END Hình 4.11 Một phần machine Note_M 50  EVENT, ACTION  Event thoát ứng dụng thể Hình 4.12 BtnExit_Click ≙ STATUS ordinary WHEN grd1 :(BtnExit=TRUE)∧(Main_activity=active) THEN act1 :Main_activity≔killed act2 :Operator≔Exit act3 :Edit_activity≔killed act4 :Create_activity≔killed act5 :View_activity≔killed END Hình 4.12 Event ứng dụng  Event chọn chức gọi cửa sổ Create thể Hình 4.13 Select_Create ≙ STATUS ordinary WHEN grd1 : (Main_activity=active) THEN act1 : Create_activity≔active act2 : Main_activity≔stop act3 : Select≔Create END Hình 4.13 Event chọn chức Create  Event chọn chức gọi cửa sổ Edit thể Hình 4.14 Select_Edit ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : Edit_activity≔active act2 : Main_activity≔stop act3 : Select≔Edit END Hình 4.14 Event chọn chức Edit 51  Event chọn chức gọi cửa sổ View thể Hình 4.15 Select_View ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : View_activity≔active act2 : Main_activity≔stop act3 : Select≔View END Hình 4.15 Event chọn chức View  Event chọn chức xóa chuyển cửa sổ Main thể Hình 4.16 Select_Delete ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : Operator≔Del act2 : Main_activity≔active END Hình 4.16 Event chọn chức Delete  Các kiện trên đối tượng cửa sổ thể Hình 4.17 Edit_Saveclick ≙ STATUS ordinary WHEN grd1 : Edit_activity=active ∧ Select=Edit ∧ BtnSave=TRUE THEN act1 : Operator≔Save act2 : Main_activity≔active act3 : Select≔Null act4 : Edit_activity≔stop act5 : BtnSave≔FALSE END 52 Edit_Canelclick ≙ STATUS ordinary WHEN grd1 : Edit_activity=active ∧ Select=Edit∧BtnCancel=TRUE THEN act1 : Operator≔Cancel act2 : Main_activity≔active act3 : Select≔Null act4 : Edit_activity≔stop act5 : BtnCancel≔FALSE END Create_Saveclick ≙ STATUS ordinary WHEN grd1 : Create_activity=active ∧ Select=Create ∧BtnSave=TRUE THEN act1 : Operator≔Save act2 : Main_activity≔active act3 : Select≔Null act4 : Create_activity≔stop act5 : BtnSave≔FALSE END Create_Cancelclick ≙ STATUS ordinary WHEN grd1 : Create_activity=active ∧ Select=Create∧BtnCancel=TRUE THEN act1 : Operator≔Save act2 : Main_activity≔active act3 : Create_activity≔stop act4 : Select≔Null act5 : BtnCancel≔FALSE END View_backclick ≙ STATUS ordinary WHEN grd1 : View_activity=active ∧ Select=View∧BtnBack=TRUE THEN act1 : Main_activity≔active act2 : View_activity≔stop act3 : Select≔Null act4 : BtnBack≔FALSE END Hình 4.17 Các Event đối tượng cửa sổ 53 Thực soạn thảo công cụ Rodin, sinh kiểm chứng tự động mệnh đề cần chứng minh Hình 4.18 minh họa việc sinh tự động Toàn mã lệnh trình bày chi tiết phần Phụ lục luận văn Hình 4.18 Cửa sổ sinh kiểm chứng tự động Kết trình sinh kiểm chứng tự động thể qua bảng Statistics, Hình 4.19 cho thấy toàn ràng buộc chứng minh đảm bảo mục tiêu thiết kế thứ tự giao diện đặt Hình 4.19 Bảng kết Statistics 54  Không phải lúc đặc tả thiết kế điều đắn không lỗi, giả sử trường hợp ứng dụng Note đặc tả thiết kế chức chọn lệnh chỉnh sửa thực đơn kiện đặc tả tương ứng lại chuyển tới cửa sổ khác View mà lại Edit mong muốn thiết kế Hình 4.20 Trong trường hợp cơng cụ Rodin xuất biểu tượng dấu “?” trước vị trí khơng chứng minh thể Hình 4.21 Hình 4.22, điều tương đương với vị trí đặc tả chưa thỏa đáng có lỗi dựa vào để người phát triển tìm xem xét để có cập nhật phù hợp Select_Edit ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : View_activity≔active act2 : Main_activity≔stop act3 : Select≔Edit END Hình 4.20 Sự kiện chọn chức chỉnh sửa Hình 4.21 Thông báo mệnh đề chưa chứng minh tự động 55 Hình 4.22 Cửa sổ Goal Hình 4.23 Cửa sổ Statistics trường hợp lỗi 56 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Kết luận Khi hệ thống tin học hoá ngày vào đời sống người vấn đề kiểm chứng xây dựng phần mềm nói chung giao diện người dùng phần mềm nói riêng đảm bảo yếu tố chất lượng ngày trở nên quan trọng việc phát triển phần mềm Trên sở luận văn tập trung vào nghiên cứu phương pháp kiểm chứng giao diện ứng dụng phương pháp mơ hình hóa Event-B Giao diện đồ họa người dùng GUI giao diện phổ biến mà từ người dùng tương tác với hệ thống phần mềm Kiểm chứng giao diện người dùng thường công việc phức tạp không dễ dàng chất giao diện đồ họa không chứa đối tượng đồ họa mà cịn có nhiều kiện điều khiển có kiện khơng mong muốn mà người kiểm chứng lường trước Thông qua việc kiểm chứng người phát triển phát sai sót để có khắc phục kịp thời đảm bảo có phần mềm chất lượng có giao diện dễ dùng Hiện nhiều phương pháp kiểm chứng giao diện người phát triển, phương pháp có ưu nhược điểm riêng Với khả mơ hình hóa mạnh mẽ phương pháp mơ hình hóa Event-B dựa ký pháp tốn học kết hợp với cơng cụ mã nguồn mở Rodin hỗ trợ cho việc biên tập, tự động sinh kiểm chứng cách xác việc nghiên cứu, xây dựng phương pháp kiểm chứng mơ hình hóa giao diện ứng dụng phần mềm với Event-B hướng thiết thực Luận văn tập trung vào tìm hiểu đặc điểm giao diện phần mềm, chế, đặc trưng, phương pháp kiểm chứng có Tập trung nghiên cứu phương pháp mơ hình hóa Event-B cơng cụ kiểm chứng tự động Rodin, từ xây dựng quy trình tổng quát, xây dựng quy trình chi tiết, đưa mơ hình giao diện người dùng trừu tượng, xây dựng tập luật chuyển đổi từ mơ hình GUI trừu tượng sang 57 mơ hình Event-B tổng qt, thực mơ hình hóa kiểm chứng thứ tự xuất giao diện ứng dụng phần mềm Áp dụng vào kiểm chứng thứ tự xuất cửa sổ giao diện ứng dụng thiết bị di động Nghiên cứu bước đầu đưa phương pháp, mơ hình tổng qt chung cho việc kiểm chứng giao diện phần mềm dừng lại việc kiểm chứng, phát lỗi thứ tự xuất cửa sổ giao diện giúp người phát triển có điều chỉnh phù hợp, chưa thể kiểm chứng ràng buộc thành phần khác giao diện, công việc chuyển đổi từ đặc tả vào mơ hình từ mơ hình vào cơng cụ rodin cịn thủ cơng chưa thực cách tự động Hƣớng phát triển Từ quy trình, mơ hình, phương pháp tổng quát xây dựng áp dụng kiểm chứng tự động ứng dụng cụ thể với công cụ Rodin Với nghiên cứu đạt luận văn nghiên cứu phát triển để xây dựng thêm, bổ sung thêm vào mô hình quy trình để áp dụng kiểm chứng khơng thứ tự xuất cửa sổ giao diện mà cịn nhiều tiêu chí khác nhiều thành phần khác giao diện ứng dụng, áp dụng với nhiều loại giao diện ứng dụng không ứng dụng thiết bị di động mà giao diện Window Form giao diện Web 58 PHỤ LỤC A Đặc tả context Note_C ứng dụng Note CONTEXT Note_C SETS S Menu P CONSTANTS active stop pause killed Null start Create Edit View Delete None Exit Save Cancel Del AXIOMS axm1 : partition(S, {active}, {stop}, {pause}, {killed}, {start}) axm2 : partition(Menu,{Null},{Create}, {Edit}, {View}, {Delete}) axm3 : partition(P, {None}, {Exit}, {Save}, {Cancel}, {Del}) END B Đặc tả machine Note_M ứng dụng Note MACHINE Note_M SEES Note_C VARIABLES Main_activity Edit_activity View_activity Create_activity Select BtnExit BtnSave 59 BtnCancel Operator BtnBack INVARIANTS inv1 : Main_activity ∈ S inv2 : Edit_activity ∈ S inv3 : View_activity ∈S inv4 : Create_activity ∈ S inv5 : Main_activity=active⇒ Create_activity=stop ∧ Edit_activity=stop ∧ View_activity=stop inv6 : Create_activity=active⇒ Main_activity=stop ∧ Edit_activity=stop ∧ View_activity=stop inv7 : Edit_activity=active⇒ Main_activity=stop ∧ Create_activity=stop ∧ View_activity=stop inv8 : View_activity=active ⇒ Main_activity=stop ∧ Edit_activity=stop ∧ Create_activity=stop inv9 : Main_activity=start ⇒ (Create_activity=start) ∧ (Edit_activity=start) ∧ (View_activity=start) ¬(Main_activity=start) ⇒¬(Create_activity=start) ∧ ¬(Edit_activity=start) ∧ inv10 : ¬(View_activity=start) inv11 inv12 inv13 inv14 : : : : inv15 : Select ∈ Menu BtnExit ∈ BOOL BtnSave ∈ BOOL BtnCancel ∈ BOOL Main_activity=killed ⇒ (Create_activity=killed) ∧ (Edit_activity=killed) ∧ (View_activity=killed) Operator ∈ P BtnBack ∈ BOOL Select=Edit⇒Edit_activity=active Select=View⇒View_activity=active Select=Create⇒Create_activity=active inv16 : inv17 : inv18 : inv19 : inv20 : EVENTS INITIALISATION ≙ STATUS ordinary BEGIN act1 : Main_activity ≔ start act2 : Edit_activity ≔ start act3 : View_activity ≔ start act4 : Create_activity ≔ start act5 : Select ≔ Null act6 : BtnExit ≔ FALSE act7 : BtnSave ≔ FALSE act8 : BtnCancel ≔ FALSE act9 : Operator ≔ None act10 : BtnBack ≔ FALSE END BtnExit_Click ≙ STATUS ordinary WHEN grd1 : (BtnExit=TRUE)∧(Main_activity=active) THEN act1 : Main_activity≔killed act2 : Operator≔Exit act3 : Edit_activity≔killed act4 : Create_activity≔killed act5 : View_activity≔killed END 60 Select_Create ≙ STATUS ordinary WHEN grd1 : (Main_activity=active) THEN act1 : Create_activity≔active act2 : Main_activity≔stop act3 : Select≔Create END Select_Edit ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : Edit_activity≔active act2 : Main_activity≔stop act3 : Select≔Edit END Select_View ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : View_activity≔active act2 : Main_activity≔stop act3 : Select≔View END Select_Delete ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : Operator≔Del act2 : Main_activity≔active END Edit_Saveclick ≙ STATUS ordinary WHEN grd1 : Edit_activity=active ∧ Select=Edit ∧ BtnSave=TRUE THEN act1 : Operator≔Save act2 : Main_activity≔active act3 : Select≔Null act4 : Edit_activity≔stop act5 : BtnSave≔FALSE END 61 Edit_Canelclick ≙ STATUS ordinary WHEN grd1 : Edit_activity=active ∧ Select=Edit∧BtnCancel=TRUE THEN act1 : Operator≔Cancel act2 : Main_activity≔active act3 : Select≔Null act4 : Edit_activity≔stop act5 : BtnCancel≔FALSE END Create_Cancelclick ≙ STATUS ordinary WHEN grd1 : Create_activity=active ∧ Select=Create∧BtnCancel=TRUE THEN act1 : Operator≔Save act2 : Main_activity≔active act3 : Create_activity≔stop act4 : Select≔Null act5 : BtnCancel≔FALSE END View_backclick ≙ STATUS ordinary WHEN grd1 : View_activity=active ∧ Select=View∧BtnBack=TRUE THEN act1 : Main_activity≔active act2 : View_activity≔stop act3 : Select≔Null act4 : BtnBack≔FALSE END END 62 TÀI LIỆU THAM KHẢO [1] GUI Testing Techniques: A Survey Imran Ali Qureshi an AamerNadeem, International Journal of Future Computer and Communication, Vol 2, No 2, April 2013 [2] Cem Kaner, James Bach, Bret Pettichord, Lessons Learned in Software Testing A Context-Driven Approach, John Wiley & Sons, 2001 [3] [BEI90] Beizer, B., Software Testing Techniques, 2d ed., Van Nostrand Reinhold, 1990 [4] J.-R Abrial, Modeling in Event-B: System and Software Engi-neering Cambridge University Press, 2010 [5] A.F Memon, GUI testing pitfalls and process, Computer, University of Maryland, 2002 [6] D Jackson Software Abstractions: Logic, Language, and Analysis MIT Press, 2006 [7] Christophe M´etayer, Laurent Voisin, the Event-B Mathematical Language, 2007 [8] http://code.google.com/events/io/ [9] http://www.Event-B.org/ [10] http://www.android.com/ [11] http://o7planning.org/web/fe/default/vi/document/1283892/huong-danlap-trinh-android-voi-database-sqlite [12] http://android.vn/forums/

Ngày đăng: 23/09/2020, 22:16

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] GUI Testing Techniques: A Survey Imran Ali Qureshi an AamerNadeem, International Journal of Future Computer and Communication, Vol. 2, No. 2, April 2013 Khác
[2] Cem Kaner, James Bach, Bret Pettichord, Lessons Learned in Software Testing. A Context-Driven Approach, John Wiley & Sons, 2001 Khác
[3] [BEI90] Beizer, B., Software Testing Techniques, 2d ed., Van Nostrand Reinhold, 1990 Khác
[4] J.-R. Abrial, Modeling in Event-B: System and Software Engi-neering. Cambridge University Press, 2010 Khác
[5] A.F. Memon, GUI testing pitfalls and process, Computer, University of Maryland, 2002 Khác
[6] D. Jackson. Software Abstractions: Logic, Language, and Analysis. MIT Press, 2006 Khác
[7] Christophe M´etayer, Laurent Voisin, the Event-B Mathematical Language, 2007 Khác

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

TÀI LIỆU LIÊN QUAN

w