'Technical Note/TEST AUTOMATION'에 해당되는 글 11건

Technical Note/TEST AUTOMATION

1. 정형화 및 내재화 되어 있는 테스트 프로세스가 없어서 모든 테스트 케이스를 자동화하면 망하는 사례

현재 우리 회사 : 빌드를 시도 때도 없이 자주 내려줌  —> 매일 반복적인 테스트만 겨우겨우 하고 있음

이상황에서 테스트 자동화를 적용하려 할때…

난관 어느 부분까지 적용해야 할까

테스트 자동화는 자동화 할수있는 영역과 없는 여역


—————

1. 자동화 테스트 프로세스 정형화

2. 대대적인 GUI 변경으로 인하여 현재까지 개발이 완료된 스크립트들은 모두 버려져야 함




끄적끄적

릴리즈 노트 빌드 노트 등등 

jenkins 사용법 



Technical Note/TEST AUTOMATION

1. 테스트 자동화가 기본적으로 갖춰야 할 틀인 자동화 프레임웍에 대해서


모바일 crash 재현을 시작으로 프레임 웍 개발까지
- ~ 어플리케이션이 예기치 않게 종료되었습니다 란 메세지와 함께 종료
- 이런 메세지 조차 없이 버튼하나 눌렀는데 앱 종료
- 앱은 살아있는데 반응이 없는 경우
—> 음.. 장기적인 구동으로 인한 메모리 릭일수있음 
—> 그래서 프로그램은 계속 무한히 구동시켜서 재현해보자
—> 결과로는 얼마나 스크립트가 구동되었다가 죽었는가? 몇번이나 반복에서 스크립트가 동작했가? 
—> 스크립트 시작, 일시정지, 오동작 시, 예외상황시 모두 로그에 기록
—> 실제 메모리가 얼마나 할당되는지 알기 위해 작업관리자도 함께 봄
—> 테스트 하면서 프로세스의 메모리를 얻어와 기록하는 작업도 함꼐 해 볼까
—> 보기 좋은 레포트 기능 


단순한 스크립트라 할지라도 사실은 굉장히 많은 기능 또는 프로그램 내부적인 함수들을 거치는 경우가 많다.
이를 모르는 상태로 접근하면… 잘못된 접근을 하게 되어 시간낭비 할수있다.

프레임웍에서 제공했으면 하는 기능
1. Setup 기능 : OS 및 App 설치 및 테스트에 필요한 설정 자동 설치
2. Excution 기능 : Full 기능 테스트 자동화 / 주요 기능 테스트 자동화 / 성능 테스트 자동화 / 
기본적으로 간단한 스크립트로 장시간 수행해야 하는 테스트는 충분히 커버할 것이다. 
3. Analysis 기능 : 부석을 위해서 스크립트 구동에 대한 로깅과, 구동중 메모리에 대한 로깅은 기본적으로 제공해야 함. 
예) 예외상황에 fail 처리 / 작동 중지 팝업 발생 시 fail 처리
4. Reporting 기능 
5. Help 기능 : 공유할 수있는 문서나 자주 스는 스크립트의 기본 함수는 문서나 설명으로 정리, 공유하도록 

중요 
과도한 자동화나 목적에 맞지 않는 자동화는 실패하기 쉽다




Technical Note/TEST AUTOMATION

nhn 테스트고도화 팀 - NTS


모바일 서비스 늘어나고 있음
단말 파편화
해상도 차이
os version
동일한 서비스가 통신사 별로 차이?

오토잇


테스트 자동화가 전체 테스트 케이스에서 어느정도 적용을 하나요?
적용 범위
포기할때 까지 기다려라


remote Based —> 글로벌 한 서비스는 적용해 보면 좋을듯
nhn은 perfecto mobile 을 선택  (device 1개당 2500만원)
support 엔지니어가 이스라엘 ㅋㅋㅋ 지원이 어려움
그 이유는 다양한 플랫폼 지원때문에 (글로벌한 서비스가 많다보니깐)

나라와 그나라 통신사 마다 단말 연결
text를 가지고 
이미지 베이스 로 스크립트 작성
셀레니엄 안드로이드 드라이버도 지원



selendroid
안드로이드 자동화 도구
네이티브 하이브리드 앱 웹 모두 가능
한글입력이 안됨


webkuli
한글입력이 됨
이미지 기반 sikuli 를 올려서
키워드 기반
print element 키워드 이용
쳇팅 테스트도 가능


질문 : 스크립트 안에서 정합성 체크할텐데 그러다 보면 스크립트가 복잡해 질텐데 그 부분은 어떻게 커버를 하시나요? 
쳬크가 어려운 경우는 스크린샷 또는 레코딩을 하여 산출물을 뽑지는 않나요?
기능 테스트가 목적이 아니므로 sleeptime을 충분히 주지 않음
1초 정도로만

정합성체크는 거의 다 구현


그외로 스크린샷을 뜬다거나 레코드 기능을 하는가?
스크립트 작성은 누가 몇명정도  4명 



질의 응답
소나큐브  추천 플러그인 : 비주얼라이제이션에 초첨 
ci 환경 구성시 팁 : 

메모프로젝트 


Technical Note/TEST AUTOMATION

mongoDB : jmeter 2.11

hadoop : 플러그인 추가


