테스트 관련 강좌2025. 2. 17. 08:00

대기업(대규모 서비스를 제공 하는 앱)대상 품질 관리 기준은 어떻게 수립할지 알아보았어요

 

품질 관리 기준

 

품질을 정량화하고, 품질관리 기준을 개발하며, 끊임없이 더 좋은 방향을 찾기 위해 노력하고 있습니다.

QA Engineer가 어떻게 품질지표 수립 할수 있을지 알아보았습니다.

 

# 품질지표를 수립하는 과정

 

 

품질지표를 수립하는 과정은 체계적이고 다단계적인 접근이 필요합니다.

 

1. 목표 정의

  • 품질 목표 설정: 제품 또는 서비스의 품질 목표를 명확히 정의합니다.
    예를 들어, "앱의 충돌 비율을 0.1% 이하로 유지"와 같은 구체적인 목표를 설정합니다.

 

2. 지표 선정

 

  • 핵심 품질 지표(KPIs;Key Performance Indicators) 선택:
    프로젝트의 성공을 측정할 수 있는 핵심 성과 지표를 선택합니다.

    이는 다음과 같은 항목을 포함할 수 있습니다:
    • 결함 밀도: 코드 라인 수 대비 발견된 결함의 수.
    • 테스트 커버리지: 전체 코드 중 테스트가 적용된 비율.
    • 평균 복구 시간(MTTR;Mean Time to Repair): 시스템 장애 발생 시 복구에 걸리는 평균 시간.
    • 고객 만족도: 사용자의 피드백과 평가를 반영한 만족도 점수.
핵심 품질 지표(KPIs;Key Performance Indicators)란?
KPIs는 조직의 목표 달성 여부를 평가하기 위한 주요 성과 지표를 의미합니다. 이를 통해 조직의 성과를 측정하고 개선할 수 있는 부분을 파악하게 됩니다.

KPIs의 주요 특징

  • 구체적: 명확하고 측정 가능한 목표를 설정합니다.
  • 측정 가능: 성과를 정량화하여 분석할 수 있습니다.
  • 관련성: 조직의 목표와 직접적으로 관련된 지표를 선택합니다.
  • 시간 제약: 정해진 기간 내에 성과를 평가합니다.

예시

  • 고객 만족도: 고객의 피드백을 통해 서비스 품질을 평가합니다.
  • 결함 밀도: 코드 라인 수 대비 발견된 결함의 수를 측정합니다.
  • 평균 응답 시간: 고객 요청에 대한 평균 응답 시간을 측정합니다.

KPIs는 조직의 성과를 객관적으로 평가하고 개선 방향을 제시하는 중요한 도구입니다.

 

3. 데이터 수집 및 분석

  • 자동화 도구 활용: Jira, Jenkins, SonarQube 등의 자동화 도구를 활용하여 실시간으로 데이터를 수집하고 분석합니다.
Jira, Jenkins, SonarQube?

Jira

  • 이슈 상태: 버그, 작업 항목, 개선 사항 등의 진행 상태.
  • 작업 추적: 각 작업 항목의 시작 및 완료 시간, 작업 담당자.
  • 보고서: 스프린트 리포트, 번다운 차트, 벨로시티 차트 등을 통해 팀의 성과를 시각화.

Jenkins

  • 빌드 상태: 빌드 성공 여부, 빌드 시간, 빌드 횟수.
  • 테스트 결과: 테스트 실행 결과, 성공한 테스트와 실패한 테스트의 수.
  • 배포 상태: 배포 성공 여부, 배포 시간, 배포 환경 정보.

SonarQube

  • 코드 품질 지표: 코드 복잡도, 중복 코드 비율, 코드 커버리지 비율.
  • 결함 정보: 발견된 결함의 수, 심각도, 결함 유형.
  • 보안 취약점: 코드 내 보안 취약점 분석 결과.

이 데이터를 통해 팀은 소프트웨어 개발 과정에서의 문제점을 신속하게 파악하고, 코드 품질과 프로젝트 진행 상황을 실시간으로 모니터링하며, 필요한 조치를 취할 수 있습니다.

 

Jira, Jenkins, SonarQube를 함께 사용하여 개발 과정에서의 효율성과 품질을 극대화


이 도구들은 각각의 역할을 수행하면서도 상호 연동되어 데이터를 실시간으로 주고받으며, 전체적인 프로세스를 자동화하고 최적화할 수 있습니다.

Jira

  • 이슈 및 작업 관리: Jira에서 생성된 이슈는 Jenkins 빌드와 연동될 수 있습니다.
  • 예를 들어, Jira에서 특정 이슈가 열리면 Jenkins가 자동으로 해당 작업을 빌드하고 테스트할 수 있습니다.

Jenkins

  • 지속적 통합 및 배포: Jenkins는 JIRA와 연동되어 빌드 및 배포 과정을 자동화합니다.
  • 빌드가 완료되면 그 결과를 JIRA에 업데이트할 수 있습니다.
  • 테스트 실행: Jenkins는 SonarQube와 연동되어 코드 분석을 자동으로 실행하고, 결과를 SonarQube에 전달합니다.

SonarQube

  • 코드 품질 분석: SonarQube는 Jenkins로부터 전달받은 코드 베이스를 분석하고, 결과를 실시간으로 JIRA에 업데이트하여 이슈를 생성할 수 있습니다.

연동 예시

  1. 이슈 생성: JIRA에서 이슈가 생성되면 Jenkins가 이를 감지하고 빌드 및 테스트를 자동으로 실행합니다.
  2. 빌드 및 테스트: Jenkins가 코드 빌드 및 테스트를 실행하고, SonarQube를 통해 코드 품질을 분석합니다.
  3. 결과 업데이트: 분석 결과는 SonarQube에 저장되며, JIRA에 자동으로 업데이트되어 이슈의 상태가 변경됩니다.

