반응형
Jake Seo
제이크서 위키 블로그
Jake Seo
전체 방문자
오늘
어제
  • 분류 전체보기 (715)
    • 일상, 일기 (0)
    • 백준 문제풀이 (1)
    • 릿코드 문제풀이 (2)
    • 알고리즘 이론 (10)
      • 기본 이론 (2)
      • 배열과 문자열 (8)
    • 데이터베이스 (15)
      • Planet Scale (1)
      • MSSQL (9)
      • 디비 기본 개념 (1)
      • SQLite 직접 만들어보기 (4)
    • 보안 (7)
    • 설계 (1)
    • 네트워크 (17)
      • HTTP (9)
      • OSI Layers (5)
    • 회고 (31)
      • 연간 회고 (2)
      • 주간 회고 (29)
    • 인프라 (52)
      • 도커 (12)
      • AWS (9)
      • 용어 (21)
      • 웹 성능 (1)
      • 대규모 서비스를 지탱하는 기술 (9)
    • 깃 (7)
    • 빌드 도구 (7)
      • 메이븐 (6)
      • 그레이들 (0)
    • Java (135)
      • 이펙티브 자바 (73)
      • 자바 API (4)
      • 자바 잡지식 (30)
      • 자바 디자인 패턴 (21)
      • 톰캣 (Tomcat) (7)
    • 프레임워크 (64)
      • next.js (14)
      • 스프링 프레임워크 (28)
      • 토비의 스프링 (6)
      • 스프링 부트 (3)
      • JPA (Java Persistence API) (5)
      • Nest.js (8)
    • 프론트엔드 (48)
      • 다크모드 (1)
      • 노드 패키지 관리 매니저 (3)
      • CSS (19)
      • Web API (11)
      • tailwind-css (1)
      • React (5)
      • React 새 공식문서 요약 (1)
      • HTML (Markup Language) (5)
    • 자바스크립트 (108)
      • 모던 자바스크립트 (31)
      • 개념 (31)
      • 정규표현식 (5)
      • 코드 스니펫 (1)
      • 라이브러리 (6)
      • 인터뷰 (24)
      • 웹개발자를 위한 자바스크립트의 모든 것 (6)
      • 팁 (2)
    • Typescript (49)
    • 리눅스와 유닉스 (10)
    • Computer Science (1)
      • Compiler (1)
    • IDE (3)
      • VSCODE (1)
      • IntelliJ (2)
    • 세미나 & 컨퍼런스 (1)
    • 용어 (개발용어) (16)
      • 함수형 프로그래밍 용어들 (1)
    • ORM (2)
      • Prisma (2)
    • NODEJS (2)
    • cypress (1)
    • 리액트 네이티브 (React Native) (31)
    • 러스트 (Rust) (15)
    • 코틀린 (Kotlin) (4)
      • 자바에서 코틀린으로 (4)
    • 정규표현식 (3)
    • 구글 애널리틱스 (GA) (1)
    • SEO (2)
    • UML (2)
    • 맛탐험 (2)
    • 리팩토링 (1)
    • 서평 (2)
    • 소프트웨어 공학 (18)
      • 테스팅 (16)
      • 개발 프로세스 (1)
    • 교육학 (1)
    • 삶의 지혜, 통찰 (1)
    • Chat GPT (2)
    • 쉘스크립트 (1)
    • 컴파일 (2)
    • Dart (12)
    • 코드팩토리의 플러터 프로그래밍 (4)
    • 플러터 (17)
    • 안드로이드 스튜디오 (1)
    • 윈도우즈 (1)
    • 잡다한 백엔드 지식 (1)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Next.js
  • 빈 검증
  • 디자인패턴
  • 서버리스 컴퓨팅
  • 러스트
  • 슬로우 쿼리
  • 외래키 제약조건
  • 자바 검증
  • 추상 팩터리 패턴
  • 싱글톤
  • NEXT JS
  • 메이븐 페이즈
  • item8
  • item9
  • prerendering
  • 플라이웨이트패턴
  • 자료구조
  • 알고리즘
  • item7
  • 이펙티브자바
  • 싱글톤 패턴
  • MSSQL
  • bean Validation
  • rust
  • 작업기억공간
  • 객체복사
  • try-with-resources
  • 자바 디자인패턴
  • Javadoc 자바독 자바주석 주석 Comment
  • 싱글턴
  • 프로그래머의 뇌
  • 이펙티브 자바 item9
  • 팩터리 메서드 패턴
  • 자바스크립트 인터뷰
  • 도커공식문서
  • 메이븐 골
  • 자바스크립트
  • Java
  • Pre-rendering
  • pnpm
  • 이펙티브 자바
  • 메이븐 라이프사이클
  • 자바
  • 스프링 검증
  • serverless computing
  • 참조 해제
  • 토비의 스프링
  • 느린 쿼리
  • 자바스크립트 면접
  • next js app

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jake Seo

제이크서 위키 블로그

