Kiểm thử tự động ứng dụng Android bằng Calabash

Kiểm thử tự động ứng dụng Android bằng Calabash

Giới thiệu về Calabash

Calabash là một ứng dựng nguồn mở và miễn phí để kiểm thử tự động các ứng dụng di động. Nó là ứng dụng đa nền tảng và hỗ trợ cả iOS và Android. Calabash bao gồm những thư viện cho phép tương tác với các native app và hybrid app giống như người dùng cuối bao gồm các hành động như giả lập cử chỉ, xác định đúng sai và chụp hình màn hình…

Yêu cầu

  • JAVA JDK
  • ANDROID SDK
  • RUBY

Lưu ý: Các bước hướng dẫn bên dưới được thực hiện trên hệ điều hành Mac OS X, sẽ không khác mấy đối với các hệ điều hành Linux. Nếu bạn đang sử dụng Windows, hãy tham khảo bài viết này để cài đặt Calabash.

Chuẩn bị

Cài đặt Java JDK

Các bạn tải và cài đặt tại đây: Java JDK

Cài đặt Android SDK

Tải và cài đặt Android SDK tại Android SDK Stand alone download.

Sau khi tải về máy, giải nén hoặc cài đặt (tuỳ hệ điều hành), chúng ta phải cấu hình biến môi trường ANDROID_HOME và PATH với 2 thư mục platform-tools và tools trong thư mục của Android SDK.
Thiết lập ANDROID_HOME bằng cách gõ lệnh sau vào terminal:

/path/to/your/android/sdk/folder là đường dẫn tới folder lưu SDK của bạn, chẳng hạn như của mình sẽ là /Users/hoaiviet/Documents/android-sdk

Và thiết lập lại PATH:

Sau đó nhớ thêm 3 dòng lệnh trên vào ~/.bash_profile hoặc ~/.zshrc (nếu bạn dùng zsh). Khởi động lại terminal hoặc chạy lệnh:

Cài đặt Ruby

Để tiện quản lý các phiên bản ruby, bạn có thể sử dụng rbenv hoặc RVM.

Trong bài này, mình sẽ sử dụng rbenv trên Mac OS X. Trước hết, máy bạn phải có Homebrew, nếu chưa có thì bạn phải cài đặt trước khi cài đặt Ruby bằng cách chạy lệnh sau trong terminal (lưu ý lệnh ruby ở đây là phiên bản được cài sẵn của Mac OS X):

Tiếp theo là cài đặt Ruby (ở đây mình sử dụng phiên bản 2.2.3), các bạn hãy làm theo các bước như bên dưới:

Nếu kiểm tra ruby -v không đúng với version 2.2.3 thì các bạn hãy paste những đoạn sau vào cuối file ~/.bash_profile:

Khởi động lại terminal hoặc chạy lệnh:

Cài đặt gem calabash-android

Sau khi đã cài đặt xong Ruby thì chúng ta cần cài đặt gem Calabash cho Android bằng cách chạy lệnh:

Đăng nhập vào ứng dụng Skype bằng Calabash

Khởi tạo thư mục test

Các thứ mà bạn cần chuẩn bị là:

  • Một thiết bị chạy hệ điều hành Android hoặc chương trình giả lập thiết bị Android.
  • Tập tin APK của ứng dụng bạn muốn test.
  • Sublime Text hoặc bất kì một Text Editor nào bạn đã quen sử dụng.

Trong bài này mình sẽ dùng Skype để demo cho bạn thấy cách sử dụng Calabash.

Tạo 1 thư mục mới:

Chuyển đến thư mục vừa tạo:

Tiếp theo chúng ta sẽ để Calabash tạo các thư mục và tập tin cần thiết bằng lệnh:

Calabash sẽ yêu cầu bạn nhấn Enter để tiếp tục, hãy nhấn Enter và bạn sẽ có cấu trúc một thư mục Calabash như sau:

Cấu trúc thư mục Calabash

