티스토리 뷰

반응형

소프트웨어 테스트의 목적

소프트웨어를 출시하는 데 중요한 것은 오류가 없는 제품을 만드는 것입니다. 결함이 많아 사용할 수 없는 기능이 많은 것은, 품질이 나쁜 제품을 의미합니다. 소프트웨어 테스트는 결함을 발견하고 개선하기 위해 수행됩니다. 소프트웨어 테스트는 테스트 대상의 특징에 맞게 테스트 케이스를 조합하여 다양한 테스트를 반복하여 결함을 찾아내는 것으로 사용자에게 유용한 소프트웨어가 되는 것을 목표로 합니다. 개발 과정에서 결함을 0으로 만드는 것은 불가능하기 때문에 소프트웨어 테스트는 양질의 소프트웨어를 개발하는 데 중요한 프로세스 중 하나입니다.

소프트웨어 테스트의 7 가지 원리

모든 테스팅의 적용할 수 있는 다양한 테스팅 원리가 오래전부터 제안되어 왔으며, 소프트웨어 테스트에서는 모든 담당자가 주의해야 할 7가지 원칙이 있습니다. 다음 7가지 원칙을 숙지하면 보다 정확한 테스트가 가능합니다.

오작동이 있음을 나타낼 수 있습니다.

소프트웨어 테스트를 통해 결함을 찾고 수정하여, 결함의 수를 줄일 수 있지만 발견된 모든 결함을 제거해도 더 이상 결함이 없음을 증명할 수는 없습니다. 우연히 결함이 나오지 않았을 가능성이나 특정 테스트에서는 발견할 수 없었다는 가능성을 부정할 수 없기 때문입니다. 때문에 결함은 반드시 있는 것, 결함이 존재함을 밝히는 것이라는 마음가짐으로 소프트웨어 테스트에 임할 필요가 있습니다.

완벽한 전수 테스트는 불가능

소프트웨어 처리의 모든 패턴을 테스트하는 것을 전수 테스트라고 하는데, 이것은 불가능하다고 여겨집니다. 조합에 의해 패턴의 수가 방대해지기 때문에, 모든 것을 테스트하는 완벽한 테스트는 불가능으로 되어 있습니다. 실제로는 소프트웨어의 성질을 고려해 리스크를 분석하고 우선순위를 토대로 한 테스트에 집중합니다.

초기 테스트

결함이 존재하지 않는 소프트웨어 개발은 불가능하기 때문에, 가능한 한 빨리 결함을 발견하는 것이 중요합니다. 개발 초기의 결함을 시간이 지나고 나서 발견하면, 그 영향 범위도 커져 버리기 때문에 초기 테스트가 특히 중요합니다. 개발 초기의 테스트를 수행함으로써 결과적으로 비용을 절감할 수 있습니다.

결함의 집중

소프트웨어의 결함은 곳곳에 흩어져 있기보다 특정한 소수의 부분에 집중되어 있는 것이 일반적입니다. 따라서 테스트 계획에서는 과거의 데이터나 최근의 테스트 결과를 참고로 결함이 발생할 수 있는 부분을 예측하여 테스트 케이스를 좁혀 갑니다.

살충제의 역설(살충제 패러독스)

같은 살충제를 계속 사용하고 있으면 점점 해충이 내성을 붙여 버리는 것을 살충제의 역설이라고 합니다. 소프트웨어 테스트도 마찬가지로 결함을 찾아 수정함으로써 개발 단계에서 결함을 발견하기 어렵게 하는 것이 가능하기 때문에 비슷한 성질의 소프트웨어에서 동일한 테스트를 계속하다 보면 결함 발견이 어려워집니다. 신규 결함을 발견하기 위해서는 기존 테스트 데이터를 바꾸고 신규 테스트 케이스를 작성해야 합니다.

테스트는 조건에 따라 다름

조건은 테스트 조건이 아닌 프로젝트나 회사를 둘러싼 모든 환경을 뜻합니다. 소프트웨어의 설계나 사용 목적, 상황, 기대하는 결과 등에 맞추어 테스트 케이스는 바꾸어 가야 합니다. 예를 들어, 게임 등의 소프트웨어와 안전 산업에서 사용되는 제어 소프트웨어는 다르게 테스트합니다. 즉, 똑같은 테스트를 적용할 수 있는 소프트웨어는 하나도 없다는 것입니다.

결함 0의 함정

소프트웨어 테스트에 의해 결함을 발견하고 하고, 만일 결함이 발견되지 않는 상태까지 수정할 수 있었다고 해도, 본래는 할 수 있어야 하는 기능을 사용할 수 없게 되거나 사용성에 영향이 생기거나 하는 것을 생각할 수 있습니다. 그렇게 되면, 정의된 모든 요구사항에서 발견된 결함이 0이라고 해도 좋은 제품이라고는 말할 수 없습니다. 위 원리처럼 모든 결함을 발견하는 완벽한 테스트는 불가능하다는 것을 인지하고, 사용자 요구와 경쟁 시스템과 비교하여 결함이 최소화된 시스템을 만들어내야 하며, 결함 수정에 따른 영향도 고려해야 합니다.

반응형

'IT' 카테고리의 다른 글

테스트케이스 기초 엑셀 세팅, 함수  (0) 2023.02.08
ChatGPT의 의미  (0) 2023.02.07
Python 개발의 장점과 단점  (0) 2023.01.31
단위 테스트의 의미  (0) 2023.01.13
QA 커뮤니케이션 방안  (0) 2023.01.10