소프트웨어 공학/테스팅

풀스택 테스팅, 챕터 1 풀스택 테스팅이란?

2023. 6. 25. 15:30

풀스택 테스팅, 챕터 1 풀스택 테스팅이란?

도입

테스트 분야가 정리된지 수십년이 지났지만 오늘날에도 여전히 테스트에 대한 이해가 다양하다. 필자는 이러한 현상을 테스트 담당 인재가 부족하기 때문에 발생한 것이라 생각한다.

이 책의 목표는 테스트를 처음 접하는 사람이 오늘날의 웹 및 모바일 애플리케이션 테스트에 필요한 모든 기술을 초중급자 수준 이상으로 향상시킬 수 있는 종합적인 자료가 되는 것이다.

소프트웨어 개발 팀의 역할

  • 좋은 품질의 소프트웨어를 제공해야 한다.
  • 플립카트와 야후는 경쟁사 대비 낮은 소프트웨어 품질로 인해 시장에서 살아남지 못했다.
    • 플립카트는 트래픽을 견디지 못했으며 야후는 검색품질이 떨어졌다.
  • 아무리 좋은 비즈니스 아이디어를 가지고 있더라도 소프트웨어 품질을 신경쓰지 않는다면 생각보다 빠르게 침몰할 수 있다.
  • 때로는 기업이 소프트웨어 품질보다 출시일정을 더 고려해야 할 수도 있으나 이 경우 기술부채가 쌓임을 유념해야 한다.

고품질 소프트웨어란?

오늘날의 소프트웨어 품질은 단순히 버그가 없는 소프트웨어가 아니다.

사용자 관점의 고품질 소프트웨어

  • 쉬운 사용성
  • 아름다운 디자인
  • 높은 보안성
  • 빠른 응답속도
  • 무장애

기업 관점의 고품질 소프트웨어

  • 높은 수익률 (부가가치)
  • 실시간 분석이 가능한 환경
  • 무중단 서비스
  • 벤더 독립성
  • 확장 가능한 인프라
  • 데이터 보안
  • 관련 법률 규정 준수

풀스택 테스트란?

  • UI, 서비스, DB 등 애플리케이션에 포함된 각 계층과 애플리케이션 전체를 테스트하는 것을 의미한다.

picture 1

풀스택 테스트의 주요한 관점

  • 테스트가 개발을 완료한 후 별도로 진행하는 독립적인 작업이라는 고정관념을 버려야 한다.
  • 풀스택 테스트는 개발과 병행되며 빠른 피드백을 얻기 위해 전달 주기 내에서 수행되어야 한다.

시프트 레프트 테스트

시프트 레프트 테스트에 대한 자세한 설명 포스팅 참고

  • 시프트 레프트 테스트는 광범위한 테스트를 수행한다.
  • 자동화된 CI (Continuous Integration) 과 지속적 전달 (Continuous Delivery) 프로세스에 크게 의존한다.
  • CI/CD 프로세스는 마이크로 및 매크로 수준에서 품질 검사를 자동으로 수행하며, CI 서버에서 지속적으로 실행된다.
  • 이는 작업을 수동으로 테스트하는 것과 비교했을 때 노력과 비용이 훨씬 더 적게 든다.

picture 1

  • 3-아미고 프로세스: 비즈니스 담당자, 개발자, 테스터가 모여 기능을 자세히 검토한다. 담당자는 각자의 고나점에서 통합, 앳지 케이스, 누락된 비즈니스 요구사항을 검토한다.
    • 동시에 비즈니스 담당자는 UX 디자이너와 협력하여 애플리케이션 설계를 검증하고 개선한다.
  • 반복 계획 회의 (Iteration planning meeting): 사용자 스토리를 자세히 논의하고 요구사항을 팀 차원에서 다시 검증한다.
  • 스토리 킥오프: 3-아미고 프로세스의 축소 버전으로 특정 사용자의 스토리 요구사항과 엣지 케이스를 깊이 있게 다룬다.

기타 품질검사

  • 개발자: 유닛테스트, 정적코드 분석을 CI 에 통합
  • 개발자 혹은 테스터: UI 기반 기능 테스트 작성

피드백 받기

  • 첫번째 피드백은 개발자의 로컬 환경에서 실행되는 자동화 된 테스트로 받는다.
  • 두번째 피드백은 커밋 후 CI 에서 실행되는 자동화된 테스트 (유닛, 서비스, UI 등) 에서 받는다.
  • 세번째 피드백은 데브 박스 테스트, 비즈니스 담당자, 테스터, 개발자의 컴퓨터에서 수동 탐색적 테스트를 빠르게 수행하여 새로 개발한 기능을 빠르게 검증한다.

시프트 레프트 테스트의 특징

소프트웨어 개발의 모든 단계에서 다양한 역할의 구성원이 품질 검사에 참여하기 때문에 '품질은 팀 전체의 책임이다'를 강조한다.

