2016년 9월 23일 금요일

GUI 테스트 자동화

• Capture & Replay
- 테스트 수행 자동화
- 사용자의 GUI 를 통한 작업을 기록했다가 재생하는 방식

• GUI 테스트 자동화 기술의 진화
- 1세대 : Capture & replay raw events

• 마우스 클릭 이벤트와 좌표 기록했다가 재생
- 2세대 : Identify UI object

• MFC, Web 등의 object identification 기술 활용
- 3세대 : Identify graphical object

• Image identification and comparison
-> Test script 재사용성을 높이기 위한 다양한 시도


Sikuli(http://www.sikuli.org/)

•Automate anything you see on screen
-Screen 에보이는이미지를부분적으로캡쳐했다가찾는방식
-OpenCV엔진사용
-다양한Script 언어사용(Python, Ruby, JavaScript)


더보기       

SW 테스트자동화 기술및 산업분야별 적용사례

테스트 자동화 기술 개요

• 테스트 자동화의 목적
 - 반복적이고 시간이 오래 걸리는 일을 대신 해 주기
 - 귀찮은 일 덜어주기
• 테스트 자동화 분류 기준
 - 테스트 케이스는 무엇으로부터?
 - 테스트 구동은 어떻게?
• 테스트 자동화 기술
 - 코드 기반 테스트 자동화 기술
• 단위 테스트 자동화
• 커버리지 자동화
 - UI 기반 테스트 자동화 기술
• GUI Capture & replay


코드 기반 테스트 자동화 포인트
- 테스트 데이터 자동 생성
- 테스트 코드 자동 생성
- 테스트 자동 수행
- 테스트 결과 자동 검증



더보기      


모델 기반 개발의 장점과 방법


모델 기반 개발의 장점
-의사소통 원활
  •모델을 사용하므로 모호함이 줄어들고, 일관성이 좋아짐
-복잡성 관리 원활
  •모델링을 통해 복잡한 시스템을 추상화하고 분해하여 관리 가능
-설계 품질 향상
  •시스템에 대한 효율적이고 효과적인 탐구 가능
-재사용성 향상
  •통합된 모델 라이브러리를 구축하게 되어 재사용성 향상

모델 기반 개발 프로세스 적용의 효과
-모델링 가이드라인 / 코딩 가이드라인이 존재
-동일한 도구 및 기술을 적용하여 동일한 절차로 소프트웨어를 개발
-동일 개발 프로세스로 만들어진 산출물
  •누구나 해석/이해 가능, 재사용 가능
-개발 생산성 증대
  •재사용, 자동화에 의해 개발 시간 단축


더보기    

2016년 9월 22일 목요일

구글의 개발팀 구성



구글에는 수많은 소프트웨어 개발자가 있고 자유로운 개발 환경을 제공하고 있어 전세계 개발자의 부러움을 받고 있는 것이 사실이지만 구글에서 개발되는 모든 솔루션을 자체적으로 개발하지는 않는다. 구글에서 솔루션을 확보하는 방법은 크게 두가지로 인수합병과 오픈소스 프로그래밍이다. 트렌드를 앞서가는 신기술을 가진 회사를 가져오지만 인수합병 후에도 회사의 독립성을 지켜주며 개발 의지를 이어 나가도록 해주고, 널리 확산하고자 하는 신기술에 대해서는 오픈소스 프로그래밍으로 공개하여 전세계 개발자들이 참여하도록 유도한다.


<참고: 오픈소스 프로그래밍>

오픈소스 프로젝트는 일반적으로 급여를 받지 않고 미팅이나 정해진 매니저도 없다. 명세서, 혹은 설계서 마저 없다는 것도 전통적인 소프트웨어 개발 프로젝트와는 다른 특징 중의 하나 이다. 오픈소스 프로젝트에 참여하는 팀원은 개발의 순수한 즐거움과 경험치를 올리는 가치 상승을 목표로 하기 때문에 팀원의 흥미만 유발된다면 매우 만족스러운 결과를 얻을 수 있다는 장점이 있다. 오픈소스 프로젝트는 모든 것이 자율적으로 이루어지지만 높은 가치를 가지는 프로젝트는 기술 리딩이 가능한 몇 명의 팀원이 주도적으로 이끌어 가기도 한다. 이러한 리더들을 핵심 그룹(Core group)이라고 불리며, 핵심 그룹은 팀원들이 프로젝트에 공헌하고 있다고 느끼도록 확실한 동기를 지속적으로 부여해야 성공 확률이 높아진다. 최근 프로젝트는 오픈소스를 활용하는 경우가 많다. 일반적인 기업에서도 오픈소스 프로젝트를 통해 검증된 소프트웨어를 만들 수 있는 장점이 있지만 강제성이 없어 실패 확률이 높다는 단점도 있다.


구글은 인수합병이나 자유로운 분위기에서 창의적인 생각을 통해 솔루션 개발의 기획을 만들고, 필요한 경우 이 것을 더 발전시키기 위해 오픈소스 프로그래밍을 주도한다. 오픈소스 프로그래밍은 자신들의 아이디어나 기술이 외부에 오픈 되는 단점이 있지만 단기간에 많은 개발자가 참여할 수 있고 회사 밖의 시각을 반영하여 완성된 솔루션의 실패률을 낮출 수 있다.
구글은 제한된 기능을 제공하는 솔루션뿐만 아니라 앵귤러JS와 같은 웹 어플리케이션 프레임워크(그림9)를 제공하면서 사용자 수준이 아니라 개발자 수준까지 구글의 솔루션을 사용하도록 유도하고 있다. 이러한 유도는 개발자의 개발 환경까지 구글의 범주에 넣어둠으로써 구글 환경에 적합한 솔루션 개발이 자연스럽게 이루어지게 한다.

<그림9> 앵귤러JS 개발자 가이드


출처: https://angular.io/docs/ts/latest/guide/




구글의 솔루션 개발 과정 변화




초기의 구글은 웹 기반 솔루션 위주로 개발이 이루어졌다. 검색 사이트인 google.com이 시작이었으며, 이후 메일과 캘린더 서비스를 제공하며 개인 비서 솔루션을 제공하였고, 웹 드라이브, 유투브를 통해 멀티미디어 서비스, 사진과 버즈, 구글플러스 등을 통해 SNS 서비스를 출시하였다. 이러한 서비스는 당시에 마이크로소프트의 오피스처럼 반드시 구입해서 설치해야 하는 솔루션을 네트워크를 통해 제공하려는 전략을 앞세웠다. 이 외에 윈도우즈에 대항하기 위해 크롬 프로젝트를 통해 별다른 운영체제 없이 크롬 브라우저를 통해 위 서비스가 가능하도록 하는 오픈소스 프로젝트를 주도하기도 했다.


<그림6> 구글의 웹 기반 솔루션


모바일이 보급되면서 구글은 웹 기반으로 동작하던 모든 서비스를 모바일에서도 동작할 수 있게 전략을 수립한다. 모바일 용으로 별도 개발을 하는 것이 아니라 웹과 모바일 구분 없이 동작하게 함으로써 사용자 편의성을 추구한다. 구글의 이러한 노력은 안드로이드 사용자 확산으로 인해 더 체계적으로 구축할 수 있었다.



10년간 구글이 성사한 인수합병

구글은 웹 기반으로 서비스를 하던 것에서 안드로이드 적용으로 인해 모바일로 서비스가 점점 옮겨가는 것을 볼 수 있고, 더 나아가서는 웹과 모바일에서 동시에 사용이 가능한 형태로 솔루션과 서비스를 구성하게 된다. 애플은 독자적인 하드웨어에서 구동 되던 것에서 점차 다양한 디바이스에서 구동 되도록 공통 구성의 폭을 점차 늘려 나간 것을 볼 수 있다.
일반적인 관점으로, 구글의 사업 전략은 인수합병을 통해 사업 범위를 늘려가는 것으로 알려져 있다. 그림3은 구글의 10년 간 인수합병 결과를 나타내고 있고, 최근에는 그 빈도나 규모를 점점 더 늘려 나가고 있다. 이러한 전략은 빠르게 사업을 확장하고 중요 기술에 대한 확보가 편리하다.


<그림3> 10년간 구글이 성사한 인수합병


출처: 신한금융투자


보통의 ICT 인수합병의 경우, 특허나 사업의 합병을 통한 시장의 독점과 시너지 효과를 노리는 경우가 많다. 그런데, 그림4에서 보는 것처럼 구글은 현재의 사업과는 조금 다른, 특이한 인수합병을 하는 경우가 많고, 하드웨어보다는 소프트웨어 위주로 이루어졌다는 것을 확인할 수 있다.


<그림4> 구글 인수합병의 예


출처: 신한금융투자

더보기

2016년 9월 21일 수요일

Process Automation

»개발 프로세스가 존재한다는 것

모델링 가이드라인 / 코딩 가이드라인이 존재한다는 것
동일한 도구로 동일한 기술을 적용하여 동일한 절차로 소프트웨어를 개발한다는 것
동일 개발 프로세스로 만들어진 산출물은
  •누구나 해석/이해 가능
  •누구나 재사용 가능
(자동화 프로그램에 의해) 개발 시간을 단축
협업이 가능

»Systems & Software Process Engineering

Process 언어
 •Machine / Tool Readable Process (SPEM)
Process Engineering 도구
 •프로세스 정의 / 문서화 (Author)
 •프로젝트 특성에 따른 프로세스 조정 (Tailor)
 •Tailored 프로세스 공유 (Publish)
 •개발 진척상황, 산출물 상태, 위험/이슈 보고 (Report)
 •Tailored 프로세스 적용 (Deploy)
 •Tailored 프로세스 수행 측정 (Measure)
 •Tailored 프로세스를 기반으로 한 도구 연동 (Enact)
 •프로세스 수행 측정 결과를 기반으로 한 프로세스 개선 (Improve)



자세히 보기