2015년 10월 16일 금요일

SW 품질관리자가 주도해야 할 5가지 보안테스트 원칙

소프트웨어 개발 프로젝트 기간 내 품질 보증 담당자들은 ( 또는 팀 ) 보안 테스트에 있어 기존 개발 프로세스보다 더 큰 역할을 수행해야 합니다 . 품질 보증 담당자는 개발자 관점이 아닌 사용자 관점에서 보안 테스트에 대한 역할을 주도해 나가야 합니다 . 본 보고서에서는 보안 전문가와 품질 보증 전문가들이 응용프로그램 보안 테스트 수행을 위한 5 가지 기본 원칙들을 제안합니다 .
  1. 조기 참여하여 보안 요구사항의 개선을 위한 작업을 수행
  2. 사용자 인터페이스 테스트로 시작
  3. 주요정보가 있는 곳을 알아내고 모든 가능한 경로를 보호
  4. 각 개발자들의 강·약점을 이해하고 거기에 맞춰 테스트를 수행
  5. 응용프로그램이 할 수 없는 것에 대한 테스트와 에러 메시지에 세심한 주의

애자일 개발팀이 주목해야 할 SW품질관리 3가지 핵심요소

성공적으로 애자일 방법론을 적용했으며 , 스크럼 팀으로서 교육단계와 성장단계를 통해 업무를 잘해내고 있음에도 불구하고 , 일반적으로 문제는 테스팅 작업을 거의 강조하지 않는 새로운 개발에서 시작됩니다 . 이 글에서는 품질이 우수한 제품을 생산하기 위해 스크럼과 테스트 팀의 능력 모두를 향상시킬 수 있는 세 가지 방법을 제안합니다 . 강한 의사소통 라인을 구축하고 , 테스트 시기를 유연하게 하며 , 제품이 개발됨에 따라 개선되는 빠르고 효과적인 테스팅 방법들을 사용하는 테스트 가치를 향상시킴으로써 품질관리개선에 기여할 것입니다 .

  • 강한 의사소통체계 구축하기 (1)
  • 강한 의사소통체계 구축하기 (2) - 스크럼 팀을 편안한 분위기로 만들기
  • 유연한 테스트 시기
  • 빠르고 효과적인 테스트 방법

요구사항의 성공적 기술을 위한 6가지 핵심요소

소프트웨어 개발 프로젝트 활동 중 , 비즈니스 이해관계자들로부터의 프로젝트 성공을 위한 정의 즉 , ‘ 시스템 요구사항 ’ 을 면밀히 기술하는 것은 매우 중요한 활동임입니다 . 그럼에도 불구하고 비즈니스 이해관계자들은 이에 대한 사항들을 잘 얘기하지 않으며 , 프로젝트 팀 구성원들도 이를 도출하기 위한 작업을 간과하기가 쉽습니다 . 본 장에서는 프로젝트 팀 구성원들이 요구사항을 보다 잘 기술할 수 있도록 하기 위한 상식적인 6 가지 조치들을 제안하고자 합니다.
  1. 이해관계자들이 요구사항을 구체화 할 수 있도록 가이드하라
  2. SW 테스트 수행자들을 조기에 참여시켜라
  3. 이해관계자들의 관점으로 성공을 정의하라
  4. SW 요구사항 재사용 환경을 조성하라
  5. 요구사항은 비즈니스 규칙을 따른다
  6. 프로젝트 이해관계자들에게 승인절차를 용이하게 하라

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를 통한 원격지의 충돌 해결

2015년 10월 14일 수요일

[SW공학동영상 7화] Relationship between Automotive SPICE and ISO 26262


  • A-SPICE / ISO 26262 Process Mapping
  • Major work products in A-SPICE Engineering Process
  • Mapping between A-SPICE ENG and ISO 26262
  • A-SPICE / ISO 26262 Integrated Engineering Process