10가지 풀스택 테스트

  • 수동 탐색적 테스트
  • 자동화된 기능 테스트
  • 지속적 테스트 (CI/CD)
  • 데이터 테스트
  • CFR 테스트
  • 시각적 테스트
  • 보안 테스트
  • 성능 테스트
  • 접근성 테스트
  • 모바일 테스트

수동 탐색적 테스트

수동 탐색적 테스트에 대한 세부 설명

  • 주어진 요구사항만 수행하는 단순 수동 테스트와 다르다.
    • 사용자 스토리에 기록된 것 외에도 다른 시나리오를 도출하고 시뮬레이션하고 애플리케이션의 작동을 관찰하는 기술이다.
  • 논리적이고 분석적인 사고를 요구하며 버그 없는 애플리케이션을 만들기 위해 필요하다.

자동화된 기능 테스트

  • 사람의 개입 없이 자동으로 요구사항을 테스트한다.
  • 자동화된 테스트의 안티패턴을 찾고 이를 피할 수 있어야 한다.
  • 애플리케이션의 크기가 커질수록 자동화 테스트의 의미가 커진다.

지속적 테스트 (CI/CD)

  • 보통 CI/CD 라고 불려서 품질 검사를 파이프라인에 통합하고 테스트를 간편하게 자주 실행하는 것을 말한다.
  • 기업은 이를 통해 조기에 수익을 창출하고 사용자의 피드백을 기반으로 제품 전략을 빠르게 평가하고 조정할 수 있다.

데이터 테스트

  • 기능 흐름과는 별개로 데이터 흐름에 대한 새로운 테스트 케이스를 수행하는 것이다.
  • 다양한 유형의 데이터 저장 및 처리 시스템 (데이터베이스, 캐시, 이벤트 스트림 등) 에 대한 지식과 적절한 테스트 케이스를 도출할 수 있는 능력을 필요로 한다.

시각적 테스트

  • 사용자에게 시각적으로 조화로움과 쾌적함을 제공할 수 있는지 검증하는 단계이다.
  • 웹 애플리케이션의 UI 구성 요소가 서로 상호 작용하는 방식을 이해해야 한다.

보안 테스트

  • 민감정보 유출, 법적 처벌, 브랜드 평판에 손해를 끼칠 수 있는 보안 관련 기본적인 테스트를 수행한다.

성능 테스트

  • 애플리케이션에서 주요 성능 지표를 측정하는 것이다.
  • 자동화하고 CI 파이프라인에 통합하여 지속적인 피드백을 얻을 수 있다.

접근성 테스트

  • 장애를 가진 사람이 애플리케이션을 쉽게 이용할 수 있게 해주는 테스트다.
  • 법에서 요구하는 접근성 기준을 이해하고 자동화된 검사 도구를 이용한다.

교차 기능 요구사항 (CFR, Cross Functional Requirements) 테스트

  • 가용성, 확장성, 유지보수성, 관찰 가능성 같은 요구사항을 테스트한다.
  • 기능적 요구사항은 앞단에서 관심을 끌 수 있는 품질이지만 CFR은 뒷단에 있는 중요한 품질 요구사항이다.
  • 기업, 소프트웨어 팀, 최종 사용자에게 만족스러운 결과를 안겨주기 위해 필수적이다.
  • CFR 은 역설적으로 비기능 요구사항 (NFR, Non Functional Requirements) 이라고 불리기도 한다.

모바일 테스트

  • 최근 폭발적으로 증가한 모바일 기기에 대한 테스트이다.
  • 모바일 테스트 도구로 수행된다.
반응형
저작자표시 비영리 (새창열림)

'소프트웨어 공학 > 테스팅' 카테고리의 다른 글

테스팅에서 사용되는 기본 용어 5가지: 기능, 사용자 흐름, 테스트 케이스, 엣지 케이스  (0) 2023.07.01
수동 탐색적 테스트란?  (0) 2023.07.01
풀스택 테스트 혹은 풀스택 테스팅 (Fullstack Testing) 이란?  (0) 2023.07.01
Shift Left Testing 이란?  (0) 2023.06.25
계층구조형 (BDD, Behave Driven Development) 테스트 작성법  (0) 2022.07.26
    '소프트웨어 공학/테스팅' 카테고리의 다른 글
    • 수동 탐색적 테스트란?
    • 풀스택 테스트 혹은 풀스택 테스팅 (Fullstack Testing) 이란?
    • Shift Left Testing 이란?
    • 계층구조형 (BDD, Behave Driven Development) 테스트 작성법
    Jake Seo
    Jake Seo
    ✔ 잘 보셨다면 광고 한번 클릭해주시면 큰 힘이 됩니다. ✔ 댓글로 틀린 부분을 지적해주시면 기분 나빠하지 않고 수정합니다. ✔ 많은 퇴고를 거친 글이 좋은 글이 된다고 생각합니다. ✔ 간결하고 명료하게 사람들을 이해 시키는 것을 목표로 합니다.

    티스토리툴바