'2015/04/02'에 해당되는 글 5건

  1. 2015.04.02 Android Studio 에서 MAT사용하기 2
  2. 2015.04.02 android eclipse MAT
  3. 2015.04.02 Map, HashMap, SparseArray
  4. 2015.04.02 Calabash for Android
  5. 2015.04.02 Calabash 가 머지?
Android2015. 4. 2. 16:25


Eclipse에서는 MAT를 플러그인으로 설치 및 사용이 가능하였지만 Android Studio로는 앱을 별도로 배포하는것을 받아서 사용할 수 있다.

아래 그 과정을 나열하였다.


1. MAT 다운로드

http://www.eclipse.org/downloads/download.php?file=/mat/1.4/rcp/MemoryAnalyzer-1.4.0.20140604-macosx.cocoa.x86_64.zip

2. Android Studio에서 DDMS실행

3. Update hprof

4. dump hprof

5. hprof-conv로 변환(SDK의 platform-tools에 있음)

6. 변환된 파일 MAT로 open(변환 안하면 안열림)


MAT에 대한 활용은 다음 포스트에...

Posted by 삼스
Android2015. 4. 2. 16:17


엄청 잘 설명되어 있음..

http://www.openeg.co.kr/289

Posted by 삼스
Android2015. 4. 2. 14:37



Map(HashMap)은 자바에서 굉장히 많이 사용되는 자료형이다. 이는 키로 값을 얻을 수 있는 것인데 HashMap은 키로 문자열등도 취할수 있기 때문에 사실상 무한대로 볼수 있다. 하지만 HashMap은 내부적으로 int범위의 bucket을 가지고 구현이 되기 때문에 계속 추가하다보면 충돌이 발생할 수 있다.

즉 "aa"와 "bb"키로 다른 값을 등록하였는데 읽을 때 동일한 값이 잃혀질 수 있다는 것이다.

이 로인 해 key.hashCode()를 적절히 구현하여 linked list를 활용하는 방안이 있다. 이른 해당 키의 값이 없으면 linked list로 추적하여 그 값을 읽어오는 방법이다. 이렇게 하면 충돌은 피할 수 있겠으나 결국 linked list와 별반 다르지 않다.

안드로이드에서는 이를 보완하기 위해 java.android.util.SparseArray를 제공한다.

이는 bucket인덱스 기준으로 0~100까지 저장되고 10000~10010까지 저장된다고 가정할 때 실제로는 110개만 bucket를 생성한다. 저장할 데이터가많으면 LongSparseArray를 사용하면 된다.

한가지 제약은 키값이 정수이어야 한다는 것이다. 이 부분만 뺴면 HashMap이나 linked list를 활용하는 것보다 빠르게 처리할 수 있다.

속도가 문제가 된다면 HashMap을 SparseArray로 변경하는것을 고민해볼때이다.


Posted by 삼스
카테고리 없음2015. 4. 2. 14:30


http://groups.google.com/group/calabash-android

Installation

필수

  • Ruby가 필수로 깔려 있어야 함. ruby -v를 터미널에서 실행해볼것. 윈도우에서는  RubyInstaller.org <- 여기에서 다운로드하여 설치
  • 안드로이드 SDK필수이며 ANDROID_HOME 환경변수에 압축이 풀린 SDK폴더위치를 가리키도록 해야 한다.
  • ANT도 필수로 설치되어야한다. https://ant.apache.org/bindownload.cgi 에서 설치할 수 있다.

설치

  • sudo gem install calabach-android


Ruby API

테스트 단계를 작성할 때 Ruby API로 애플리케이션과 연동함.

여기서는 high-level의 API에 대해서만 설명할것이며 더 자세한 내용을 보려면 https://github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android 를 참조할것.

calabash android는 client-server 구조이다. Calabash Ruby API는 테스트서버와 HTTP로 통신하는 client side이며 서버는 앱과 함께 단말에서 동작한다. Calabash Android의 아키텍쳐가 궁금하면 다음 포스트를 참조해라.

