iCloud 테스팅과 디버깅:Key-Value 스토리지와 Document 스토리지 (iOS & OS X 프로그래밍 가이드)

0

iCloud Design Guide  마지막 챕터 번역입니다.

애플 공식 문서 원본: Testing and Debugging (Key-Value and Document Storage) 

 

철저한 테스트와 디버깅이 완료될때까지 앱을 완성된게  아니겠지만 iCloud를 채택할 때 이런 단계는 더욱 즁요할 것이다: 당신앱이 정상적으로 처리해야할 사용자 수 시나리오가 더 많다. 사용자는 여러 기기에서 서로다른 버전의 앱을 가지고 있거나 하나 이상의 기기에서 당신앱을 동시에 조작할 있다. 큰 파일이 iCloud에 업로드되는 중에 사용자가 비행기모드를 켤 수 있다. 드문 경우이지만 사용자가 아이클라우드에서 로그아웃하거나 다른 계정으로 변경할 수도 있다.

이번 챕터에서는 당신앱을 테스트하고 디버깅할때 iCloud에 대해 생각해보도록 이끌 것이다.

 

당신의 디바이스에 iCloud가 설정이 되었는지 확인 할 것

뭔가 예상대로 작동되지 않는다면 사전준비가 제대로 되었는지 학인 할 것:

  • 당신의 테스트기기가 iCloud 위해 올바르게 프로비저닝 되었는지 확인 . 당신의 디바이스 프리비저닝 프로파일과 Apple ID가 반드시 iCloud에 대해 올바르게 구성되어야한다.  App Distribution Guide의 App Distribution Quick StartAdding iCloud Support를 회고해볼것.
  • iCloud 권한 요청이 올바른지 확인 . Xcode 프로젝트에서 적절한 자격요청없이는 앱은 iCloud 컨테이너나 key-value 스토리지에 접근할 수 없다.  Request Access to iCloud Using Xcode Capabilities에서 해당정보를 주의깊게 검토해볼 것.앱의 iCloud 컨테이너에 접근할 때 정식 자격  값(.entitlements 파일의 키와 값확인)을 부여했는지 확인할 것.

 

지연시간을 고려할 것

테스트 할 때 한 기기에서 다른 기기로의 즉각적인 변경사항 전달은 기대하지 말아야한다.

iCloud 서버에 파일이 생성되었는지를 코드로 확인하려면 파일 URL의 NSURLUbiquitousItemIsUploadedKey 키의 값을 확인해서 할 수 있다. 그렇게 하려면 NSURL의 메써드 getResourceValue:forKey:error:.를 호출하라. 해당파일이 성공적으로 업로드되었다면 이 키의 Boolean NSNumber 값은 true를 갖는다.

마찬가지로, 어떤 iCloud 파일이 로컬에 있는지 코드로 확인할 수 있다. NSURL 메써드 getResourceValue:forKey:error:를 호출해서 파일 URL의 NSURLUbiquitousItemIsDownloadedKey 키 값을 확인하라.

두 경우 모두  ‘iCloud 문서 사용에 대한 앱의 책임‘에 설명된 것처럼 당신앱의 NSMetadataQuery 객체에서 파일 URL을 가져온다.

 

앱의 네트워크 트래픽을 모니터링 할 것

앱을 테스트하는 동안 과도한 양의 네트워크 트래픽이 발생하는지 확인하며 네트워크 활동에 주시하자. iOS에서는 Instruments  분석울의 Network Activity instrument를 사용하라. Mac에서는 OS X의 기본 앱 ‘네트워크 유틸리티’를 사용하면 된다.

당신앱의 네트워크 트래픽이 과도해 보인다면 앱 설계를 최적화해보자. 예를 들어서  ‘네트워크 전송 효율을 위한 설계‘에 설명된대로 점증적인 증분(incremental) 업로드와 다운로드를 보다 잘 지원할 수 있도록 문서 파일 패키지를 디자인 할 수 있을 것이다.

Instruments로 앱 프로파일링에 대한 자세한 정보는 Instruments User Guide를 참고해보자.

 

문서충돌을 테스트하기위해서 두 개의 디바이스를 사용할 것

실제로 iCloud 지원앱을 사용하면서 여러버전의 문서사이에서 발생할 수 있는 다양한 충돌 시나리오가 있을 수 있다. 그런 피할 수 없는 사실을 넘어서, ‘지속되는 문서 상태정보 설계‘에 설명 된 것처럼, 앱의 로직 문제로 인해 불필요한 충돌이 발생 할 수 있다. 

아래 항목은 실제 충돌을 시뮬레이션하기 위한 몇가지 아이디어이다. 이런 테스트를 준비하려면 하나의 iCloud 계정에 연결할 두 대의 장치를 구성하라. 이와같은 시나리오와 당신앱에서 일어날 수 있을만한 다른 것들을 처리하도록 앱을 구현하라.

 

하나의 오프라인 디바이스(기기)와 문서 버전 충돌 테스트

  1. 디바이스 1에서, 당신앱을 사용해서 새로운 문서를 만들고 연다음 디바이스 2에서 해당 문서를 연다. 해당문서는 이제 양쪽 디바이스에서 열려있다.
  2. 디바이스 1에서 비행기모드를 켜고 해당 문서를 편집한다.
  3. 디바이스 2(여전히 온라인인 것)에서도 해당 문서를 편집한다.
  4. 디바이스 1에서 비행기모드를 끈다.(온라인)
  5. 각각의 디바이스에서 계획된대로 충돌해결이 동작하는지 확인한다.

 

