Study_Note

the evolutionary process of testing 본문

CSTS

the evolutionary process of testing

12월7일생 2023. 12. 6. 16:08
728x90

 

반응형

 

갤퍼린(gelperinn) 과 헤첼(hetzel) 의

소프트웨어 테스트 개념의 진화과정

(the evolutionary process of testing)

 

Level_1

Debugging Oriented ( ~ 1956)

이 수준에서는 테스트와 디버깅 간에 명확한 차이가 없습니다. 주로 발견된 결함을 수정하는 디버깅에 중점을 두며, 프로그램의 결함을 찾기 위한 별도의 노력을 기울이지 않습니다.

 

Level_2

Demonstration Oriented (1957 ~1878)

프로그램이 정상적으로 동작하는 것을 입증하기 위해 테스트를 진행합니다. 이에 따라 결함을 찾을 가능성이 높은 테스트 케이스를 만들기보다는 시스템이 올바르게 작동하는지 입증하는 데 중점을 두려는 경향이 있습니다.

 

Level_3

Destruction Oriented (1983 ~1987)

프로그램이 결함을 가지고 있는지 확인하기 위해 테스트를 진행합니다. 목적은 프로그램이 원활하게 동작하지 않음을 나타내는 테스트 케이스를 설계하여 결함을 발견하는 것입니다. 이에 따라, 잘못된 동작을 보여주는 테스트 케이스가 다른 테스트 케이스보다 더 가치 있다고 여겨집니다.

 

Level_4

Evalution Oriented (1983 ~ 1987)

레벨 3의 테스트는 주로 프로그램 코드 내 결함을 찾는 데 중점을 둔다면, 레벨 4의 테스트는 소프트웨어 개발 초기에 발생 가능한 결함을 감지하는 개념으로 확장됩니다. 따라서 코딩이 완료된 후가 아니라 개발 초기부터, 지속적인 리뷰 등을 통해 시스템을 평가하는 작업이 필요하다는 개념입니다.

Level_5

Prevention Oriented (1988 ~)

이 레벨에서의 테스트 목적은 프로그램의 결함을 사후에 발견하는 것이 아니라, 결함이 발생하지 않도록 사전에 방지하는 것입니다. 이를 위해 프로그램을 개발할 때 처음부터 테스트가 용이하도록 시스템을 설계해야 한다는 개념을 추구합니다. 결함을 미연에 방지하기 위한 가장 효과적인 방법은 테스트 케이스를 미리 설계하는 것입니다. 실제로 테스트 주도 개발(TDD)에서는 테스트 케이스를 미리 설계하고 코딩을 나중에 하는 방식으로 시스템을 개발합니다.


소프트웨어 테스트에 대한 일반적인 진화 과정

 

수동 테스트 (Manual Testing)

초기에는 소프트웨어 테스트가 주로 수동으로 이루어졌습니다. 테스터가 소프트웨어를 직접 실행하고 테스트 케이스를 수행하여 버그를 찾았습니다.

 

자동화 테스트의 등장

시간이 지남에 따라 소프트웨어 규모와 복잡성이 증가함에 따라 자동화된 테스트가 부상했습니다. 테스트 스크립트와 도구를 사용하여 자동으로 테스트 케이스를 실행하고 결과를 분석할 수 있게 되었습니다.

 

단위 테스트 (Unit Testing)

소프트웨어 개발자들은 단위 테스트를 통해 개별 코드 단위의 동작을 확인하고 버그를 발견하는 데 중점을 두게 되었습니다. 이는 개발 초기에 문제를 신속하게 감지하고 수정할 수 있게 도와줍니다.

 

테스트 주도 개발 (Test-Driven Development, TDD):

TDD는 테스트를 개발 프로세스의 중심에 두는 방법론입니다. 먼저 테스트를 작성하고, 그 테스트를 통과시키기 위해 코드를 작성하는 방식으로 개발을 진행합니다.

 

지속적인 통합 (Continuous Integration, CI)

CI는 코드 변경 사항이 빈번하게 통합되고 자동으로 빌드 및 테스트되는 환경을 만드는 것입니다. 이를 통해 개발자들은 변경 사항이 통합 후에도 시스템이 여전히 정상적으로 작동하는지 확인할 수 있습니다.

 

지속적인 제공 (Continuous Delivery/Deployment, CD)

CI의 확장으로, 변경 사항이 통합되면 자동으로 프로덕션 환경에 배포되도록 하는 것을 의미합니다.

 

빠른 반복과 피드백 (Shift-Left): 테스트를 개발 주기의 초기로 이동시키는 경향이 있습니다. 이것은 개발 초기에 버그를 감지하고 수정함으로써 비용을 절감하고 제품 품질을 향상시키는 데 도움이 됩니다.

 


주요 측면에서의  소프트웨어 테스트의 진화

수동 테스트

초기에는 주로 수동 테스트가 사용되었으며, 테스터가 소프트웨어를 직접 실행하고 버그를 찾는 방식이었습니다.

 

자동화 테스트 도구

시간이 지남에 따라 자동화 테스트가 부상하면서 테스트 스크립트와 도구를 사용하여 자동으로 테스트를 수행하고 결과를 분석할 수 있게 되었습니다

 

단위 테스트와 테스트 주도 개발 (TDD)

단위 테스트와 TDD는 개발자가 코드를 작성하기 전에 테스트 케이스를 작성하고 이를 통과시키는 방식으로 소프트웨어의 품질을 향상시키는 데 중요한 역할을 합니다.

 

지속적 통합과 지속적 제공 (CI/CD): CI/CD는 코드 변경이 자동으로 빌드 및 테스트되며, 통합 후에도 시스템이 여전히 정상적으로 작동하는지 확인하는 환경을 제공합니다.

 

최신 개념들: 최근에는 테스트 자동화, 효율적인 테스트 전략, 머신 러닝 및 AI를 활용한 테스트 등 다양한 개념이 등장하고 있습니다.

'CSTS' 카테고리의 다른 글

test & quality evaluation  (0) 2023.12.20
test principle  (0) 2023.12.08
testing, debugging, re_testing  (0) 2023.12.04
type of defects  (1) 2023.10.11
defects by development stage  (0) 2023.10.11