Tuesday, September 27, 2016
User Interface Testing - Testing with Xcode
Concepts and APIs
UI Testing 은 unit testing과 근본적으로 다르다.
Unit Testing은 app 스코프안에서 앱의 변수, 상태 등등을 전체적으로 접근 하며, function이나 method를 테스트 한다.
반면에 UI Testing은 User Level에서 테스트함으로 앱안의 함수등을 접근 할수 없다.
즉 User 관점에서 테스트 하는것이다.
APIs
- XCUIApplication
- XCUIElement
- XCUIElementQuery
** 가이드 문서에 별다른 내용이 없다 ㅠ
이건 가이드라기 보다 introduction에 가까운거 아닌가, 맨땅에 헤딩좀 해야 겠다.
Writing Tests of Asynchronous Operations- Testing with Xcode
XCTest에서 expectation 을 통해 Async Op.을 테스트 할수 있다.
XCTestCase+AsynchronousTesting.h 참조.
// Test that the document is opened. Because opening is asynchronous,
|
// use XCTestCase's asynchronous APIs to wait until the document has
|
// finished opening.
|
- (void)testDocumentOpening
|
{
|
// Create an expectation object.
|
// This test only has one, but it's possible to wait on multiple expectations.
|
XCTestExpectation *documentOpenExpectation = [self expectationWithDescription:@"document open"];
|
|
NSURL *URL = [[NSBundle bundleForClass:[self class]]
|
URLForResource:@"TestDocument" withExtension:@"mydoc"];
|
UIDocument *doc = [[UIDocument alloc] initWithFileURL:URL];
|
[doc openWithCompletionHandler:^(BOOL success) {
|
XCTAssert(success);
|
// Possibly assert other things here about the document after it has opened...
|
|
// Fulfill the expectation-this will cause -waitForExpectation
|
// to invoke its completion handler and then return.
|
[documentOpenExpectation fulfill];
|
}];
|
|
// The test will pause here, running the run loop, until the timeout is hit
|
// or all expectations are fulfilled.
|
[self waitForExpectationsWithTimeout:1 handler:^(NSError *error) {
|
[doc closeWithCompletionHandler:nil];
|
}];
|
}
|
Test Basics - Testing with Xcode
* 모든 소프트웨어는 각 컴포턴트(혹은 모듈을) 조합함으로써 만들어지고,
좋은 테스트라함은 해당 소프트웨어의 기능을 모두 아우를수 있는 레벨의 ( 콤포넌트 단위/ 혹은 콤포넌트를 조합하는 High Level)의 테스트를 수행하는것이다.
이를 위해 XCTests가 있다.
* Unit Tests
하위레벨의 콤포넌트(Model, ViewController, etc)를 테스트 하기에 적합.
> xcode 는 앱 뿐만 아니라, Library도 테스트 할수 있게, App/Library 두가지의 Context를 제공한다.
* Performance Mesure
특정 연산에 대한 성능 분석
* UI Tests.
어플리케이션의 workflow를 테스트 할수 있는 도구.
공부하는 사람.
공부하는 사람.
내가 소프트웨어 엔지니어링을 매력적으로 느끼고, 직업으로 삼게 된 가장 큰 계기는,
이 직업은 꾸준히 공부할 수 있는, 아니 해야만 하는 직업이기 때문이다.
요 몇 년 나는 제대로 된 공부를 하지 않았다.
새로운 기술을 익히고 프로젝트에 적용 하는 것은 그 이전에도 해왔던 것으로 나에게 공부 코스트가 그렇게 큰일은 아니다.
삶의 권태를 느끼고 나를 둘러싼 환경을 변화시키고자 아등바등하고 있는 요즘,
또 한 번 내 이런 모습을 실감하고 나 자신부터 다시 붙잡고자 노력하고 있다.
공부하는 사람.
참 아름다운 말 아닌가. 꾸준히 나아가보자.
내가 소프트웨어 엔지니어링을 매력적으로 느끼고, 직업으로 삼게 된 가장 큰 계기는,
이 직업은 꾸준히 공부할 수 있는, 아니 해야만 하는 직업이기 때문이다.
요 몇 년 나는 제대로 된 공부를 하지 않았다.
새로운 기술을 익히고 프로젝트에 적용 하는 것은 그 이전에도 해왔던 것으로 나에게 공부 코스트가 그렇게 큰일은 아니다.
삶의 권태를 느끼고 나를 둘러싼 환경을 변화시키고자 아등바등하고 있는 요즘,
또 한 번 내 이런 모습을 실감하고 나 자신부터 다시 붙잡고자 노력하고 있다.
공부하는 사람.
참 아름다운 말 아닌가. 꾸준히 나아가보자.
Monday, September 26, 2016
Testing with Xcode.
- Quick Start. Beginning with Xcode 5 and the introduction of the XCTest framework, the process of configuring projects for testing has been streamlined and automated with the test navigator to ease bringing tests up and running.
- Performance Measurement. Xcode 6 and later includes the ability to create tests that allow you to measure and track performance changes against a baseline.
- UI Testing. Xcode 7 adds capabilities for writing tests that exercise an app’s UI. It includes the ability to record UI interactions into source code that you can transform into tests.
- Continuous Integration and Xcode Server. Xcode tests can be executed using command-line scripts or configured to be executed by bots on a Mac running Xcode Server automatically.
- Modernization. Xcode includes a migrator for converting projects that have OCUnit tests to have XCTest tests.
See Also
Subscribe to:
Posts (Atom)