전체 글
CSS 접두사 (CSS Prefix, webkit, moz, ms, o) 가 의미하는 것은?
CSS 접두어 (CSS prefix) CSS 접두어에는 -webkit-, -moz-, -ms-, -o- 등이 존재한다. CSS 속성이 여러 브라우저에서 작동하도록 하는데 이용된다. 각 브라우저에는 CSS 를 해석하고 웹페이지를 렌더링하는 엔진이 있다. 모든 엔진이 CSS 를 같은 방식으로 해석하지는 않는다. 특히 실험적인 기능이나 새로 등장하는 기능들에 대해서는 더 그렇지 않은데, CSS 접두어는 이러한 경우에 중요한 역할을 한다. 각 접두어에 매칭되는 브라우저 이름 -webkit-: 크롬, 사파리, 새 버전의 오페라 브라우저에 대한 접두어이다. iOS 환경에서의 거의 모든 브라우저에 대해서도 해당한다. -moz-: 파이어폭스에 쓰이는 접두어이다. -ms-: 마이크로소프트의 브라우저에 쓰이는 접두어이다...
HTML 메타 태그 중 Pragma 지시어 (Pragma directives) 란?
Pragma directives (Pragma 지시어) 란? 웹 브라우저에 특정 HTTP 헤더를 관리하는 방법에 대한 "지침(directives, instructions)" 을 제공하는데 사용된다. Pragma 지시문은 태그에서 http-equiv 속성을 사용한다. 웹페이지 동작에 상당한 영향을 미친다. Pragma 지시어를 이용한 캐싱 제어 예제 살펴보기 Pragma 지시어를 통해 클라이언트측 캐싱을 활성화 혹은 비활성화 할 수 있다. 개요 Pragma 의 내용을 "캐시 없음(no-cache)" 으로 설정하면 브라우저는 웹페이지를 캐시하지 않는다. 페이지에 액세스할 때마다 서버에서 페이지의 새 버전을 검색한다. HTML 에 Pragma 지시어 입력하기 HTML 의 섹션에 위와 같은 태그를 추가할 수 있..
테스팅에서 사용되는 기본 용어 5가지: 기능, 사용자 흐름, 테스트 케이스, 엣지 케이스
기능 애플리케이션이 최종 사용자에게 가치를 제공하는 방법이다. 로그인 기능은 보안을 제공한다. 사용자 흐름 최종 사용자가 앱에서 수행하는 일련의 작업이다. 로그인을 위해 자격 증명을 입력하고 로그인한다. 테스트 케이스 기능이 원하는대로 동작하는지 검증하는 일련의 작업이다. 기능을 완전히 탐색하려면 긍정적, 부정적 테스트 케이스를 모두 수행해야 한다. 긍정적 테스트 케이스 (Positive test case) 올바른 자격 증명을 넣었을 때 로그인이 되는지 확인한다. 부정적 테스트 케이스 (Negative test case) 틀린 자격 증명을 넣었을 때 로그인이 실패하는지 확인한다. 엣지 케이스 매우 드물게 발생하는 부정적 테스트 케이스로 시스템이 기대하지 않은 값을 입력하거나 비정상적으로 시스템을 조작하는..
수동 탐색적 테스트란?
수동 탐색적 테스트란? 요구사항 문서나 사용자 스토리에 없는 다양한 상황에서 애플리케이션의 작동을 탐색하고 이해하는 활동이다. 사람의 분석 능력이나 예리한 관찰 능력에 기대어 새로운 사용자 흐름이나 버그를 발견한다. 전체 애플리케이션이 배포된 테스트 환경에서 수행된다. 요구사항 문서에 기술된 작업들을 수동으로 수행하고 검증하는 일반 수동 테스트와는 다르다. 문서화된 것 이상으로 탐색하여 버그를 찾는다. 요구사항 기능 구현 및 검증에 초점을 맞추다가 놓친 부분을 찾는 것이다. 이 과정에서 새로운 테스트 케이스를 추가하게 되기도 한다. 비즈니스 요구사항, 기술 구현 세부사항, 최종 사용자의 요구 사항 3가지를 충족시키는 것을 목표로 한다.
풀스택 테스트 혹은 풀스택 테스팅 (Fullstack Testing) 이란?
풀스택 테스팅, 챕터 1 풀스택 테스팅이란? 도입 테스트 분야가 정리된지 수십년이 지났지만 오늘날에도 여전히 테스트에 대한 이해가 다양하다. 필자는 이러한 현상을 테스트 담당 인재가 부족하기 때문에 발생한 것이라 생각한다. 이 책의 목표는 테스트를 처음 접하는 사람이 오늘날의 웹 및 모바일 애플리케이션 테스트에 필요한 모든 기술을 초중급자 수준 이상으로 향상시킬 수 있는 종합적인 자료가 되는 것이다. 소프트웨어 개발 팀의 역할 좋은 품질의 소프트웨어를 제공해야 한다. 플립카트와 야후는 경쟁사 대비 낮은 소프트웨어 품질로 인해 시장에서 살아남지 못했다. 플립카트는 트래픽을 견디지 못했으며 야후는 검색품질이 떨어졌다. 아무리 좋은 비즈니스 아이디어를 가지고 있더라도 소프트웨어 품질을 신경쓰지 않는다면 생각보..
이펙티브 자바, 쉽게 정리하기 - item 72. 표준 예외를 사용하라
이펙티브 자바, 쉽게 정리하기 - item 72. 표준 예외를 사용하라 표준 예외를 사용해야 하는 이유 표준이기 때문에 다른 개발자가 내 코드에서 예외의 의미를 이해하기 쉬워진다. 클래스를 적게 만들어 성능상의 이득도 있다. 자바 라이브러리에서 충분한 수의 예외를 제공해줘서 일반적인 경우 표준 예외로 전부 처리가 가능하다. 직렬화에도 용이하다. 표준 예외 중 자주 쓰이는 것들 IllegalArgumentException 이름 그대로 잘못된 인수를 넘겼을 때 던져주는 예외이다. ex) 사람의 나이 설정에 음수를 넘겼을 때 관례적으로 null은 NullPointerException을 이용한다. IllegalStateException 객체의 상태가 메서드 수행에 적합하지 않을 때 객체 초기화 자체가 제대로 되..
이펙티브 자바, 쉽게 정리하기 - item 71. 필요 없는 검사 예외(checked error) 사용은 피하라
이펙티브 자바, 쉽게 정리하기 - item 71. 필요 없는 검사 예외(checked error) 사용은 피하라 검사 예외의 단점 try-catch 혹은 throws 를 강제한다. 이 과정에서 많은 개발자들이 귀찮다는 이유로 잘못된 예외 처리 로직을 작성하거나 예외처리 로직에서 아무 행위도 하지 않기도 한다. 검사 예외가 발생하는 메서드는 스트림 안에서 해당 메서드를 직접 사용할 수 없다. 단, 프로그래머가 이 검사 예외로 인해 의미있는 조치를 취할 수 있다면 괜찮은 조치일 수도 있다. 예외 상황에 대처하지 못하는 경우의 예 try { // ... } catch (TheCheckedException e) { throw new AssertionError(); // 일어날 수 없다! } try { // ....
이펙티브 자바, 쉽게 정리하기 - item 70. 복구할 수 있는 상황에는 검사 예외를 프로그래밍 오류에는 런타임(비검사) 예외를 사용하라
이펙티브 자바, 쉽게 정리하기 - item 70. 복구할 수 있는 상황에는 검사 예외를 프로그래밍 오류에는 런타임(비검사) 예외를 사용하라 예외의 4가지 종류 예외는 throwable 타입이라고 한다. 예외는 검사, 비검사 예외가 있으며 하위 예외로 런타임 예외와 에러가 있고 각각의 목적이 있다. 검사 예외 (Checked Exception) 비검사 예외 (Unchecked Exception) 런타임 예외 (Runtime Exception) 에러 (Error) 검사 예외와 비검사 예외는 예외 처리를 강제하냐 아니냐의 차이가 있다. 예외별 간단 사용 지침 검사 예외: 호출하는 쪽에서 복구하리라 여겨지는 상황에 사용한다. catch 로 복구하거나 밖으로 퍼트려(throws) 복구할 가능성이 있다. 복구할 가..
이펙티브 자바, 쉽게 정리하기 - item 69. 예외는 진짜 예외 상황에만 사용하라
이펙티브 자바, 쉽게 정리하기 - item 69. 예외는 진짜 예외 상황에만 사용하라 예외가 아닌 상황에 예외를 사용했을 때 try { int i = 0; while(true) { range[i++].climb(); } } catch (ArrayIndexOutOfBoundsException e) { } 위 코드의 의도는 일반적인 반복문에서 반복문도 매 반복마다 배열의 경계를 넘는지 검사하고, JVM도 배열에 접근할 때마다 경계를 넘는지 검사하는데, 그 중복을 없애서 성능 최적화를 하려던 의도이다. 결과적으로는 잘못된 추론을 근거로 성능을 높여보려 한 것이 된다. 위 추론이 잘못된 이유 JVM 구현자 입장에서는 위 같은 코드가 빠르게 돌아갈지에 대해서는 전혀 고려하지 않을 것이다. 예외는 예외를 처리하는데..
이펙티브 자바, 쉽게 정리하기 - item 68. 일반적으로 통용되는 명명 규칙을 따르라
이펙티브 자바, 쉽게 정리하기 - item 68. 일반적으로 통용되는 명명 규칙을 따르라 자바 언어의 명명 규칙 철자와 문법 2가지로 나뉜다. 철자 규칙 패키지, 클래스, 인터페이스, 메서드, 필드, 타입 변수의 이름을 다룬다. 특별한 이유가 없는 한 반드시 따라야 다른 개발자들의 오해로 인한 실수가 생기지 않는다. 패키지 명명법 .으로 구분하여 계층적으로 이름을 짓는다. 보통 인터넷 도메인 이름을 역순으로 사용한다. ex) com.google 표준 라이브러리 및 선택적 패키지는 java와 javax로 시작한다. 이름은 보통 8자 이하의 짧은 단어로 한다. utilities -> util 약어라면, abstract window toolkit -> awt와 같이 가능하다. 클래스와 인터페이스 명명법 열거타..
이펙티브 자바, 쉽게 정리하기 - item 67. 최적화는 신중히 하라
이펙티브 자바, 쉽게 정리하기 - item 67. 최적화는 신중히 하라 최적화에 대한 생각 최적화는 보통 해로운 결과로 이어진다. 특히나 견고한 구조를 해치는 최적화는 하지말자. 빠른 프로그램보다는 좋은 프로그램을 작성하자. 좋은 프로그램은 개별 구성요소의 내부를 독립적으로 설계 가능한 것이다. 시스템의 나머지에 변화를 주지 않고도 내가 원하는 부분에 변화를 줄 수 있는 것이다. 설계를 이용해 성능 올리는 방법 성능을 제한하는 설계를 피하라 설계적인 요소는 완성 후 변경하기가 가장 어렵다. API, 네트워크 프로토콜, 영구 저장용 데이터 포맷 등이 대표적이다. 완성 후 변경이 어렵거나 불가능할 수도 있고, 시스템 성능도 크게 제한할 수 있다. API를 설계할 때 성능에 주는 영향을 고려하라 public ..
이펙티브 자바, 쉽게 정리하기 - item 66. 네이티브 메서드는 신중히 사용하라
이펙티브 자바, 쉽게 정리하기 - item 66. 네이티브 메서드는 신중히 사용하라 네이티브 메서드란? C, C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드이다. 자바 네이티브 인터페이스(JNI)라는 기술에 의해 호출된다. 네이티브 메서드의 쓰임 레지스트리와 같이 플랫폼 특화 기능을 사용한다. 네이티브 코드로 작성된 기존의 라이브러리를 활용한다. 성능 개선 목적으로 성능에 중요한 부분만 네이티브 메서드를 쓴다. 다만 성능을 개선할 목적으로 네이티브 메서드를 사용하는 것조차 거의 권장하지 않는다. 네이티브 메서드를 쓴다면? 성능 개선 목적으로 쓰지말자. JVM은 빠른 속도로 발전해왔고, 현재는 특수한 경우가 아니면 네이티브 메서드가 필요 없을 정도로 많이 빨라졌다. 단, 다중 정밀 연산 라이브러리(G..