두개의 오프라인 디바이스로 문서 버전 충돌 테스트

  1. 디바이스 1에서 새로운 문서를 생성하고 연다. 그런다음 해당문서를 디바이스 2에서 연다. 이제 양쪽 디바이스 모두에서 해당문서가 열려있는 상태이다.
  2. 두 디바이스 모두 비행기모드를 켜서 오프라인으로 만들고 해당문서를 양쪽 문서에서 편집한다. 양쪽 디바이스에서 동시에, 혹은 서로 다른 시간에 변경사항을 완료해 봄으로써 이 절차를 다양하게 적용해본다.양쪽 디바이스 모두에서 비행기모드를 꺼서 온라인으로 만든다. 이 단계역시도 두 디바이스 모두 같은시간에 혹은 서로 다른 시간에 비행기모드를 꺼서 다양한게 적용해본다.
  3. 각각의 디바이스에서 버전 충돌 해결이 계획한대로 동작하는지 확인한다.

 

문서 포맷의 하위, 상위버전 호환성 테스트

  1. 디바이스 1에 가장 오래된 버전의 앱을 설치하고, 디바이스  2에는 최신버전을 설치한다.
  2. 양쪽 디바이스에서 문서를 하나씩 생성한다. 각각의 문서가 양쪽 디바이스에서 나타나도록 충분한 시간을 보낸다.
  3. 각 디바이스에서, 다른 디바이스에서 만들어진 문서를 연다. 또는 당신이 열기를 지원하지 않는 ‘버전불일치’일 경우 계획한대로 동작하는지 확인한다. 문제가 있는 지 확인한다.

 

문서관리 테스트

  1. iCloud에 문서를 저장한 다음 해당 문서를 두개의 기기에서 연다.
  2. 디바이스 1에서 해당 문서의 이름을 수정한다.(또는 선택적으로는 삭제).
  3. 디바이스 2에서 의도대로 동작하는지 확인한다.

 

개발과정에서 iCloud Data가 일치하지 않게되면 새롭게 시작할 것

앱으 개발하는 동안에 앱의 iCloud 컨테이너의 데이터가 일치하지 않게 될 수 있다. 이런 일이 발생하면 앱 동작 또한 잘못 되게 된다. 이전에 동작했던 코드가 이제 동작하지 않는다면 처음부터 새롭게  시작하기 위해서 iCloud 컨테이너를 비워 볼 것

iOS기기나 Mac을 사용해서 앱의 iCloud 컨테이너를 비울 수 있다.

 

iOS 디바이스를 사용해서 앱의 iCloud 컨테이너 비우기

  1. 당신앱의 인스턴스를 포함하고 있는 모든 기기에서 해당 인스턴스(앱)를 삭제한다.
  2. iOS의 ‘설정’앱에서  iCloud > Storage & backup > Manage Storage(저장 공간 관리) 항목으로 이동한다.
  3. Documents & Data 그룹에 당신앱이 나타나지 않는 다면 Show All을 누른다.
  4. Manage Storage 스크린에서 당신앱의 이름을 선택한다.
  5. 당신앱의 저장소 정보보기 스크린에서 Edit >Deleate All을 누른다. 확인창이 나타나면 Delete All을 선택한다.

위 단계를 완료하고 난뒤, iCloud 컨테이너의 콘텐츠가 iCloud 계정에 연결된 모든 기기에서 삭제되길 기다린다. 만일 해당 컨테이너가 많은 용량의 데이터를 담고 있다면 이 동작은 더 오래걸린다. Mac에서는 Finder를 사용해서 해당 iCloud 컨테이너가 비워졌는지 확인 할 수 있다. Mac에서 해당 컨테이너로의 경로는 아래와 같다:

~/Library/Mobile Documents/앱번들ID

그런다음 각각의 디바이스에 앱을 다시 설치한다.

 

Mac을 사용해서 당신앱의 iCloud 컨테이너 비우기

  1. 당신앱의 인스턴스가 설치된 모든 디바이스에서 해당 인스턴스를 삭제한다.
  2. OS X의 ‘시스템 환경설정’에서 iCloud 설정을 열고 Manage(관리…)를 클릭한다.
  3. Manage Storage(저장 공간 관리) 대화상자가 나타나면 해당 리스트에서 당신앱을 찾아 클릭한다.
  4. Delete All(문서 및 데이터 삭제)을 클릭한다. 확인창이 나타나면 Delete(삭제)를 클릭한다. 그런다음 Done(완료)를 클릭한다.

위 단계를 완료하고 난뒤, 해당 컨테이너의 내용이 iCloud 계정에 연결된 모든 기기에서 삭제될 때까지 시간을 보낸다. 만일 해당 컨테이너에 들어있던 데이터의 용량이 크다면 이 작업은 더 오래걸린다. Mac에서는 Finder를 사용해서 해당 iCloud 컨테이너가 비워졌는지 확인 할 수 있다. Mac에서 해당 컨테이너로의 경로는 아래와 같다:

~/Library/Mobile Documents/앱번들ID

그런다음 각각의 디바이스에 앱을 다시 설치한다.

 

iCloud를 지원하는 당신앱의 OS X 버전을 제공하면서 완전히 새롭게 시작하길 원한다면 당신앱이 설치된 모든 Mac에서 당신앱의 App Sandbox 컨테이너의 내용물 또한 삭제할 것. 이 작업은 더이상 일치하지 않게된 ‘앱에만 한정된 데이터’ 또한 삭제할 수 있게 해준다. Mac에서 App Sandbox 컨테이너에 대한 경로는 다음과 같다:

~/Library/Containers/앱번들이름

 

iCloud Design Guide 번역 끝.

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)