Ở đây, bạn cần quan tâm đến 2 thứ:

  1. Thư mục step_definitions: Sẽ chứa các tập tin ruby mà bạn sẽ định nghĩa các bước, ví dụ như nhấn nút nào, gõ những kí tự gì.
  2. Các tập tin có đuôi .feature là những tập tin mà bạn sẽ viết Scenario, Test cases của ứng dụng.

Bước tiếp theo, hãy chép tập tin APK của ứng dụng bạn muốn test vào thư mục vừa tạo, sau đó resign ứng dụng:

Nếu như khi chạy lệnh trên mà bị báo lỗi thiếu keystore thì chúng ta sẽ tạo mới bằng lệnh

Viết scenario đầu tiên

Bắt đầu chúng ta hãy mở file my_fist.feature bằng Sublime Text, chúng ta sẽ thấy như hình:

Scenario đầu tiên

Calabash hỗ trợ cú pháp của Cucumber, bạn có thể tham khảo cách viết các step trong scenario ở đây.

Quay lại với tập tin feature, chúng ta hãy định nghĩa 1 scenario đơn giản cho chức năng đăng nhập bằng Skype Name:

Xong rồi, chúng ta bắt đầu sửa file my_first.feature theo các step chúng ta đã viết ở trên:

Bước cuối cùng là chạy test. Để chạy được trên thiết bị thật thì các bạn nhớ cắm dây USB và bật USB Debugging lên nhé. Tốt nhất các bạn nên kiểm tra bằng câu lệnh:

OK bây giờ chúng ta hãy chạy thử

Hãy xem thiết bị và kết quả

Chưa định nghĩa bước nhập mật khẩu

Bước 1 và 2 chúng ta đã chạy OK nhưng tới bước 3 thì Calabash báo là chúng ta chưa định nghĩa step này. Giờ chúng ta sẽ định nghĩa nó. Bạn hãy mở tập tin calabash_steps.rb trong thư mục step_definitions và thêm hàm sau để định nghĩa step trên

Và bây giờ chúng ta chạy test lại lần nữa:

Kết quả chạy lại test

Tất cả đều passed.

Xuất báo cáo

Các bạn sẽ tự hỏi, tất cả thông báo các steps pass và fail đều hiện lên trên terminal như vậy thì lưu lại báo cáo kiểu gì phải không? Tất nhiên là Calabash có hỗ trợ lưu báo cáo dưới dạng tập tin, và cụ thể là HTML và báo cáo trông cũng rất là “cool”.

hoặc

và đây là tập tin báo cáo được xuất ra:

Báo cáo chạy test

Một số mẹo khi sử dụng Calabash

Test cụ thể một feature nào đó

Đơn giản là bạn chỉ cần dẫn tới tập tin feature đó là được

Test cụ thể một @tag nào đó

hoặc

Xoá dữ liệu của ứng dụng

Cách 1: Dùng tag @reset

Các bạn chỉ cần thêm đoạn code sau vào file feature/support/app_installation_hooks.rb bên trong Before

Còn tại feature, chúng ta chỉ cần thêm tag @reset vào trước Scenario:

Cách 2: Viết một step để xoá dữ liệu

Tập tin nào sử dụng step này thì trước tiên chúng ta phải require app_installation trước

rồi viết step

Lưu ý: Khi dử dụng step dạng này thì bạn nên có thêm thời gian đợi nhé

Xem ID, Class của các đối tượng

Các bạn hãy dùng uiautomatorviewer có sẵn trong thư mực tools của ANDROID SDK

uiautomatorviewer

Debugging và test các steps của bạn

Tại đây các bạn có thể nhập các hàm của mình vào để test và xem kết quả trên thiết bị.

Nếu bạn có thắc mắc hay ý kiến thì cứ thoải mái comment bên dưới nha!

SSS Full-stack Engineer

Love Silicon Straits and want to know more about our company culture, working environment or job vacancies?
Find out more at careers.siliconstraits.vn.

Silicon Straits
Be Challenged. Be Inspired. Be Different.




Posted by

on December 25, 2015

in , ,

Comments

Follow us for more later

or subscribe with