본문 바로가기
CS/SW공학

[SW공학] 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트

by jangThang 2023. 4. 28.
반응형

 소프트웨어 공학에서는 유닛테스트, 통합 테스트, 시스템 테스트, 인수 테스트를 거쳐 개발을 완료하게 됩니다. 해당 테스트 과정을 자세히 알아보겠습니다.

 

[ Contents ]

     

     

    1. 단위 테스트 (Unit Testing)

    (설계상) 최소 단위인 '모듈(Module)'의 동작 검증

     

     '유닛 테스트' 라고도 불립니다. 주로 모듈 개발 후, 제대로 동작하는지 화이트박스 기법으로 테스트합니다.

     

    2023.04.28 - [CS] - [SW공학] 화이트박스 테스트, 블랙박스 테스트의 개념과 종류

     

    [SW공학] 화이트박스 테스트, 블랙박스 테스트의 개념과 종류

    소프트웨어 공학의 테스트 기법에는 크게 화이트박스 테스트와 블랙박스 테스트가 있습니다. 해당 테스트 기법의 개념과 종류에 대해서 알아보겠습니다. [ Contents ] 1. 화이트박스 (White Box) 테스

    star7sss.tistory.com

     

     테스트를 위해서 상호작용하는 다른 객체를 임시로 생성하기도 하는데, 이를 Mock Object(가짜 객체)라고 합니다. 또한 요청에 대해 미리 정해둔 결과를 출력하는 Stub과 그 요청을 주기 위해 만든 임시 Driver를 만들기도 합니다.

     최근 TDD(Test Driven Development)의 인기로, 이러한 단위테스트를 지원하는 라이브러리나 템플릿이 많습니다. 이를 적절히 사용하시면 좋겠습니다.

     

     

     

    2. 통합 테스트 (Integration Testing)

    모듈을 통합하는 과정에서, 각 모듈 간의 인터페이스와 관련된 결함이 있는지 검증 

     

     단위테스트로 검증이 끝난 모듈들을 결합한 후, 각 모듈간 상호작용이 잘 일어나는지 확인하는 단계입니다. 단위 테스트에서는 오류가 없더라도, 모듈 간 파라미터나 공유 데이터에서 문제가 생기는 경우가 있습니다.

     통합 테스트는 통합하는 방식에 따라 달라집니다. 크게 4가지 방식이 있으며, 아래에서 살펴보겠습니다.

     

     1) 하향식 통합 (Top Down)

    최상위 모듈부터 점차 하위 모듈 방향으로 통합하며 테스트

     상위 모듈부터 통합하기 때문에, 아직 통합하지 않은 하위 모듈의 입출력을 대신해줄 Stub이 필요합니다.

     

     

     2) 상향식 통합 (Bottom Up)

    최하위 모듈부터 점차 상위 모듈 방향으로 통합하며 테스트

     하위 모듈부터 통합하기 때문에, 호출을 대신 해줄 Driver가 필요합니다.

     

     

     3) 동시식 통합 (Big Bang)

    모든 모듈을 한꺼번에 통합한 후 테스트

     우주의 창조가 '빅뱅'으로 인해 한순간에 일어났듯이, 모듈 통합을 한 번에 해버리는 걸 '동시식 통합'이라고 합니다.

     다만 오류 발생 시 결합 원인을 찾기 어려우며 통합시간도 오래 걸린다는 단점이 있습니다.

     

     

     4) 연쇄식 통합 (Threads)

    중요 모듈을 먼저 구현하고 통합한 뒤, 보조적인 모듈을 점차 구현 후 통합하는 방식

     어쩌면 '에자일' 스러운 방식일수도 모르겠습니다. 중요 모듈부터 일단 개발하고 통합한 뒤, 부가적인 모듈은 차차 만들어서 붙이는 방식입니다. 뼈대를 먼저 만들고, 살을 붙인다는 느낌이죠.

     

     

     

    3. 시스템 테스트 (System Testing)

    소프트웨어와 하드웨어를 결합한 뒤 수행하는 검증

     

     전체 시스템의 기능과 성능을 검증합니다. 특히, '성능'을 집중적으로 봅니다.

     어느정도 과부하를 버틸 수 있는지, 어느 정도 작업속도가 나오는지를 평가합니다. 또한 복구 및 회복작업, 안전 테스트 등도 합니다.

     

     

     

    4. 인수 테스트 (Acceptance Testing)

    사용자 관점에서 소프트웨어가 요구사항을 충족하는지를 평가

     

     Acceptance(허락) Test로, 고객으로부터 최종 확인을 받기위한 테스트입니다. 소프트웨어가 오류 없이 작동되더라도, 고객이 원하고자 했던 기능이나 성능이 미달되면 다시 만들어야 합니다.

     

     

    1) 알파 시험 (Alpha Test)

     사용자를 개발자 환경으로 초대해서 진행하는 테스트

     개발자가 직접 사용자가 사용하는 모습을 보며, 피드백을 얻는 테스트입니다. 사용자 관점의 테스트로, 소수의 사용자가 개발자 관찰하에 테스트를 진행합니다.

     

     

    2) 베타 시험 (Beta Test)

    다수의 사용자들이 각자의 환경에서 진행하는 테스트

     게임사에서 베타 테스트를 자주 하곤 합니다. 베타 테스트는 사용자 환경에서 진행하는 대규모 테스트로, 다양한 사람들로부터 피드백을 받을 수 있는 장점이 있습니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글