'2009/10'에 해당되는 글 3건

  1. 2009/10/21 간단한 자바스크립트 성능 체크 리스트. (1)
  2. 2009/10/12 UI테스트는 불가능한가? (2)
  3. 2009/10/06 UI단 성능 측정 도구 dynatrace. (3)
아래 원문을 보고 간단히 번역해봤습니다.
(오역이 많으니 가능하면 원문을 보시는게 좋을것 같습니다.)
뭐 아래 같은 얘기는 많이 들어봤을텐데 다시 상기시키는 차원에서 보면 좋을것 같습니다.
개인적으로는 Smash같은 경우는 첨 들었고 "문법설탕(syntactic sugar)을 제거하였나요?" 이 부분은 뭔가 고민되네요.


원문: http://slowjavascript.com/

  1. 스크립트 테그의 위치가 올바른가요?
  2. DOM Monster에서 확인 해보셨나요?
  3. 헤더에 캐시가 적용되었나요?
  4. 여러개의 파일을 합치고 한줄로 만들어서 캐시하게 만들었나요?
  5. 축소하고 압축(Gzip)하였나요?
  6. Smash을 이용하여 css sprite와 favicon을 만들었나요?
  7. 프래임워크를 확인해봤나요?
  8. 잘못 사용하는 timer들은 없나요?
  9. Dom을 최대한 효율적으로 사용했나요?
    • 노드 탐색
    • 이벤트 버블링과 캡쳐
    • innerHTML
    • 투명 이미지
    • 스타일
    • 복잡도
  10. Ajax를 적절하게 사용했나요?
  11. 코드를 간단하게 만들었나요?( 변수 할당, 연산자들, 리터럴들)
  12. 지나치게 완벽하게 만든 코드들을 수정하였나요?(Strip out excessive cleverness)
  13. 효율적으로 정규표현식을 사용했나요?
  14. JSON을 사용했나요?
  15. 정규식을 캐시하여 사용했나요?
  16. 클로져, 전역변수, 리터럴들을 조심해서 사용했나요?
  17. 가장 효율적인 구문을 사용했나요?
  18. 가장 효율적인 반복문을 사용했나요?
  19. 객체의 속성들을 가장 효율적으로 사용했나요?
  20. 변수들은 캐시해서 사용했나요?
  21. 메모리 릭을 최대한 제거했나요?
  22. 효율적으로 arguments를 사용했나요?
  23. 문법설탕(syntactic sugar)을 제거하였나요?
  24. 루프를 사용하지 않고 펼쳐서 사용하거나 적절하게 사용했나요?
  25. iPhone을 위해 최적화를 했나요?



DOM Monster

Thomas Fuchs(scriptaculs 제작자)와 AmyHoy(디자이너)가 만든 프로파일링 툴

Smash
이미지의 품질을 지키면서 용량을 줄이는 웹 도구.

문법설탕(syntactic sugar)
개발할때 코드를 읽기 쉽거나 사용하기 쉽게 하기 위해서  만든 문법을 말한다.
사용하기에는 편하나 성능면에서는 비효율적일수 있다.

지나치게 완벽하게 만든 코드들을 수정하였나요?(Strip out excessive cleverness)
- 이 부분은 제가 이해하기로는 "추후를 예측하여 현재 불필요한 코드를 만들어서 성능에 영향을 미치는 경우"와 같은 류를 말하는것 같습니다.


Posted by Mixed
좀더 자세히 말하면 UI테스트가 불가능하다기 보단 자동화된 UI테스트가 불가능한것 같다.
사실 테스트만 잘되면 자동화하는 작업은 그렇게 힘들지 않는다고 생각한다.
하지만 UI쪽 테스트 자체가 힘들기 때문에 자동화된 테스트가 안되고 그렇기 때문에 테스트가 잘되고 있는것 같지 않다.
그래서 왜 UI쪽 테스트가 불가능한가 정리를 해볼까 한다.



개인적으로 UI개발의 테스트를 자동화 할수 있다면 정말 혁신적인 일이라 생각하고 아마 수많은 시간과 돈이 save될거다.
(지식이 부족한지 몰라도 내가 알기론 없다. 있다면 제발 누군가 알려줬으면 좋겠다.)
그럼 먼저 UI개발이란 말이 좀 명확하지 않으니  HTML, Javascript, CSS을 가지고 개발하는 것으로 정하자. Flash,Silverlight등은 제외.


첫째, 테스트 할 조건이 너무 많다.

크게 OS는 window, Mac, Linux... 브라우져는 IE, Firefox, Safari, Opera... 어림 잡아 12가지이다. 근데 버전별로 하면.... 생각하기 힘들 정도로 많다. 게다가 프레임워크나 컴퍼넌트 같은 경우는 어떤 상황에서도 정상적으로 작동해야 하는데 DTD로 인해 영향을 미치는 경우가 있다. 그럼 또 경우에 수는 상상하기 싫을 정도로 많아진다.이렇게 많은 종류에 환경을 갖추고 테스트를 하기란 정말 힘들기 때문에 자동화된 테스트를 하기가 힘들다.

이정도 되면 UI개발자 입장에서 정말 세상에 단일OS와 단일 브라우져만 있다면 좋겠다라는 생각을 한다.

