LINE에서 테스트를 최적화하는 방법

주싱·2021년 12월 8일
0

더 나은 테스트

목록 보기
3/16

아래의 LINE 엔지니어링 블로그 글을 읽고 정리합니다.

LINE에서 테스트를 최적화하는 방법 - LINE ENGINEERING

테스트를 최적화 해야 하는 이유

사용자가 원하는 것

  • 사용자는 완벽한 앱을 원합니다. 사용자는 앱에서 작은 실수만 발견해도 바로 떠나버립니다. (맞춤법 오류, 성능 문제, 불편 등)

우리가 원하는 것

  • 반면 개발자는 사용자가 오랫동안 우리 앱을 사용해 주기를 바랍니다.
  • 그래서 개발자는 사용자의 기대를 충족시키기 위해, 사용자가 떠나지 않게 하기 위해 많은 것을 해야합니다. (좋은 기능을 구현하고, 여러 기기를 지원하고, 여러 브라우저를 지원하고...)
  • 그러나 우리는 제한된 자원과 촉박한 일정 속에 있고, 이를 극복해야 합니다.

우리가 할 수 있는 것

  • 제한된 자원과 촉박한 일정 속에서 우리는 모든 것을 최적화 해야 합니다. (특별히 이 글에서는 테스트 최적화를 다룹니다)
  • 테스트에 필요한 자원은 대부분은 테스트 케이스를 준비하고 테스트를 실행하는 데에 들어갑니다.
  • 테스트 실행에 소요되는 자원과 시간은 테스트 케이스의 질과 양에 좌우되기 때문에 테스트 케이스를 최적화하면 자연스럽게 테스트 실행을 최적화할 수 있습니다.
  • 우리는 테스트에 설계 기법을 적용함으로 그리고 몇 가지 테스트 관리 전략을 적용함으로 테스트 최적화를 수행할 수 있습니다.

테스트 설계

왜 테스트를 설계해야 하는가

  • 테스트 케이스를 만드는 방식을 각자의 경험에 기반해서 만드는 방법과 설계 기법에 기반한 방식 두 가지로 나누어 볼 수 있습니다.
  • 경제적인 여유와 시간이 있는 한 건축가가 자신의 집을 짓는다고 가정해 봅시다. 그는 자기의 경험을 기반으로 천천히 시간을 들여 자기만의 집을 지을 수 있습니다.
  • 반대로 완공일정이 정해져 있고, 공사 비용도 한정되어 있는 50층 짜리 빌딩을 한 건축사에서 짓는다고 가정해 봅시다. 이 경우에는 개인의 경험만으로 빌딩을 짓기는 어렵습니다. 검증되고 잘 정리된 설계 기법이 필요합니다.
  • 마찬가지로 복잡한 기능을 갖추고 성능에도 신경 써야하며 개발 기간에도 제한이 있는 소프트웨어를 만들 때에는 검증되고 잘 정리된 설계 기법이 필요합니다.

어떤 설계 기법을 적용할 것인가?

아래 테스트 설계 기법들을 신중히 적용하면, 방대한 모든 입력 조합을 테스트 하는 대신, 효과적인 테스트 케이스(테스트 커버리지를 높이는)를 골라서, 전체 테스트 케이스 개수를 획기적으로 줄일 수 있습니다.

테스트 설계와 함께 적용하면 좋은 세 가지

좋은 테스트 케이스를 만들려면 설계 기법만으로는 충분하지 않습니. 라인에서는 이와 더불어 공통 테스트 케이스를 재사용하고, 테스트 케이스를 구조화 하며, 테스트 케이스를 분할합니다.

공통 테스트 케이스 재사용

  • 공통으로 사용할 수 있는 테스트 케이스를 지속적으로 관리하며, 새로운 테스트 케이스가 도출되면 꾸준히 목록을 업데이트 합니다.

테스트 케이스 구조화

  • 두 번째는 전체 테스트 케이스를 구조화 하는 일입니다.
  • 테스트 케이스를 구조화하면 테스트를 리뷰하는 시간, 테스트를 업데이트 하는 시간, 테스트 실행 시간 까지 줄일 수 있습니다.
  • 예를 들면 다음과 같이 테스트를 구조화 합니다.
1. General UI
2. Main functional cases
3. Validation cases
4. Others (Navigation, UX, specific requirement...)
5. Base on experience

테스트 케이스 분할

  • 간혹 시간을 절약하기 위해 작은 테스트 케이스를 큰 테스트 케이스에 결합해야겠다고 생각할 수 있습니다.
  • 그러나 그렇게 되면 다음과 같은 문제들이 발생할 수 있습니다.
    1. 테스터가 하나의 시나리오에 집중하지 못해 몇몇 케이스를 놓칠 수 있습니다.
    2. 첫 번째 단계의 실패가 전체 케이스의 실패로 보여져, 버그를 확인하기 위해 긴 케이스를 다시 실행해야 할 수 있습니다.
    3. 실제 몇몇 위험이 되는 조건을 확인하기 위해 긴 테스트 케이스를 실행해야 할 수 있습니다.
    4. 테스트 보고서도 불분명해 질 수 있습니다.

마치며

그래서 테스트를 최적화하면 제한된 자원과 시간으로도 우리와 고객이 원하는 최고의 소프트웨어 품질을 얻을 수 있습니다.

profile
소프트웨어 엔지니어, 일상

0개의 댓글