2015년 10월 15일 목요일

안드로이드 소프트웨어를 위한 테스트케이스 생성 도구

Ⅰ . 서론
최근 안드로이드 소프트웨어의 숫자가 날로 증가하고 있는 동시에 사용자들의 요구 수준도 함께 높아지고 있다 . 이에 따라 소프트웨어의 품질을 높이기 위한 테스트과정의 중요성도 두드러지고 있다 .

안드로이드 소프트웨어의 품질을 높이기 위해서는 GUI 에 대한 검증이 선행되어야 한다 . 하지만 , GUI 테스트과정은 GUI 뿐만 아니라 그 내부 동작 및 사용자의 사용 흐름에 대한 테스트까지도 포함해야 하므로 각 테스트케이스를 생성하고 재현하여 테스트하는 과정이 복잡하고 이에 많은 시간이 소요되는 문제점을 내포하고 있다 . 이를 해결하기 위한 GUI 테스트 기법들 중에서 편리성과 테스트의 정확성으로 인해 현재 가장 많이 사용되고 있는 RPB(Record-Play Back) 기법을 적용한 테스트케이스 생성도구를 제안한다 .
RPB 기법은 대상 프로그램 , 대상 동작에 따라 테스트케이스를 각각 생성해야하기 때문에 대상 프로그램에 대한 종속성이 생기고 테스터의 비효율적인 노동을 증가시킨다 . 또한 , 안드로이드 소프트웨어에 적용하기 위해서는 임베디드 특성에 대한 추가적인 고려가 필요하다 .

이러한 문제점 해결을 위해 원시코드와 테스트코드의 분리를 위하여 테스트정보를 메타화하고 메타데이터와 원시코드를 결합하여 테스트케이스를 생성하는 방식을 제안한다 . 이러한 구조의 사용은 테스트코드의 종속성 제거는 물론 테스트정보의 가독성과 유연성을 높일 수 있다 .

Ⅱ . GUI 테스트 기법


Ⅲ . RPB 기반 소프트웨어 테스트케이스 생성 도구

  1. 기반 정보 구성
  2. 테스트정보 생성과정
  3. 테스트케이스 생성과정
  4. 실행화면
  5. 특징

Ⅳ . 결론

SW테스팅 비용절감을 위한 4가지 Tip

모든 소프트웨어 테스팅 기술들 중에서 품질을 희생하지 않고 비용을 절감하는 방법이 있다면 기업들이 언제나 환영할 것입니다 . 여기서 제공하는 팁의 목표는 어떤 테스트 팀이라도 새로운 도구들 구입이나 다른 비용 투자 없이 , 보다 빠르게 적용할 수 있도록 하는 구체적인 단계를 제공하는 것입니다 . 여기서 제안하는 조언은 소프트웨어 테스트 비용은 절감하고 품질은 높이는 연구를 기반으로 하며 , 네 개의 새로운 소프트웨어 테스트 기법을 소개하고자 합니다 .

Tip 1: 일반적 실수에 대한 고려
실수는 언제 어디서나 발생할 수 있음에 따라 모든 실수를 방지하려는 노력은 엄청난 고비용과 비효율적인 것으로 판명이 났으나, 계속된 실수는 방지할 수 있는 사항임.

Tip 2: GUI 환경 하에 테스트 자동화
자동화 테스트 때에 모든 빌드에 높은 수준의 함수를 요구하는 코드를 작성하는데 집중하는 것이 필요함.

Tip 3: 문서화하는 시간 축소
테스터들은 응용프로그램을 수정 보완하는 작업에만 시간을 많이 소비하는 것은 아니며, 많은 시간이 소비되는 작업 중 하나는 문서화 즉 작업을 계획하고, 한정하며, 최신상태로 유지하기 위한 문서를 업데이트하는 것임.

Tip 4: 스크립트 작성 대신 테스터 교육 수행
애자일 테스팅 데이즈에서 헤인즈의 첫 번째 질문은 시스템에 익숙하지 않은 신임 테스터들을 대하는 방법임

자세히 보기 →

GIT 핵심을 활용하는 프로젝트 개발 part 2

GIT 기반의 온라인 협업 개발

Ⅰ. 프로젝트 협업개발과 GIT
개인이 진행하는 프로젝트가 아니라면 프로젝트 구성원들과 같이 개발하는 건 당연하다. GIT은 협업 개발을 지원하기 위해서 GIT Server를 제공한다. 내 로컬의 .git 디렉토리 안에 모든 commit정보가 포함되어 있지만, 이것은 내PC에서 일어난 일이고, 이를 동료, 프로젝트 구성원과 공유해야 하는데 이것을 가능하게 하기 위해서는 GIT Server를 구축하거나 GITHUB 와 같은 온라인 호스팅 서비스를 이용하면 된다. 이렇게 구축된 Server에 내가 개발한 내용을 업로드하고 프로젝트 구성원이 확인한 후, 다시 이를 받아서 수정하고 업로드 하는 과정이 가능하다. GIT server라는 건 자체적으로 구축1) 할 수도 있지만, 본 문서에서는 그 과정을 생략하고 대표적인 GIT호스팅 서비스인 GITHUB를 통한 GIT 온라인 협업 과정을 살펴본다.

Ⅱ. GITHUB 협업 개발 시나리오

기본적인 협업의 시나리오
  • 내가 개발 한 코드를 commit하고GITHUB에 업로드 한다(push) 
  • 동료 B는GITHUB에서 소스코드의 변경사항을 내려 받는다 (pull) 
  • 동료 B는 코드를 수정하고 다시GITHUB에 업로드 한다(push)
1. 기본적인 협업 개발 방법
2. GITHUB협업 중 발생하는 충돌문제의 해결
3. pull이 아닌 fetch와 merge를 통한 원격지의 충돌 해결