AN OVERVIEW OF CALABASH ANDROID


일반적인 사항

start_test_server_in_background

테스트서버와 앱이 테스트에 진입(app under test:AUT)한다. 앱이 이미 실행중이면 restart한다.

reinstall_apps

테스트서버와 AUT를 새버전으로 설치한다. 


질의(Query)

query(uiquery, * args)

query는 그 결과를 array로 반환한다. 뷰나 다른 애븦리케이션 객체들을 찾아내고 유효성을 체크하거나 데이터를 추출해낼 수 있다. view객체의 경우 좌표, 클래스 그리고 컨텐츠디스크립션등을 반환한다.

irb(main):002:0> query("button index:1")

=> [{"id"=>"save", "enabled"=>true, "contentDescription"=>nil, "class"=>"android.widget.Button", "text"=>"Save", "rect"=>{"center_y"=>724.0, "center_x"=>645.5, "height"=>64, "y"=>692, "width"=>71, "x"=>610}, "description"=>"android.widget.Button{4267b4a0 VFED..C. ........ 497,243-568,307 #7f070023 app:id/save}"}] 

뷰는 hash로 표현되며 따라서 아래와 같은 결과를 볼수 있다.

irb(main):003:0> query("button index:1").first.keys 

=> ["id", "enabled", "contentDescription", "class", "text", "rect", "description"] 

*args 파라메터는 쿼리결과에 메소드를 수행할 수 있게 한다.

irb(main):005:0> query("button", "text")

=> ["Optional Settings", "Save", "Cancel", "Get a free blog at WordPress.com"]

이는 getter 메소드를 호출하게 되는데 text(), getText() 또는 isText()가 해당되며 뷰내의 버든들에 대해 수행된다. 연속으로 호출도 가능하다.

irb(main):007:0> query("button", "text", "length")

=> [17, 4, 6, 32]

irb(main):008:0> query("button", "text", "toLowerCase")

=> ["optional settings", "save", "cancel", "get a free blog at wordpress.com"]

인자가 필요한 경우 해시를 사용할 수 있다.

irb(main):033:0> query("edittext index:1", setText:"1234")

=> ["<VOID>"] 

Ruby 1.0에서는 key:val형식이 사용 불가하며 아래와 같이 사용해야 한다.

irb(main):033:0> query("edittext index:1", setText => "1234")

=> ["<VOID>"] 

쿼리 조건에 맞는 뮤들에 대해서 setTex 메소드가 "1234"인자와 함께 실행될것이다.

<VOID>는 자바 메소드가 void를 반환함을 의미한다.


Waiting

wait_for(options, &block)

특정 상태가 발생할때까지 대기한다. 옵션을 hash로 지정하면 블럭이 반복적으로 호출된다.

....







Posted by 삼스
카테고리 없음2015. 4. 2. 10:43


CALABASH 특징

  • 모바일앱에 대해 자동화된 테스트를 작성하고 실행할 수 있게 해준다.
  • 안드로이드와 iOS를 모두 지원하는 크로스플랫폼이다.
  • 오픈소스로 무료이며 Xamarin이라는 회사에서 개발중이다.
  • Xamarin Test Cloud 로 수백개의 단말에서 앱을 자동으로 테스트 할 수 있다.
  • native와 hybrid app과 연동하는 테스트코드를 작성할 수 있도록 해주는 라이브러리로 구성된다.
  • 연동액션은 다음과 같다.
  • Gestures : 터치나 제스쳐(탭, 스와이프, 회전등)
  • Assertions : 
  • Screenshots : 단말의 현재 뷰의 스크린덤프
  • Selenium WebDriver와 비교되는데 터치스크린을 갖는 네이티브앱과 연동한다는 것에서 많은 차이가 난다.

Android
  • https://github.com/calabash/calabash-android
iOS
  • https://github.com/calabash/calabash-ios


Posted by 삼스