이렇게 테스트 할 조건이 많고 만약 테스트가 자동화 되지 않았다면 비용이 너무 많이 들어서 사실상 테스트 하는건 한계가 있다.




둘째, 테스트 자체가 불가능한 경우가 많다.

사실 첫번째 같은 경우 환경을 갖추기는 어렵지만 할수 있는 일이다.
돈과 시간만 있다면 몇대 PC에 버철머신 설치 해가면서 환경을 갖출 순 있다.
(testswarm, selenium grid같은걸로 하면 자동화 하면 되나 일반적으로 힘들다고 말하는것임)

환경을 갖춘다고 해도 테스트를 만드는것 자체가 힘든 경우가 많다.
먼저 자바스크립트 같은 경우는 일반적으로 테스트가 가능하다.
Ajax, Timer등의 테스트들 같은 경우 까다롭긴 하지만 mock을 사용하던지 테스트 가능하게 레이어를 올리던지 가능하다.

하지만 로직상 정상적으로 작동하지만 실제 브라우져에서 정상적으로 작동하지 않는 기능들 같은 경우는 힘들다. 대부분이 이벤트를 가지고 하는 작업들이 그렇다.
네이티브 브라우져 이벤트를 다루면 해결할것 같은데 이건 쉽지 않다. 예전에 selenium-ice라는게 이런 문제를 해결해 줄거라고 생각했는데 프로젝트가 더이상 진행되지 않는것 같아 정말 아쉽다.

디자인이 엮이면 힘들다.
예를 들면 로직상은 정상인데 css랑 엮이면서 디자인 자체가 일그러지는 현상들.
이런 현상들이 생각 보다 굉장히 많다.
그래서 자동화를 하기 위해 selenium에 capture기능을 써서 이미지를 떠서 비교를 하려고 했으나 쉽지 않았고 반자동화로 진행하려고 했으나 역시 쉽진 않았다.

CSS 자체는 테스트를 어떻게 해야 할지 감이 안잡힌다.
CSS가 변경이 되면 영향이 미치는 경우가 많다. 그래서 어디서는 이런 방법으로 테스트를 한다고는 하지만 실제로 보니 크게 도움이 될까?라는 의구심이 든다.
그리고 위에서 말한 capture기능도 생각보다 굉장히 비효율적이라 딱히 방법이 떠오르지 않는다.



정리하면.
  1. 환경이 너무 많다.
  2. 브라우져 자체에서 실행시켜야만 알수 있는 에러는 찾기 힘들다.
  3. 렌더링에 따라 눈으로 발견하는 에러는 찾기 힘들다.
  4. CSS를 어떻게 테스트 해야 할지 모르겠다.
이다.

계속 고민은 하지만 딱히 떠오르는 방법이 없다.-_-;
아무리 찾아봐도 없는걸 보면 아직 해답을 못찾았다고 생각하고 계속 실험하고 탐구해봐야 하는 영역인듯;;

참고로 일부가 불가능하다고 해서 안하는게 낫다라고 말하는게 아니다.
오해하지 마시길.

ps. TEST는 그렇다고 하고 과연 세계적으로 UI개발에 대한 퀄리티를 어떻게 측정하며 하는곳이 얼마나 있을까?

Posted by Mixed
UI 개발을 한 후에 성능 테스트를 하려고 하면 쓸만한 도구가 없다.

물론 각종 프로파일링 툴로 확인도 하지만 매우 부족하다.

예로 처음 로딩시 초기 UI를 구성하기 까지 시간을 측정했을 때
네트워크 시간, javascript 시간, 랜더링 시간 이렇게 구분하려고 하면
상당히 원시적인 방법으로 해야했다.
(물론 내가 못본 툴이 있을수도 있겠지만 다들 만족스런 결과는 아니였다.)

그나마 지금 까지 본 툴중에는 젤 그럴듯 하게 지원하는 툴이 아마 dynatrace인것 같다.

일단 무료다.-_-;
그리고 사용법은 이곳에 동영상을 보면 쉽게 이해 할수 있어서 스킵.

잠깐 이것 저것 해본 결과 괜찬다고 생각하는 기능 몇가지를 소개할까 한다.
(정확한지는 모르겠다)
1. graph로 어디가 병목인지 알게 쉽게 되어 있었다.
사용자 삽입 이미지

위의 그림에서 보면 이벤트, javascript, network 이렇게 3가지로 구분하여 비용현황을 볼수 있다.

2. 시간의 순서대로 페이지에 어떤일이 있어났는지 확인이 가능하다.
사용자 삽입 이미지


3. 무엇이 가장 시간이 오래 걸리는지 한눈에 확인이 가능하다.
사용자 삽입 이미지

여기에는 랜더링 시간, 함수 시간, ajax등 모두 포함되어 있다.

아직 윈도우에 IE만 지원한다.(추후 firefox지원 예정)
하지만 지금꺼 보아온 성능 툴과 비교하여 편하게 좋은 데이터를 볼수 있어 좋은것 같다.

혹시 UI개발에 성능 측정 도구가 필요하다면 dynatrace을 사용하라고 추천하고 싶다.

Posted by Mixed