본문 바로가기
[Effective Unit Testing] Chap9. 테스트 속도 개선 [Effective Unit Testing] Chap9. 테스트 속도 개선 -좋은 단위 테스트는 수행 시간도 짧다.그러나 테스트 스위트의 덩치가 커질수록 피드백 주기가 길어지는 건 피할 수 없다. -테스트 속도 개선과 빌드 속도 개선 두 가지 측면을 볼 수 있다.테스트 속도 개선은 테스트를 빠르게 해줄 실마리를 찾기 위해 코드를 파해치는 작업이다.빌드 속도 개선과 관련해서는, 빌드 스크립트가 테스트를 실행하는 방식을 봐야 한다. 구체적으로는 고성능 컴퓨터나 다수 컴퓨터를 이용한 병렬 실행을 통해 빌드 시간 단축을 볼 수 있다. 9.1. 속도 개선을 위해서 9.1.1. 더 빠르게! -테스트가 빨리 끝나야 하는 이유는 피드백이 늦어질수록 피해가 더 커지기 때문이다.좁게 보면 개발자는 작업을 마무리하지 못하고.. 2019. 3. 19.
[Effective Unit Testing] Chap5. 유지보수성 [Effective Unit Testing] Chap5. 유지보수성 -코드는 쓰이는 횟수보다 읽히는 횟수가 훨씬 많다.그리고 현실에서의 작성의 대부분은 기존 코드를 수정하거나 확장하는 걸 뜻한다.이를 유지보수라 하기도 하고 개발이라 부르기도 한다. -테스트도 태생은 제품 코드와 다를 바 없는 코드인지라, 근본적으로 똑같이 불안정하다.자동화된 단위 테스트를 작성할 때도 이런 취약성에 주의하면서 관리해야 한다. 5.1. 중복-모든 악의 근원 넘버원은 “어설픈 최적화” 이고, 넘버투는 “중복(Duplication)이다. 5.1.1. 예시 -상수 중복은 given 과 then 의 상수를 따로 정의해서 쓰는 것을 이야기한다.상수 중복은 지역 변수로 만들어서 제거할 수 있다. 5.1.2. 개선 방법 -구조 중복과 .. 2019. 3. 14.
[도서 정리] 안드로이드 앱 성능 최적화 #2 안드로이드 디바이스 랩 만들기 안드로이드 앱 성능 최적화 #2 안드로이드 디바이스 랩 만들기 이 글은 “안드로이드 앱 성능 최적화” 의 일부 내용만 정리한 것입니다.자세한 내용은 책을 구매하여 보세요~-구글에서는 전 세계적으로 활성화된 안드로이드 기기가 14억 대가 넘었다고 발표했다.전 세계에 보급된 전체 스마트폰의 80% 에 해당하는 수치이다. -TestDroid 의 연구에 따르면 상위 20% 기기를 테스트해보려면 12대의 기기가 필요하다.50% 를 테스트해보려면 최소 60대의 기기가 필요하다. 미국 시장으로 한정하더라도 66% 를 테스트해보려면 25대의 기기가 필요하고90% 정도를 테스트해보려면 128대의 기기가 필요하다고 하다. 2.1. 고객들은 어떤 기기를 사용하나요 -2016년 9월 기준 킷캣(KK)은 27.7%, 젤리빈(J.. 2018. 6. 23.
[android 보안] 안드로이드 보안 모델 #1 [android 보안] 안드로이드 보안 모델 출처 : Android Security Internals 1장개요 목차 1. 안드로이드 보안 모델 1.1. 안드로이드의 아키텍처 1.1.1. 리눅스 커널 1.1.2. 네이티브 사용자 공간 1.1.3. 달빅 가상 머신 1.1.4. 자바 런타임 라이브러리 1.1.5. 시스템 서비스 1.1.6. 프로세스 간 통신 1.1.7. 바인더 1.1.8. 안드로이드 프레임워크 라이브러리 1.1.9. 앱 1.2. 안드로이드 보안 모델 1.2.1. 앱 샌드박스 1.2.2. 권한 1.2.3. IPC 1.2.4. 코드 서명과 플랫폼 키 1.2.5. 다중 사용자 지원 1.2.6. SELinux 1.2.7. 시스템 업데이트 1.2.8. 검증된 부트 1.3. 요약 1.1. 안드로이드의 아.. 2018. 4. 14.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #49~#52 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #49~#52 출처 : Effective Objective-C #49 : 커스텀 메모리 관리 시맨틱을 가진 컬렉션을 만들기 위해 무비용 전환을 사용하라 무비용 전환은 Foundation 의 오브젝티브-C 객체와 CoreFoundation 의 C 데이터 구조체 간에 캐스팅을 할 수 있게 한다. CoreFoundation 으로 내려가 컬렉션을 생성하면 컬렉션이 자신의 데이터를 다룰 때 사용되는 다양한 콜백을 정의할 수 있다. 무비용 전환을 이용해 캐스팅하면 커스텀 메모리 관리 시맨틱을 갖는 오브젝티브-C 컬렉션을 만들 수 있다. #50 : 캐시가 필요할 때 NSDictionary 보다는 N.. 2017. 10. 21.
[Java Concurrency] 구성 단위 #1 [Java Concurrency] 구성 단위 #1 5.1. 동기화된 컬렉션 클래스 - 동기화되어 있는 컬렉션 클래스의 대표 주자는 Vector 와 Hashtable 이다. - JDK 1.2 부터는 Collections.synchronizedXxx 메소드를 사용해 이와 비슷하게 동기화되어 있는 몇 가지 클래스를 만들어 사용할 수 있게 됐다. 이와 같은 클래스는 모두 public 으로 선언된 모든 메소드를 클래스 내부에 캡슐화해 내부의 값을 한 번에 한 스레드만 사용할 수 있도록 제어하면서 스레드 안전성을 확보하고 있다. - 동기화된 컬렉션 클래스는 스레드 안전성을 확보하고 있기는 하다. 하지만 여러 개의 연산을 묶어 하나의 단일 연산처럼 활용해야 할 필요성이 항상 발생한다. - 동기화된 컬렉션 클래스는 대.. 2017. 4. 20.
[Effective Java] 다른 타입을 쓸 수 있는 곳에서는 String 사용을 피하자. [Effective Java] 다른 타입을 쓸 수 있는 곳에서는 String 사용을 피하자. - String 으로 다른 값 타입을 대체하는 것은 좋지 않다. 파일, 네트웍, 키보드 입력으로부터 데이터가 프로그램으로 전달될 떄 문자열 형식인 경우가 많고, 그것을 그대로 놔두려는 경향이 있다. 그러나 그것은 실제로 데이터가 원문 그대로일 때만 옳다. 만일 데이터가 숫자라면 int, float, BigInteger 와 같이 적합한 숫자 타입으로 변환되어야 한다. - String 으로 enum 타입을 대체하는 것은 좋지 않다. - String 으로 집합(aggregate) 타입을 대체하는 것은 좋지 않다. ex) className + "#" + value 이런 경우 문자열 분석을 해야 해 속도가 느리고, 코드가.. 2017. 2. 6.
[iOS Study] 웹 서비스와 UIWebView [iOS Study] 웹 서비스와 UIWebView 출처 : 아론 힐리가스의 iOS 프로그래밍 -NSURL URL 포맷에 웹 프로그램의 위치를 담고 있다. URL 은 여러 웹 서비스를 위해 기본 주소, 통신하고 있는 웹 프로그램, 전달 인자로 구성된다. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/ -NSURLRequest 웹 서버와 통신할 때 필요한 모든 데이터를 가진다. NSURL 객체와 캐시 정책, 웹 서버의 응답 제한 시간, HTTP 프로토콜을 통해 전달되는 추가 데이터 등을 가진다. NSMutableURLRequest 는 NSURLRequest 의 변경 가능한 .. 2016. 3. 15.
[Network] OSI 7 Layers - Layer 3 Network [Network] OSI 7 Layers - Layer 3 Network 출처, 참조 : http://luuzun.blog.me/50189217223http://defoenet.com/ccna/ Layer 3. 네트워크 계층 : 전송 경로의 설정 ( IP Address ) 인터넷상에서 패킷을 전송할 구체적 Logical 주소 설정. ( IP 주소 )Layer 4 에서 전달된 Packet 에 src IP, dst IP 를 추가한다.Shortest Path 를 정한다.Congestion Control 을 한다.Logical Address 를 Physical Address 로 전환한다. Layer 3 의 패킷 흐름. 준비 : 송신 컴퓨터가 게이트웨이(라우터)의 MAC 주소 확인1단계 : 목적지 MAC 주소 부.. 2014. 4. 12.
반응형