Báo cáo: Kiểm thử ứng dụng ios và android bằng calabash trong môi trường tích hợp liên tục với cruisecontrolrb

25 1K 5
Báo cáo: Kiểm  thử ứng dụng ios và android bằng calabash trong môi trường tích hợp liên tục với cruisecontrolrb

Đ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

Cần một môi trường thực tế nhất có thể: giả lập rất tốt, nhưng vẫn chưa đủ. Simulator hiện nay chưa thể giả lập một số thao tác như rotate – xoay màn hình, con quay hồi chuyển. Rất nhiều loại thiết bị các mẫu điện thoại máy tính bảng mới xuất hiện liên tục, theo đó các loại màn hình, độ phân giải, hệ điều hành, bộ vi xử lý cũng rất khác nhau. Các điều kiện hay thay đổi: thiết đặt, mạng, bộ nhớ, ... cũng có thể gây ra lỗi. Nhiều công ty lập trình tiến hành kiểm thử bằng tay: đó thực sự là 1 công việc nhàm chán, lặp đi lặp lại, đắt đỏ, tốn nhiều thời gian. Những vấn đề phát sinh từ sự khác biệt giữa các thiết bị: crash, lỗi đồ họa, lỗi tính toán lỗi UI, không hiển thị text, button, ...

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ---------------------------------------- BÁO CÁO TỔNG KẾT MÔN: CÁC VẤN ĐỀ HIỆN ĐẠI CỦA CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: KIỂM THỬ ỨNG DỤNG iOS VÀ ANDROID BẰNG CALABASH TRONG MÔI TRƯỜNG TÍCH HỢP LIÊN TỤC VỚI CRUISECONTROLRB Cán giám sát: TS. Võ Đình Hiếu 1. 2. 3. Dương Hữu Hiếu Nguyễn Đình Đại Nguyễn Văn Kháng Mục Lục Phân công công việc    Trình bày viết định nghĩa bước với Calabash console Ý tưởng cách thức viết test Cross-platform Viết kịch test cross-platform cho app VietGag I. Calabash 1. - - - Các vấn đề kiểm thử ứng dụng di động Cần môi trường thực tế có thể: giả lập tốt, chưa đủ. Simulator chưa thể giả lập số thao tác rotate – xoay hình, quay hồi chuyển. Rất nhiều loại thiết bị - mẫu điện thoại máy tính bảng xuất liên tục, theo loại hình, độ phân giải, hệ điều hành, vi xử lý khác nhau. Các điều kiện hay thay đổi: thiết đặt, mạng, nhớ, . gây lỗi. Nhiều công ty lập trình tiến hành kiểm thử tay: thực công việc nhàm chán, lặp lặp lại, đắt đỏ, tốn nhiều thời gian. Những vấn đề phát sinh từ khác biệt thiết bị: crash, lỗi đồ họa, lỗi tính toán lỗi UI, không hiển thị text, button, . Hình minh họa số lỗi thiết bị di động 2. a. - Calabash Giới thiệu Calabash Calabash công cụ kiểm thử ứng dụng di động tự động đa tảng. Calabash sử dụng giao diện nhất: Cucumber cho iOS android - giúp giảm thời gian học, nhanh chóng ứng dụng. Có thể tái sử dụng feature Cucumber để chạy đa tảng – từ giảm thời gian chi phí kiểm thử. Thích hợp với quy trình BDD – Behavior-Driven Development, quy trình sản xuất phần mềm kết hợp kỹ thuật tổng quát nguyên lý test- - driven development với ý tưởng từ thiết kế domain-driver objectoriented analysis and design – phân tích thiết kế hướng đối tượng để cung cấp cho lập trình viên chuyên gia phân tích kinh doanh công cụ chia sẻ, tiến trình chia sẻ để phối hợp việc phát triển phần mềm, dựa vào lợi ích kinh doanh hiểu biết kỹ thuật): Những đặc tả kinh doanh hiểu được, chạy test. Vì calabash thích hợp để phát triển ứng dụng với mục đích kinh doanh. Chạy thiết bị vật lý giả lập – đáp ứng nhu cầu chạy thiết bị thật. Hỗ trợ ứng dụng di động lẫn ứng dụng lai, ứng dụng có nhúng webview. Miễn phí, mã nguồn mở - có cộng đồng phát triển hỗ trợ lớn. Một số hỗ trợ tùy chọn: đào tạo, tư vấn, cung cấp thiết bị test mây – bạn trả phí để thuê thiết bị test mây để test chức yêu cầu thiết bị thật. Các thiết bị gắn robot nhỏ để xoay thiết bị cần thiết. b. Kiến trúc Calabash Mô hình thiết kế - - - Calabash thiết kế theo mô hình client-server nên gồm có phần: • Client library viết ruby • Server framework viết objective-C Calabash client bao gồm thư viện calabash-android để kiểm thử cho ứng dụng android calabash-ios để kiểm thử cho ứng dụng iOS. Calabash server có calabash iOS Android Framework tương ứng. Calabash client Calabash server giao tiếp với jSON thông qua giao thức http. Calabash server nhận yêu cầu từ Calabash client thao tác với ứng dụng. Giao tiếp calabash cucumber - Công cụ cucumber thực thi kịch test theo bước file feature viết gherkin tạo kết test. Cụ thể bước kịch test file step definitions viết ruby. Calabash clients sử dụng để mô tả bước này. Calabash-ios Với iOS tạo đặc biệt Xcode liên kết với calabash framework. Server framework bắt đầu http server bên ứng dụng nghe yêu cầu từ client library. Các phương thức ruby API sử dụng để viết bước kiểm thử tạo http request tới server để làm việc tìm kiếm thành phần giao diện, thao tác chúng. Calabash-android - - Instrumentation Test Server: ứng dụng khác cài đặt thực thi thiết bị. Ứng dụng dựa ActivityInstrumentationTestCase2 từ android SDK. Nó tạo calabash framework. Chúng ta thao tác với thay thao tác trực tiếp với app. Lợi ích lớn kiến trúc bạn kiểm thử ứng dụng Android mà không cần thay đổi ứng dụng. c. Viết test với Calabash Tạo khung thư mục Cucumber - - Đầu tiên bạn vào thư mục chứa app chạy lệnh • Calabash-android gen app android • Calabash-ios gen app iOS Calabash tạo khung thư mục sau: • Trong thư mục Support file mô tả tiến trình cài đặt kiểm thử ứng dụng, bạn thay đổi hành động trước sau kiểm thử ví dụ sau kịch test cài đặt lại ứng dụng, khởi động lại ứng dụng. • Các file có phần mở rộng feature phía thư mục feature: file mô tả kịch test viết gherkin. • Thư mục Step_difinitions chứa file mô tả chi tiết bước kiểm thử file feature, viết ruby API calabash. Gherkin - - - - Là ngôn ngữ hướng dòng - Line-oriented language: sử dụng khoảng thụt đầu dòng để xác định cấu trúc, kết thúc dòng để chấm dứt báo cáo. Hầu hết dòng bắt đầu từ khóa. Là Business Readable, Domain Specific Language: tức người kinh doanh, không thiết phải lập trình viên, hiểu được, mô tả lĩnh vực chuyên ngành. Nó cho phép mô tả hành vi phần mềm mà không cần biết chi tiết hành vi thực hiện. Vì đặc điểm nên gherkin thích hợp để viết test cho ứng dụng theo quy trình BDD – behavior driven development. Gherkin phục vụ mục đích: • Là tài liệu hướng dẫn: file feature tài liệu dẫn lập trình viên bước để test ứng dụng, rõ ràng chi tiết. Nhiệm vụ cảu lập trình viên định nghĩa bước ra. • Kiểm thử tự động: calabash kiểm thử phần mềm theo bước kịch test file feature. Các từ khóa Gherkin viết nhiều ngôn ngữ: 37 ngôn ngữ bao gồm tiếng việt. Cách viết feature - Dòng khóa Feature, theo sau dòng mô tả feature Mỗi feature chứa hay nhiều scenario: khóa Scenario, sau từ khóa Scenario dòng mô tả kịch test Ngoài kịch bản, feature chứa: Background: thêm số bối cảnh vào kịch bản, chạy trước kịch • Scenario Outline Example: tạo kịch mẫu để chạy với nhiều input khác • - - - Mỗi scenario chứa nhiều step bắt đầu từ khóa Given, When, Then, But And. Cucumber phân biệt từ khóa này. Nhưng nên sử dụng chúng cách. o Given: đưa hệ thống vào trạng thái trước người sử dụng bắt đầu tương tác với hệ thống (trong bước When). Như hình trạng thái lon caffee máy, nhét máy 1$. o When: mô tả hành động người dùng thực touch button, scroll, .Trên hình thực hành động ấn vào nút chọn caffee. Then: quan sát kết - quan sát liên quan đến giá trị kinh doanh, lợi ích mô tả tính năng, giao diện người dùng, tin nhắn, ẩn giá trị kinh doanh. Như ví dụ kết mong muốn nên phục vụ lon caffee. But And: dùng để nối step thay cho việc lặp lại từ khóa – làm cho step đọc trôi chảy hơn. Định nghĩa bước kịch test - Mỗi bước (step) tương ứng với định nghĩa bước (step definition). Mỗi định nghĩa bước bao gồm từ khóa, chuỗi biểu thức quy, khối lệnh. Các câu lệnh định nghĩa làm ba việc: o Gesture: thực hành động người dùng chạm, kéo thả, cuộn, xoay hình, . Assertions: xác nhận thành phần text, button, . có tồn có xác hay không. o Screenshots: chụp ảnh hình – cần thiết kiểm thử thành phần đồ họa bắt lỗi Assertions. Sử dụng API tương ứng với tảng iOS Android để viết o - Viết test cho kiểm thử đa tảng Tại phải viết test kiểm thử đa tảng? - Các công ty thường phát triển ứng dụng họ nhiều tảng khác nhau: điện thoại, máy tính bảng Android, iPhone, iPad, Web, . Trong đa số trường hợp, yêu cầu kinh doanh thông số kỹ thuật giống nhau, tương tự tảng. Nếu tảng viết test riêng chúng có điểm chung lãng phí thời gian tiền bạc. Nhưng khác tảng, nên việc viết test chạy tất tảng không thể, cố gắng tái sử dụng nhiều có thể, để chi phí viết test đa tảng thấp nhất. Ý tưởng viết test đa tảng Kiểm thử tự động lập trình, cách thức làm tốt lập trình áp dụng cho việc kiểm thử tự động. Ruby có tính hướng đối tượng, phần lớn kiểm thử Calabash nên theo thiết kế hướng đối tượng tốt nguyên tắc trừu tượng hóa, tách mối liên quan, mô-đun hóa, tái sử dụng, . - - - Sử dụng mô hình Trang-Đối tượng Page-Object Pattern (POP): viết đoạn mã kiểm tra có cấu trúc tốt nhằm sử dụng lại đoạn code cho đa tảng tốt hơn. Page Object: trừu tượng hóa hình ứng dụng thành trang đối tượng. Trang đối tượng cung cấp phương pháp để truy vấn trang thái, liệu hình, phương thức tác động lên hình. Lợi ích: trừu tượng hóa tái sử dụng. Ví dụ ta có hình Talkscreen trừu tượng hoá thành trang đối tượng class sau: Ở ta có phương thức talks() trả nói chuyện diễn ra, phương thức details(talk) để theo dõi chi tiết chuyện bất kỳ. Dường giao diện lớp TalksScreen thích hợp cho tảng iOS Android. Điều nghĩ đoạn mã gọi, thường định nghĩa bước, độc lập với tảng, tái sử dụng qua tảng. Làm giúp bạn tái sử dụng hoàn toàn tính Cucumber cài đặt: chi tiết việc tương tác với hình thực thi trang đối tượng. Ý tưởng bạn cung cấp cài đặt trang đối tượng cho tảng bạn muốn cung cấp (iPhone, iPad, điện thoại Android, máy tính bảng Android, web di động, web cho máy bàn…). Cách viết test kiểm thử đa tảng Để viết test đa tảng với Calabash, ta thực bước sau: 1. Cho hình bạn muốn kiểm thử, chọn giao diện cho lớp trang- đối tượng (giống lớp TalksScreen trên). 2. Trong định nghĩa bước, sử dụng trang đối tượng phương thức chúng (không trực tiếp gọi hàm API Calabash iOS hay Calabash Android). 3. Với tảng có hỗ trợ, đặt lớp chứa thực thi phương thức trang-đối tượng. 4. Tạo hồ sơ Cucumber (config/cucumber.yml). Định nghĩa hồ sơ cho tảng (android, ios), chắn hồ sơ tải lớp trang-đối tượng tảng đó. Tổng kết kiến trúc kiểm thử đa tảng II. Cruisecontrolrb 1. Tích hợp liên tục (Continuous Integration). Tích hợp liên tục gì? Continuous Integration (CI), hay “tích hợp liên tục” Agile Practices, thiết kế ban đầu phần XP (eXtreme Programming). Nhưng với ưu điểm vượt trội CI áp dụng cách riêng biệt. Nhiều nhà phát triển sử dụng CI, không áp dụng toàn Practices XP. Tích hợp liên tục (Continuous Intergration hay CI) môi trường hỗ trợ phát triển phần mềm có chức giúp thành viên nhóm phát triển tích hợp công việc họ cách thường xuyên, liên tục. Mỗi điểm tích hợp kiểm tra qui trình build test tự động để đảm bảo việc thích hợp không gây lỗi cho sản phẩm phát sớm lỗi phát sinh trình tích hợp đó. Xem mã nguồn Xây dựng sản phẩm Công bố kết Chạy kiểm thử Phần mềm phát triển theo mô hình Agile gọi phần mềm tích hợp liên tục (Continuous Integration). Hệ thống tích hợp liên tục thành phần sống Agile team. Khi dùng phần phương pháp tiếp cận dựa kiến trúc, tích hợp liên tục (Continuous Integration - CI) phát triển theo hướng kiểm thử (Test-Driven Development - TDD) mở rộng phương pháp agile đủ để cung cấp chất lượng cao lẫn tính linh hoạt dự án. CI làm cho code bạn không bị lỗi (đương nhiên, lỗi hay không phụ thuộc vào … bạn), giúp bạn phát lỗi cách dễ dàng, nhanh chóng. Mục đích cuối CI đảm bảo cho việc project bạn triển khai vào lúc bạn muốn. Nguyên tắc : NEVER BREAK THE BUILD! Để đảm bảo quy tắc này, bạn cần giải hai vấn đề sau : - - Những chạy tốt máy bạn cần phải chạy tốt máy người khác. Lý kiểu “Nó chạy tốt máy mà” không chấp nhận ! Có thể bạn sơ ý add thiếu vài file vào Source Code Management mình, hay thay đổi vài config, cấu trúc database … mà không thông báo với người khác .v.v.v Chỉ code mà đảm bảo cho build thành công đực phép xuất nhánh (mainline). Để giải vấn đề này, người ta sử dụng server trung gian đứng thực build có yêu cầu tích hợp. Nó gọi CI Server. CI server có nhiệm vụ sau: - Quản lí kho lưu trữ mã nguồn Kiểm tra đưa tài nguyên từ kho lưu trữ mã nguồn vào quy trình tích hợp. Xây dựng mã nguồn chạy kiểm thử. Thông báo cho lập trình viên nhóm. Một số CI server thông dụng: CruiseControlrb, CruiseControl.NET, Jenkins, . Giải pháp thực giúp cho nhà phát triển phần mềm giảm bớt vấn đề phát sinh trình tích hợp cho phép công việc phát triển phần trở nên mềm nhanh chóng gắn kết hơn. CI bao hàm loạt trình gắn kết với như: tự động build, kiểm tra tiêu chuẩn mã, phân tích tĩnh, kiểm thử đơn vị, triển khai, kiểm thử tích hợp, . Các yêu cầu hệ thống tích hợp liên tục - Một Source Control Management: SVN, Mercurial, Git, Visual Source Safe… - Một hệ thống build tự động: Xcode, Ant, .NET, NAnt, . - Khả tự kiểm thử build tự động đó: JUnit,Cucumber , CppUnit … - Code phải chuyển lên nhánh (mainline) hàng ngày. - Một CI server gắn kết công việc trên: Jenkins, Bamboo, Cruisecontrol, Hudson, . - Khả kiểm thử sản phẩm môi trường đồng nhất. - Khả báo cáo tình trạng build. - Khả triển khai tự động build. - Mọi người nhìn thấy xảy (thay đổi, lỗi…)để xem xét giải quyết. Ưu điểm - Giảm thiểu rủi ro lỗi phát sớm. - Giảm thiểu lặp lại cho trình - Tạo phần mềm có giá trị sử dụng sớm sẳn sàng triển khai lúc nơi. - Cung cấp nhìn xuyên suốt tổng quan cụ thể cho giai đoạn, từ dễ dàng lập kế hoạch phát triển - Nâng cao kỹ đội ngũ nhân viên phát triển phần mềm. - Cải thiện chất lượng phần mềm. Nhược điểm - Cần thời gian thiết lập hệ thống ban đầu làm quen với CI server - Đòi hỏi quản lý dự án, người lập trình, người kiểm định phải am hiểu mô hình phát triển phần mềm Agile, hệ thống tích hợp CI, cách sử dụng công cụ hỗ trợ cho Agile CI. - Chi phí thiết bị phần cứng (các server cho CI). Lợi ích sửa dụng tích hợp liên tục Từ góc độ kỹ thuật, tích hợp liên tục (Continuous Integration - CI) giúp nhóm làm việc hiệu hơn. Các nhóm có chức liên quan nhau, tạo phần cứng phần mềm làm việc nhau. Họ làm việc nơi khác nhau, công việc tích hợp không ngừng đảm bảo bạn không lệch thiết kế. Mọi người làm việc nhóm lớn, thành phần khác hệ thống phức tạp làm việc đảm bảo hơn. Nó giải nhiều vấn đề sớm mà nhóm phát triển theo phương pháp agile trải qua không tích hợp liên tục. Việc phối hợp phương pháp tích hợp liên tục với phương pháp phát triển theo hướng kiểm thử bổ trợ cho phương pháp agile, cho phép phương pháp agile làm việc hiệu hơn. Từ góc độ kinh doanh, phương pháp tích hợp liên tục cung cấp kết nghiệp vụ tốt cách cho phép cho nhóm tham gia. Nghĩa là, họ đưa sản phẩm thị trường nhanh hơn, cách tìm vấn đề chúng nhỏ, chờ đợi chúng trở nên lớn khó sửa chữa. Họ đáp ứng tốt yêu cầu đưa thêm tính vào sản phẩm lúc phát triển. Điều tạo sản phẩm tốt cho khách hàng, hứa hẹn thực sự linh hoạt. 2. CruiseControlrb Tổng quan Cruisecontrolrb CruiseControlrb công cụ tích hợp liên tục miễn phí, mã nguồn mở viết ruby. Cung cấp môi trường tích hợp liên tục cho ngôn ngữ lập trình tảng nào. Dễ dàng cài đặt, cấu hình sử dụng. - Có thể làm việc với Java Ant, .NET, NAnt hay công cụ xây dựng build dòng lệnh trả giá trị khác xây dựng lỗi. - Có ứng dụng web dashboard: thuận tiện, hữu ích, trực quan. - Mở rộng thông qua builder plugin, tùy chỉnh tiến trình xây dựng tùy chỉnh cấu hình khác. - Khi trình xây dựng bị gián đoạn sửa, thông báo cho người dung qua email, tin nhắn. - Hỗ trợ công cụ source control management phổ biến: Subversion, Git, Mercurial, Bazaar. - Dễ dàng cài đặt, cấu hình đơn giản dễ sử dụng. - Đa tảng Là CI Server, Cruisecontrolrb làm công việc sau: - Quản lí kho lưu trữ mã nguồn - Kiểm tra đưa tài nguyên từ kho lưu trữ mã nguồn vào quy trình tích hợp - Xây dựng mã nguồn chạy kiểm thử - Thông báo cho lập trình viên nhóm CruiseControlrb bao gồm phần: builder dashboard Builder tiến trình làm nhiệm vụ thăm dò kho quản lý mã nguồn bạn (repository) khoảng thời gian định trước để xem có sửa đổi không. Nếu có cập nhật công việc lên repository, builder sẽ: - Phát - Cập nhật project - Chạy chương trình build project - Thông báo cho người liên quan kết build Dashboard ứng dụng web cho phép bạn theo dõi tình trạng project, kết build test, khắc phục cố. III. Cài đặt, cấu hình sử dụng 1. Calabash Các phần mềm cần thiết - Git AndroidSDK với app Android Xcode với app iOS Ant Ruby Calabash CruiseControlrb 1. Git Cách cài đặt git có https://help.github.com/articles/set-up-git Chú ý nhớ add SSH key cài đặt để sử dụng git cmd. 2. ADT Bundle/Xcode Android SDK http://developer.android.com/sdk/index.html Chú ý cần phải add System Variable cho ANDROID_HOME, thêm vào Path đường dẫn đến /sdk/platform-tools sdk/tools Xcode Cài đặt từ app store máy Mac 3. Ant Cách cài đặt Ant có http://ant.apache.org/manual/index.html Sử dụng lệnh android update project --path . --target để tạo file build.xml thư mục project để build ant Sử dụng lệnh ant debug để build debug version 4. Ruby Đối với Window, sử dụng http://rubyinstaller.org/ Ở sử dụng 1.9.3 Đối với Mac vào https://www.ruby-lang.org/en/downloads/ Và làm theo hướng dẫn 5. Calabash Cài đặt Calabash-android: https://github.com/calabash/calabashandroid/blob/master/documentation/installation.md Để sử dụng calabash với project android, vào thư mục project gõ lệnh: calabash-android gen Để test app Calabash, thư mục project gõ lệnh Calabash-android run file.apk Cài đặt Calabash-iOS cd vào thư mục cuả project gõ lệnh: gem install calabash-cucumber calabash-ios setup calabash-ios gen để tạo khung features để test Trong Xcode, build project sử dụng –cal scheme Sau viết xong kịch test, vào thư mục project gõ lệnh cucumber để chạy test 2. Cruisecontrolrb Download cài đặt Download Cruisecontrolrb https://github.com/thoughtworks/cruisecontrol.rb Sau download về, giải nén ta thư mục `cruisecontrol.rb-master` Gõ lệnh: cd cruisecontrol.rb-master ./cruise start để khởi động CruiseControl. Mặc định CruiseControl khởi động localhost với port 3333 Bạn mở trình duyệt lên truy cập vào địa `http://localhost:3333/` Nếu lên trang giao diện CruiseControl bạn thành công. Để đưa project vào quy trình Continuous Integration CruiseControl ta gõ lệnh: `cruise add [project-name] -r [repository] -s [svn|git|hg|bzr]` Ví dụ, bạn có Project tên TestCruise, link github git@github.com:michael/TestCruise.git gõ lệnh: `cruise add TestCruise –r git@github.com:michael/TestCruise.git -s git` Hoặc đơn giản sử dụng giao diện web cruisecontrolrb Chọn Add Project: điền tên project, điền link tới Repository source control management (SCM) ,chọn kiểu SCM sử dụng ấn Create. Danh sách project trạng thái chúng hiển thị giao diện web Cruisecontrolrb. Ở bạn ấn vào Build Now để tiến hành build project. Ấn vào project để xem trình kết build test Config gửi mail thông báo cho lập trình viên từ gmail a. Config email developer thư gửi đến Vào thư mục `\Users\YourName\.cruise\projects\YourProject` mở file `cruise_config.rb` chỉnh lại dòng: `project.email_notifier.emails = ['email1@your.site', 'email2@your.site']` trong dấu ngoặc [] danh sách email developer mà bạn muốn thông báo kết build test. b. Config để sử dụng tài khoản gmail để gửi mail Vào thư mục `:\Users\abc\.cruise` mở file `site_config.rb` thêm vào dòng sau: ActionMailer::Base.smtp_settings = { :address =>"smtp.gmail.com", :port => 587, :domain => "gmail.com", :authentication => :plain, :user_name => "yourgmailid@gmail.com", :password => "yourpassword" } Vậy từ build test xong CruiseControl gửi mail báo kết cho Developer. Đây nội dung mail thông báo, bao gồm thay đổi thực project kết build test. Config để chạy lệnh build test tự động với app Android iOS Trong thư mục project bạn tạo file .sh MacOS, file .bat Window, ví dụ `buildtest.sh`, `buildtest.bat`. Ngay bạn muốn đưa project vào quy trình CI tạo file này. Nếu app Android nội dung sau: ant debug calabash-android run ./bin/YourProject-debug.apk Dòng lệnh build ant phiên debug. Dòng thứ hai lệnh chạy test với Calabash-android. Nếu app iOS nội dung sau: xcodebuild build ONLY_ACTIVE_ARCH=NO -project YourProject.xcodeproj – scheme YourProject-cal -configuration Debug -sdk iphonesimulator6.1 DEPLOYMENT_LOCATION=YES DSTROOT=build TARGETED_DEVICE_FAMILY=1 cucumber Dòng thứ chứa lệnh build XCode. Dòng thứ hai chứa lệnh chạy test với Cucumber. Sau push file lên git, CruiseControl phát có thay đổi pull để build, chưa config nên báo lỗi Vào thư mục `\Users\YourName\.cruise\projects\YourProject` mở file `cruise_config.rb` chỉnh lại dòng: project.build_command = 'sh buildtest.sh' MacOS project.build_command = 'buildtest.bat' Window. Trong `buildtest.sh`, `buildtest.bat` file bạn tạo project trên. Lưu lại thay đổi, CruiseControl phát thay đổi file `cruise_config.rb` build lại project. **Lưu ý**: Android, bạn phải chạy sẵn giả lập với lệnh `emulator –avd avdname` không lúc chạy test bị lỗi không tìm thấy thiết bị. Còn với iOS server tự động mở emulator trước chạy test. IV. Thành đạt hướng phát triển Thành đạt được: - Hiểu cấu trúc cách thức hoạt động Calabash. - Biết cách sử dụng Calabash để viết test cho ứng dụng iOS, android viết test đa tảng. - Hiểu tích hợp liên tục gì, lợi ích phát triển phần mềm theo phương pháp Agile. - Biết cách cấu hình sử dụng Cruisecontrolrb để đưa project vào môi trường tích hợp liên tục. - Đã viết test hoàn chỉnh cho ứng dụng android SortAlgorithms, viết test hoàn chỉnh đa tảng cho ứng dụng VietGag. Đã tích hợp ứng dụng vào môi trường tích hợp liên tục Cruisecontrolrb. Hướng tìm hiểu phát triển: V. - Tiếp tục rèn luyện cách viết test cho ứng dụng iOS, Android viết test đa tảng. - Sử dụng Calabash Cruisecontrolrb để phát triển phần mềm theo hướng BDD thay viết test cho ứng dụng có sẵn demo. - Viết server để người dùng upload file app test case, tự động cấu hình kiểm thử ứng dụng sau thông báo cho người dùng. Các nguồn tham khảo Calabash Calabash-ios: https://github.com/calabash/calabash-ios Calabash-android: https://github.com/calabash/calabash-android Viết test đa tảng: https://github.com/calabash/calabash-ios/blob/0.9.x/calabashcucumber/doc/x-platform-testing.md https://github.com/calabash/x-platform-example Giới thiệu, kiến trúc, nguyên lý hoạt động Calabash: http://blog.lesspainful.com/ Tích hợp liên tục (Continuous Integration) http://martinfowler.com/articles/continuousIntegration.html http://www.thoughtworks.com/continuous-integration http://www.ibm.com/developerworks/vn/library/rational/201301/continuousintegration-agile-development/ http://tech.blog.framgia.com/vn/?p=2071 http://vat2p.googlecode.com/svn/trunk/ContinuousIntegration-ccnet.ppt CruiseControlrb http://cruisecontrolrb.thoughtworks.com/ http://cruisecontrolrb.thoughtworks.com/documentation/manual [...]... cho ứng dụng android là SortAlgorithms, viết test hoàn chỉnh đa nền tảng cho ứng dụng VietGag Đã tích hợp được 2 ứng dụng này vào môi trường tích hợp liên tục của Cruisecontrolrb Hướng tìm hiểu và phát triển: - - Sử dụng Calabash và Cruisecontrolrb để phát triển phần mềm theo hướng BDD thay vì chỉ viết test cho ứng dụng có sẵn như đã demo - V Tiếp tục rèn luyện cách viết test cho ứng dụng iOS, Android. .. đạt được và hướng phát triển Thành quả đạt được: - Hiểu về cấu trúc cũng như cách thức hoạt động của Calabash - Biết cách sử dụng Calabash để viết test cho ứng dụng iOS, android và viết test đa nền tảng - Hiểu tích hợp liên tục là gì, lợi ích của nó khi phát triển phần mềm theo phương pháp Agile - Biết cách cấu hình và sử dụng Cruisecontrolrb để đưa các project vào môi trường tích hợp liên tục - Đã... upload file app và các test case, sẽ tự động cấu hình và kiểm thử ứng dụng sau đó thông báo cho người dùng Các nguồn tham khảo Calabash Calabash -ios: https://github.com /calabash/ calabash -ios Calabash -android: https://github.com /calabash/ calabash -android Viết test đa nền tảng: https://github.com /calabash/ calabash -ios/ blob/0.9.x/calabashcucumber/doc/x-platform-testing.md https://github.com /calabash/ x-platform-example... có thể sử dụng calabash với một project android, vào thư mục chính của project gõ lệnh: calabash -android gen Để test một app bằng Calabash, trong thư mục của project gõ lệnh Calabash -android run file.apk Cài đặt Calabash -iOS cd vào thư mục cuả project gõ lệnh: gem install calabash- cucumber calabash -ios setup calabash -ios gen để tạo bộ khung features để test Trong Xcode, build project sử dụng –cal scheme... của sự linh hoạt 2 CruiseControlrb Tổng quan Cruisecontrolrb CruiseControlrb là một công cụ tích hợp liên tục miễn phí, mã nguồn mở được viết bằng ruby Cung cấp môi trường tích hợp liên tục cho bất kì ngôn ngữ lập trình cũng như bất kì nền tảng nào Dễ dàng cài đặt, cấu hình và sử dụng - Có thể làm việc với Java Ant, NET, NAnt hay bất kì công cụ xây dựng nào có thể build bằng dòng lệnh và trả về một giá... sinh trong quá trình tích hợp đó Xem mã nguồn Xây dựng sản phẩm Công bố kết quả Chạy các kiểm thử Phần mềm phát triển theo mô hình Agile còn được gọi là phần mềm tích hợp liên tục (Continuous Integration) Hệ thống tích hợp liên tục là thành phần sống còn của một Agile team Khi được dùng như một phần của phương pháp tiếp cận dựa trên kiến trúc, sự tích hợp liên tục (Continuous Integration - CI) và phát...II Cruisecontrolrb 1 Tích hợp liên tục (Continuous Integration) Tích hợp liên tục là gì? Continuous Integration (CI), hay tích hợp liên tục là một trong những Agile Practices, được thiết kế ban đầu như một phần của XP (eXtreme Programming) Nhưng hiện nay với những ưu điểm vượt trội của mình thì CI còn được áp dụng một cách riêng biệt Nhiều nhà phát triển sử dụng CI, nhưng không áp dụng toàn... bộ các Practices trong XP Tích hợp liên tục (Continuous Intergration hay CI) là một môi trường hỗ trợ phát triển phần mềm có chức năng giúp các thành viên trong nhóm phát triển tích hợp công việc của họ một cách thường xuyên, liên tục Mỗi điểm tích hợp sẽ được kiểm tra bởi một qui trình build và test tự động để đảm bảo rằng việc thích hợp sẽ không gây ra lỗi cho sản phẩm hiện tại và phát hiện sớm nhất... build.xml trong thư mục của project để có thể build bằng ant Sử dụng lệnh ant debug để build debug version 4 Ruby Đối với Window, sử dụng http://rubyinstaller.org/ Ở đây mình sử dụng bản 1.9.3 Đối với Mac vào https://www.ruby-lang.org/en/downloads/ Và làm theo hướng dẫn 5 Calabash Cài đặt Calabash -android: https://github.com /calabash/ calabashandroid/blob/master/documentation/installation.md Để có thể sử dụng. .. nhanh chóng và gắn kết hơn CI bao hàm một loạt những quá trình được gắn kết với nhau như: tự động build, kiểm tra tiêu chuẩn mã, phân tích tĩnh, kiểm thử đơn vị, triển khai, kiểm thử tích hợp, Các yêu cầu của một hệ thống tích hợp liên tục - Một Source Control Management: SVN, Mercurial, Git, Visual Source Safe… - Một hệ thống build tự động: Xcode, Ant, NET, NAnt, - Khả năng tự kiểm thử trên bản . bị di động 2. Calabash a. Giới thiệu về Calabash - Calabash là một công cụ kiểm thử ứng dụng di động tự động và đa nền tảng. - Calabash chỉ sử dụng một giao di n duy nhất: Cucumber cho cả iOS và. viện calabash- android để kiểm thử cho ứng dụng android và calabash- ios để kiểm thử cho ứng dụng iOS. Calabash server cũng có calabash iOS và Android Framework tương ứng. - Calabash client và Calabash. trình cài đặt và kiểm thử ứng dụng, ở đây bạn có thể thay đổi hành động trước và sau khi kiểm thử ví dụ như sau mỗi kịch bản test cài đặt lại ứng dụng, hoặc là chỉ khởi động lại ứng dụng. • Các

Ngày đăng: 11/09/2015, 12:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan