Monday, September 28, 2015

App Transport Security on iOS 9 and XCode 7 và cách tắt chức năng đó trên iOS 9.

Trên iOS 9, Apple giới thiệu 1 công nghệ mới để ngăn chặn ứng dụng sử dụng connection theo dạng HTTP để đảm bảo tính bảo mật cho ứng dụng trên iOS đó là App Transport Security (ATS). Mặc định những connection được viết dùng NSURLConnection, NSURLSession hay dùng những thư viện như (AFNetworking,...).

Thursday, September 24, 2015

(BBD) UI Testing trên iOS 9 và XCode 7

UI Testing (User Interface Testing) còn được gọi là BDD (behavior-driven development) hay Test Automation. Nói tóm lại khi nào bạn sử dụng UI Testing vào dự án bạn đang làm? Theo Apple thì những tiêu chí dưới đây sẽ cần để ứng dụng UI Testing:
- Bổ sung thêm Unit Test cho kịch bản (scenario) hay hành động (actions) mà bạn thường xuyên phải làm hay luồng quan trọng của dự án (important application flow).
- Bổ sung thêm tính chính xác cho hệ thống.
- Có thể bao khối hết những khía cạnh của test chức năng (functionality unit test).
Vì thế tuỳ theo từng dự án bạn làm cần chất lượng cao hơn thì bạn nên ứng dụng UI Testing và để luôn luôn đảm bảo hệ thống bạn chạy một cách chính xác và đúng đắn.

Trước khi Apple giới thiệu UI Testing trong WWDC 2015 thì cũng có những framework có thể làm được như vậy như:
- UIAutomation: của Apple phát triển, viết bằng ngôn ngữ javascript. Viết code trên này rất bất tiện.
- Cedar: làm việc trên Ruby on Rails. Theo tác giả của trang blog này đánh giá framework này rất tốt. Mình chưa thử sử dụng nhưng theo kinh nghiệm mình làm trước giờ mấy framework mà không do Apple phát triển có thể mỗi lần update iOS mới có thể sẽ không dùng được. Vì thể mình hay ưu tiên dùng những gì do Apple phát triển, nếu Apple chưa hỗ trợ mình mới dùng framework ở ngoài.
- Frank: từ lâu rồi không còn hỗ trợ nữa.
- KIF: bị phá vỡ mỗi phiên bản mới iOS.
- Subliminal: Không chạy ổn định bằng dòng lệnh (command line).

Sau đây mình sẽ giới thiệu cách sử dụng UI Testing trên XCode 7.
Bạn muốn sử dụng UI Testing thì phải dùng XCode 7ứng dụng phải viết trên iOS 9 hoặc OS X 10.11.

3 đối tượng chính được thêm vào XCTest mà bạn cần quan tâm là:
- XCUIApplication
- XCUIElement
- XCUIElementQuery

Bước 1: Khởi tạo dự án tên "UITestingDemo", mình chọn viết bằng ngôn ngữ Objective-C (Swift tương tự như vậy) và check vào "Include UI Tests" như sau: