IOS testing Phần I

1.Tại sao phải kiểm thử IOS

Được phát hành lần đầu tiên vào ngày 29 tháng 6 năm 2007, iOS là tên của nền tảng của Apple dành cho các ứng dụng di động. Không giống như Android, Apple không cấp phép cho iOS để cài đặt trên phần cứng không phải của Apple. ứng dụng iOS và iOS chỉ được cài đặt trên thiết bị Apple. Ứng dụng của bạn phải tương thích với 4 loại thiết bị và phiên bản iOS đó là : IPhone, iPad,iPad mini, iPod.Và một câu hỏi chung cho các nhà phát triển ứng dụng iOS : Ứng dụng iOS của tôi là không có lỗi,Tại sao chúng ta cần kiểm thử ứng dụng iOS ?.Và câu trả lời là Không quan trọng thời gian bao lâu để thiết kế và xây dựng ứng dụng , lỗi xảy ra là điều không thể tránh khỏi , và lỗi sẽ xuất hiện. Thông thường sẽ có các lỗi cơ bản cần kiểm thử dưới đây: 1.Ứng dụng bị crash (Application crashing)

Một trong những vấn đề bực bội nhất, khi sử dụng các thiết bị của Apple, là một ứng dụng có thể crash thường xuyên trong quá trình thực hiện. Nhiều lần ứng dụng bị treo vì có lỗi hoặc rò rỉ bộ nhớ trong ứng dụng.

2.Ứng dụng không tương thích (Application incompatibilities)

Ứng dụng iOS của bạn có thể hoạt động tốt trên phiên bản iOS hiện tại, nhưng nếu iOS được nâng cấp phiên bản cao hơn thì nó có thể không hoạt động do sự cố không tương thích với bản nâng cấp đó.

3.Lỗ hổng bảo mật (Security vulnerability)

Lỗ hổng bảo mật trong iOS cho phép hacker tấn công thiết bị iOS của bạn, ăn cắp thông tin cá nhân của bạn. Cho đến bây giờ, các lỗ hổng bảo mật iPhone nghiêm trọng được phát hiện trong các phiên bản iOS khác nhau.

4.Rò rỉ bộ nhớ (Memory leaks)

Rò rỉ bộ nhớ là các khối bộ nhớ được phân bổ mà chương trình không còn sử dụng. Lỗi bộ nhớ làm cho ứng dụng iOS của bạn bị crash. Đó là bug và phải luôn luôn được sửa chữa.

2.iOS testing MindMap

Dưới đây là bản đồ tất cả các mục mà người kiểm tra cần cân nhắc khi tiến hành thử nghiệm trên iOS:

UI: giao diện ứng dụng của bạn có chính xác hay không

  • Smooth animation: Animation có hoạt động trơn tru hay không ?
  • User Friendly: giao diện có thân thiện với người dùng hay không ?
  • Landscape
  • Portrait

Hardwware: Phần cứng bao gồm iPhone, iPad, iPod UnitTest: Kiểm thử đơn vị bao gồm các phương thức (method) và các đối tượng (Object) Software: Phần mềm

  • App crash: app có bị treo khi chạy không ?
  • Security: kiểm thử bảo mật
  • Memory leaks: App có bị rò rỉ bộ nhớ dẫn đến treo không ?

Functionality: Chức năng

  • Email
  • Web
  • Service
  • Contact
  • Phone Call
  • Call Conference

3.Chiến lược kiểm thử iOS Dưới đây là một số loại chiến lược kiểm thử iOS phổ biến

2 chiến lược quan trọng nhất là kiểm thử tự động và kiểm thử thông thường bằng tay Kiểm thử tự động: bao gồm Kiểm thử đơn vị(Unit testing),Kiểm thử UI(UI testing) Kiểm thử bằng tay: bao gồm Kiểm thử Khám phá và kiểm thử người dùng

3.Kiểm thử tự động

Kiểm thử tự động là lợi ích nhất của kiểm thử iOS . Nó cho phép bạn phát hiện các lỗi và các vấn đề hiệu suất một cách nhanh chóng. Lợi ích của việc kiểm tra tự động:

  • Thử nghiệm tự động có thể chạy trên nhiều thiết bị, tiết kiệm thời gian của bạn
  • Thử nghiệm tự động có thể nhắm mục tiêu SDK. Bạn có thể chạy thử nghiệm trên các phiên bản SDK khác nhau
  • Tự động kiểm tra tăng năng suất của bạn thử nghiệm, tiết kiệm chi phí của bạn phát triển phần mềm
  • Có nhiều khuôn khổ Kiểm tra mã nguồn mở hỗ trợ thử nghiệm tự động trên iOS

3.1.Kiểm thử đơn vị với OCUnit

OCUnit là một khuôn khổ thử nghiệm cho C-Objective trong Mac OS. Lợi ích lớn nhất của khung OCUnit là sự tích hợp chặt chẽ vào môi trường phát triển XCode Lợi ích:

  • Dễ cài đặt
  • Mã nguồn mở
  • Báo cáo kiểm tra chuyên môn
  • Chi phí thấp
  • Cùng ngôn ngữ thực hiện
  • Kiểm thử hướng đối tượng
  • Tương tác với IDE

3.2 Kiểm thử UI với UIAutomation

UI Automation là một thư viện JavaScript được cung cấp bởi Apple Inc, có thể được sử dụng để thực hiện kiểm tra tự động trên các thiết bị thực và trên iOS Simulator. Framewwork này được thêm vào iOS SDK4.0. Sử dụng UI Automation, bạn có thể tự động kiểm tra ứng dụng không chỉ trên thiết bị mô phỏng mà còn thiết bị thực.

UIAutomation mang lại cho bạn những lợi ích sau:

  • Giảm nỗ lực kiểm tra thủ công
  • Sử dụng ít bộ nhớ của bạn để thực hiện tất cả các bài kiểm thủ của bạn
  • Đơn giản hóa thủ tục kiểm tra giao diện người dùng của bạn (chỉ cần nhấn một hoặc ba nút và chạy toàn bộ gói thử nghiệm của bạn)
  • Công cụ UIAutomation hoạt động từ các tập lệnh, được viết bằng JavaScript. Nó mô phỏng các sự kiện của người dùng trên ứng dụng iOS mục tiêu.

So sánh kiểm thủ UI tự động ưu điểm và nhược điểm

STT Ưu Nhược
1 Hỗ trợ tốt cử chỉ và xoay Nó không phải là nguồn mở, ít hỗ trợ từ các nhà phát triển
2 Có thể chạy trên cả máy thực và máy ảo Không thể tích hợp tốt với các công cụ khác
3 Được phát triên bởi Javascrip, nó là ngôn ngữ phổ biến

Đây là một số lớp phổ biến trong UIAutomation framework.

  • Lớp UIAElement là lớp siêu cho tất cả các thành phần giao diện người dùng trong ngữ cảnh Tự động hóa
  • Lớp UIATarget đại diện cho các thành phần giao diện người dùng cấp cao của hệ thống đang được kiểm tra
  • Lớp UIALogger cung cấp thông tin kiểm tra và thông tin lỗi về chức năng truy xuất
  • Lớp UIAActivityView cho phép truy cập và kiểm soát các chế độ xem hoạt động trong ứng dụng của bạn.
  • Lớp UIAActionSheet cho phép truy cập vào và kiểm soát các trang hành động trong ứng dụng của bạn. Hành động Sự kiện của người dùng
  • Lớp UISlider
  • Lớp UIAButton
  • Lớp UIAKey
  • Lớp UIAKeyboard