plugin 구조로 되어 있어 확장 가능 —> 가장 좋음


tomcat 7, 8에서 websocket 프로토콜 지원 가능


http recording이 가능

브라우저의 프록시 서버 설정을 통해서

 

ui 테스트 가능

jenkins와 jmeter 연동이 가능?


성능테스트자동화

jenkins 와 grinder 연동 가능?



응답시간을 서버 time과 network time으로 나눌수있다

latency time —> 첫번째 버퍼가 왔을때 

나머지 두번째 부터 마지막 까지 왔을때를 네트워크 타입

Technical Note/TEST AUTOMATION

소프트웨어 품질 

크게 2가지 : Functional (소프트웨어가 무슨 what 동작을 하느냐) / nonFunctional (어떻게 how 동작을 하느냐)

non functional : 코드 품질 관리로 가능

품질 관리 하면 생각나는 것은 : 가장 많이 하는것은 코드리뷰 

코드 품질 관리는 개발자 부터 시작하는것이 맞다 

현재 코드리뷰의 목적을 잘 달성하고 있는가? 

코드리뷰는 바로바로 해야 하는데.. 현실에서는 쉽지 않다

이유는 리뷰할 시간이 없다  리뷰하는 사람이 해주겠지라고 생각함

잘 돌아가면 그냥 릴리즈해

왜 이렇게 제대로 되지 않는가? 

눈에 보이지 않는 코드 품질을 보여줘야 한다.

그럼 실제로 눈으로 보이지 않는 코드를 그럼 관리해보자 그리고 품질을 높혀보자



그 툴로 대표적으로 sonarqube가 있는데…

기존의 정적분석 도구는 시간에 따른 버그의 추이 여러 프로젝트의 결과의 비교를 보여주지 못한다. 단발성으로만 결과를 보여주는데 이것은 플랫폼 즉, 결과 관리, 추적, 비교 등등이 가능하기때문에 플랫폼이라고 부를수있다. 

소나큐브는 프로파일을 통해서 일관된 품질 관리 가능

기준에 만족하지 못하면 그에대한 노티 및 다시 개발을 요청 등이 가능 : Quality gate

개발 언어의 장벽을 많이 해결해줌

소나큐브가 코드 품질을 관리하는 기준으로 7가지가 있다

이런 요소들을 각 소스파일이나 프로젝트에 퀄리티 프로파일이라는 룰 셋을 만들어서 적용할수있다.

쿼트 gate를 통해서 품질 관리 종료등을 관리할수있다.

find bug 등의 결과와 같은 결과를 얻을수있음 (같은 소스로 구현됨)

플러그인을 통한 기능 확장 가능

metrics : 품질결과를 수치적으로 관리

developer tools : 플러그인을 개발할수있는

gevernance

languages : 한국어는 없음

localization : 

visualization / reportin :  품질 결과 시각화

developer’s seven deadly sins: 7가지 실수 항목에 맵핑시켜서 관리

1. 적절하지 않은 아키텍처ㅗ아 설계 

코드 복잡도를 계산하는 매트릭스중 하나 : cyclometric complicity

2. 중복코드 관리 

3. 단위테스트 : tdd 개념 테스트 코드를 먼저 만들어야 한다…는 생각에서 관리

4. 코드 복잡도 관리 : 

5.  잠재적인 발생 가능성 있는 버그 : 코딩 룰 

드릴 다운 피처 : 파일 단위단위에 대한 검증 가능 

공수산정 : 코드 품질을 상향시키는데 걸리는 공수 계싼가능 커스터마이징 가능

6. 널리 알려진 코딩 표준 : 25 개 정도의 툴과 연동이 가능

7. 주석 관리 : public class에 대한 주석 관리

코드 품질의 위의 7가지 항목으로 봐야 한다. 


더 집중화된 품질을 관리하기 위해서는 

품질 프로파일

한줄 하줄이 코딩 룰 —> 각 프로젝트에 맞게 잘 조합해서 사용가능 

프로파일이라고 하는 룰 셋을 만듬

threadhold 값을 가지고 통화했는지 종료 여부 판단가능

현재 좋은 상태로 가는지 나쁜상태로 가는지 확인가능 : 트렌드 정보를 통해



지금부터는 소나큐브를 실제로 돌려보자

ci로 사용되는 jenkins 와 어떻게 통합되는지


먼저 소스 

jenkins를 통해서 코드 빌드시 소나를 통해 코드 리뷰


빌드시작 —> 단위테스트 후 빌드시 소나큐브를 부름 —> 빌드 하면서 바로 코드 품질 확인 —>   그 결과는 소나 서버에 떨어짐 —> 정적분석이 완료되면 빌드 성공


코드 프로파일 = 룰 

심각도도 조정가능 

설명 및 해당 룰을 위반하지 않게 하려면 어떻게 코드를 작성해야 하는지 가이드


플러그인 센터를 통해서 플러그인 관리 추가 가능



중점 : 지속적인 통합환경 활용 /  drill-dow 




상용도구와 오픈소스 도구 

Fauls positive/ nagative


정적분석 프로세스의 어려움 

—> 개잘자의 능력을 판단하는 문화는 피해야 함

—> 사람이 항상 개입해야 한다.

1 2 3
블로그 이미지

zzikjh