이렇게 연동된 시스템을 통해 개발팀은 실시간으로 이슈 상태를 확인하고, 코드 품질을 모니터링하며, 빠르게 문제를 해결할 수 있습니다.

 

 

  • 로그 분석: 애플리케이션 로그를 분석하여 성능 문제나 버그를 발견합니다.

4. 목표와 실적 비교

  • 정기적 보고: 정기적인 보고서를 통해 목표와 실제 성과를 비교하고 차이를 분석합니다.
  • 회고 및 개선: 회고 미팅을 통해 발견된 문제점과 개선점을 논의하고 다음 스프린트에 반영합니다.

5. 지속적인 개선

  • 카이젠: 지속적으로 품질을 개선하기 위한 작은 변화를 실행합니다.
  • 교육과 훈련: 팀원들이 최신 QA 도구와 기법을 습득할 수 있도록 정기적인 교육과 훈련을 실시합니다.
카이젠 (Kaizen)은 일본어로 "개선"을 의미하며, 지속적인 개선을 목표로 하는 경영 철학이자 방법론입니다. 카이젠의 핵심은 작은 변화를 지속적으로 쌓아가며 큰 개선을 이루는 것입니다. 주로 제조업에서 시작되었지만, 현재는 다양한 산업 분야에서 활용되고 있습니다.

카이젠의 주요 원칙

  1. 작은 변화: 큰 변화를 이루기 위해 작은 개선을 꾸준히 실천합니다.
  2. 모든 사람의 참여: 모든 직원이 개선 활동에 참여하고 아이디어를 제안합니다.
  3. 낭비 제거: 불필요한 자원 낭비를 줄이고 효율성을 극대화합니다.
  4. 즉각적인 실행: 개선 아이디어를 빠르게 실행에 옮깁니다.
  5. 지속적인 개선: 개선 활동은 단발성이 아닌 지속적으로 이어져야 합니다.

카이젠의 예시

  • 생산 공정 개선: 불필요한 이동을 줄이기 위해 생산 라인 재배치.
  • 업무 프로세스 개선: 문서화 절차 간소화 및 자동화 도입.
  • 고객 서비스 개선: 고객 피드백을 반영하여 서비스 개선.

이처럼 카이젠은 조직의 전반적인 효율성을 높이고, 품질을 향상시키는 데 중요한 역할을 합니다.

 

예시

만약  앱의 결함 밀도를 줄이기 위한 품질지표를 수립하려 한다면:

  1. 목표: 결함 밀도를 0.5 결함/코드 라인 이하로 유지.
  2. 지표: 주간 결함 발견 수, 테스트 커버리지 비율, 고객 피드백 점수.
  3. 데이터 수집: JIRA 및 SonarQube를 통해 실시간 데이터 수집 및 분석.
  4. 비교: 목표와 실적을 주간 보고서로 비교.
  5. 개선: 발견된 문제를 다음 스프린트 계획에 반영하여 개선.

 

테스트 커버리지 비율(Test Coverage Ratio)은 소프트웨어 테스트에서 코드가 얼마나 테스트되었는지를 측정하는 지표입니다.
이를 계산하기 위해 몇 가지 방법이 있으며, 가장 일반적인 두 가지는 라인 커버리지(Line Coverage)와 브랜치 커버리지(Branch Coverage)입니다.

라인 커버리지(Line Coverage)

라인 커버리지는 테스트가 실행된 코드 라인의 비율을 나타냅니다.

라인 커버리지=테스트된 코드 라인 수/전체 코드 라인 수 전체 코드 라인 수 ×100
 

예를 들어, 전체 코드 라인이 100라인이고, 그 중 80라인이 테스트되었다면:

라인 커버리지=80/100×100=80%
 
 

브랜치 커버리지(Branch Coverage)

브랜치 커버리지는 코드의 조건문(예: if, switch)이 얼마나 테스트되었는지를 나타냅니다.

브랜치 커버리지=테스트된 브랜치 수/전체 브랜치 수×100
 

예를 들어, 전체 브랜치가 10개이고, 그 중 7개가 테스트되었다면:

브랜치 커버리지=7/10×100=70%
 

메소드 커버리지(Method Coverage)

메소드 커버리지는 테스트가 실행된 메소드의 비율을 나타냅니다.

이를 통해 전체 메소드 중 몇 퍼센트가 테스트되었는지를 확인할 수 있습니다.

 

계산 방법: 메소드 커버리지 = (테스트된 메소드 수 / 전체 메소드 수) * 100

예시: 

 

전체 메소드 수 = 50
테스트된 메소드 수 = 40

메소드 커버리지 = (40 / 50) * 100 = 80%

클래스 커버리지(Class Coverage)

클래스 커버리지는 테스트가 실행된 클래스의 비율을 나타냅니다.

 

이를 통해 전체 클래스 중 몇 퍼센트가 테스트되었는지를 확인할 수 있습니다.

 

계산 방법: 클래스 커버리지 = (테스트된 클래스 수 / 전체 클래스 수) * 100

예시: 

 

전체 클래스 수 = 20
테스트된 클래스 수 = 15

클래스 커버리지 = (15 / 20) * 100 = 75%

 

각 프로젝트의 특성과 필요에 따라 적절한 방법을 선택하여 사용할 수 있습니다.

 

지속적으로 높은 품질의 서비스를 제공하고, 사용자 만족도를 높일 수 있을 것입니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터