Tìm hiểu về Calabash cho IOS

1. Calabash là gì ?

  • Calabash là một framework cho phép viết kiểm thử tự động( Automated UI Acceptance Tests) ứng dụng di động cho IOS và Android
  • Calabash hoạt động bằng cách cho phép tự động tương tác với giao diện người dùng trong một ứng dụng chẳng hạn như nhấn nút, nhập văn bản, xác nhận các tin nhắn hay thông báo ..vv
  • Nó cung cấp các API mô phỏng đầu vào của các thiết bị và đọc kết quả đầu ra

calabash_ios.jpg

**2. Cài đặt calabash **

Bạn phải sử dụng một máy tính với Mac OS X. Máy này cũng phải có Xcode và đã cài đặt Ruby.

**- Cài đặt Xcode **

Download Xcode ở đây . Khi bạn đã cài đặt Xcode, chạy lệnh này trong Terminal để cài đặt các công cụ dòng lệnh:

     $ xcode-select --install

**Cài đặt Ruby **

Máy tính của bạn phải có ít nhất là phiên bản 1.8.7 cho Ruby để đảm bảo khả năng tương thích với những gems, sẽ cài đặt trong phần tiếp theo. Theo mặc định, cài đặt Mac OS X 10.8 đi kèm với cài đặt Ruby 1.8.7. Bạn có thể kiểm tra phiên bản của bạn bằng cách chạy ** ruby -v** trong Terminal. Nếu bạn vẫn cần phải nâng cấp, bạn có thể thử các bước sau:

  • Bắt đầu Terminal. Điều này có thể được tìm thấy trong thư mục Applications -> Utilities folder.
  • Kiểm tra xem bạn có RVM. Thực hiện bằng cách gõ RVM vào Terminal và nhấn Enter.
  • Nếu bạn không có RVM, cài đặt RVM sử dụng các lệnh sau trong Terminal: curl get.rvm.io -L | bash -s
  • Nếu bạn có RVM, cài đặt một phiên bản mới hơn của Ruby bằng cách sử dụng lệnh sau: RVM install 1.9.3.
  • Khi Ruby được cài đặt, bạn có thể kiểm tra cập nhật bằng ruby -v trong Terminal.

Bạn có thể tham khảo thêm cách cài đặt Xcode và Ruby ở đây

Cài đặt Calabash gem

Để cài đặt Calabash gem bật Terminal và thực hiện câu lệnh

     $ gem install calabash-cucumber

**Cài đặt framework cho Xcode project ** Thiết lập framework calabash tại dự án, chọn target muốn sử dụng để duplicate lên và dành cho việc test sử dụng câu lệnh sau :

      calabash-ios setup

Set_target.png

Sử dụng target đã sinh ra để build với simulator, từ đó tạo ra file app dành cho simulator (nếu muốn sử dụng với device thì phải chọn build với device để sinh ra file app dành cho device)

Tạo ra thư mục features để viết test code trong đó.

    calabash-ios gen

**3. Viết testcase với Calabash **

Với Calabash, kiểm tra tự động được chạy sử dụng Cucumber, và được viết bằng Gherkin, một ngôn ngữ domain-specific đó là có thể đọc được tất cả những gì liên quan đến chu kỳ phát triển của ứng dụng. Các kiểm thử được tạo thành từ hai thành phần: feature files and step definitions.

1-23-2016 3-23-07 PM.jpg

**Feature files **: Là các tập tin văn bản được viết bằng cách sử dụng Cucumber jargon và lưu với một phần mở rộng .feature. Mục đích để mô tả một tính năng và cung cấp các ví dụ về kết quả mong đợi tùy theo các điều kiện nhất định. Phần đầu tiên của một feature file là mô tả tính năng, trong đó có thể được viết bằng cách sử dụng mẫu sau đây:

Feature: <name of feature>
  In order to <meet some goal>
  As a <type of stakeholder>
  I want <a feature>

Mỗi Feature sẽ gồm một hay nhiều senario

my_first_feature.png

Step definitions

Step definitions tái sử dụng Ruby scripts thực hiện các bước riêng lẻ trong các kịch bản. Calabash đi kèm với một loạt các bước được xác định trước cho phép bạn bắt đầu thử nghiệm ứng dụng của bạn ngay lập tức mà không cần phải viết bất kỳ kịch bản Ruby .

Bạn có thể tham khảo Calabash API Ruby ở đây

Cách viết một Step Definition

Để tạo step definition, cần phải chỉ ra các truy vấn Calabash để xác định vị trí các text field, các nút , và các thông báo lỗi. Thực hiện thăm dò này bằng cách sử dụng Calabash console .

Để bắt đầu Calabash console

  • Mở terminal
  • Chuyển về thư mục chứ app
  • Chạy calabash-ios console
  • Mở Calabash test server trên device

console.jpg

Tại thời điểm này, iOS simulator nên được chạy và hiển thị giao diện đầu tiên trong ứng dụng. Ứng dụng sẽ đáp ứng bất cứ lệnh Calabash nào thông qua giao diện điều khiển Calabash.

Các Calabash API cung cấp các chức năng truy vấn sẽ tìm thấy các đối tượng trên màn hình. Phải mất một chuỗi truy vấn và trả về một mảng các đối tượng băm với thông tin về các đối tượng phù hợp với truy vấn. Các định dạng chuỗi truy vấn rất giống với CSS selector. Để xác định tất cả các đối tượng trên màn hình sẽ gọi truy vấn sau:

Screen Shot 2016-01-20 at 2.47.31 PM.png

Ví dụ về một step definition

step_mu_first.png

**4. Các bước thực hiện khi chạy Calabash **

  1. Thiết lập framework calabash tại dự án, chọn target muốn sử dụng để duplicate lên và dành cho việc test.

    calabash-ios setup
    
  2. Sử dụng target đã sinh ra để build với simulator, từ đó tạo ra file app dành cho simulator (nếu muốn sử dụng với device thì phải chọn build với device để sinh ra file app dành cho device)

  3. Tạo ra thư mục features để viết test code trong đó.

     calabash-ios gen
    
  4. Xem danh sách các simulator, device có thể chạy.

     xcrun simctl list
    

    ds_simulator.png

  5. Khởi động simulator mình muốn

     open -a "Simulator" --args -CurrentDeviceUDID {id của simulator muốn khởi động}
    

mo_simulator_da_chon.png

  1. Cài đặt APP_BUNDLE_PATH

      export APP={địa chỉ dẫn tới file app đã sinh ra và muốn sử dụng, chú ý tên file sẽ ứng với target -cal đã sử dụng}
    
  2. Cài file app vào simulator mình đã bật

     xcrun simctl install booted $APP (cài đặt file app lên simulator muốn sử dụng)
    

caidatapp_simulator.png

  1. Chạy file test (file feature) đã viết

     env DEVICE_TARGET={id của simulator đã chọn} cucumber
    
  2. Chaỵ từng scenario

    $ DEVICE=iphone OS=ios5 NO_LAUNCH=1 cucumber --tags @negative_test
    

Trên đây là những gì cơ bản để có thể viết test bằng calabash cho các ứng dụng IOS. Tôi hy vọng bài viết này sẽ 1 phần giúp cho những người lần đầu tiếp cận với Calabash có thể hiểu và viết được testcase cho các ứng dụng IOS.