본문 바로가기

SoftwareTesting

What is the Software Testing?

이번에 Software Testing이 무엇이며 왜 이것이 중요해지고 있는지에 대해 알아보도록 하겠습니다. 

Software Testing 이란? 

소프트웨어 테스팅이란 소프트웨어 제품 또는 응용 프로그램이 해야 할 작업을 수행하는지 평가하고 확인하는 과정을 의미합니다.

 

그럼, 소프트웨어 테스팅을 하는 이유가 무엇일까요? 

그것은 개발자가 개발을 할 때, 버그가 없는 완벽한 프로그램을 만드는 것이 불가능하기 때문에 테스팅 과정을 필요로 합니다. 

그렇기에, 소프트웨어 테스팅을 하게 되면, 버그가 발생하는 것을 막을 수 있고, 소프트웨어 품질 향상과 개발 비용을 줄일 수 있다는 장점이 있습니다. 여기서 개발 비용이 줄어든다는 의미는 테스팅을 통해 초기에 문제점을 발견하여 해결할 경우, 이를 수정하기 위한 비용이 적게 든다는 것을 의미합니다. 많은 이러한 소프트웨어 테스팅 분야에도 테스팅 방식에는 여러 가지 방식들이 존재하는데 어떤 종류가 있는지 알아봅시다.  

Software Testing의 종류 

- Acceptance Testing 

    프로그램이 의도한 대로 동작하는지 확인하는 테스팅 방식입니다. 

- Integration Testing 

   소프트웨어 구성 요소와 기능이 함께 동작하는지 확인하는 테스팅 방식입니다. 

- Unit Testing 

   프로그램의 가장 작은 테스트 가능한 구성 요소를 테스팅하는 방식으로서, 주로 프로그램에 일부 기능을 테스트하는 데 사용되며 특정 라이브러리를 테스팅하는데 많이 사용되는 방식입니다. 

- Functional Testing 

   기능 요구사항에 따라 특정 시나리오 대로 기능이 올바르게 작동하는지 확인하는 방식으로서, 특정 입력 값을 주고 그 입력 값으로부터 나오는 결과가 소프트웨어의 요구 사항 및 사양을 충족하는지 확인합니다. 

- Performance Testing 

   성능 테스트(performance testing)는  작업입니다. 성능 테스트는 일반적으로 속도, 견고성, 안정성 및 애플리케이션 크기를 검사하기 위해 진행되며, 특정 작업 부하에서 시스템이 응답성과 안정성 측면에서 어떻게 작동하는지 평가하는 테스팅 방식입니다.

- Regression Testing 

   이전에 제대로 작동하던 소프트웨어 기능에 문제가 생기는 것을 회귀 버그라고 하는데, 이를 찾는 모든 소프트웨어 테스팅 방식을 의미합니다. 즉, 새로운 기능을 추가하였을 때, 이전 테스트 케이스가 올바르게 동작하는지 확인하는 것을 말합니다.

- Stress Testing 

   프로그램에 의도적으로 높은 강도의 테스팅을 진행하여, 한계점까지 정상 운영 용량 초과하는 테스트 방식입니다.

- Usability Testing 

   고객이 시스템 또는 웹 애플리케이션을 사용하여 작업을 얼마나 잘 완료할 수 있는지 확인하는 테스팅 방식입니다. 이 테스팅 방식은 사용적합성 문제를 파악하고 질적 및 정량적 데이터를 수집하며 제품에 대한 참가자의 만족도를 결정하는 것을 목표로 합니다.

 

왜 Software Testing이 중요한가? 

소프트웨어를 개발할 때, 소프트웨어의 품질 향상을 위해 소프트웨어 테스팅이 진행됩니다. 그에 반해, 테스팅을 진행하지 않고 소프트웨어 개발을 할 경우, 해당 소프트웨어 결함으로 인해 올바른 기능을 제공하지 못하게 됩니다. 또한, 프로그램 개발을 한지 오랜 시간이 흐른 뒤, 버그를 고치려고 한다면, 개발 비용보다 테스팅 비용이 많이 들게되고 특수한 경우에는 버그를 고치기 위해 해당 소프트웨어의 구조 전체를 손봐야하는 경우가 발생할 수도 있습니다. 더 나아가, 이러한 버그가 보안 취약점으로 이어질 수도 있습니다. 보안 취약점으로 이어지는 경우 수많은 고객들이 피해를 입게 되어 해당 소프트웨어의 서비스를 더 이상 제공하지 못할 가능성도 있습니다. 그렇기에, 소프트웨어 테스팅은 더욱 중요시되고 있으며, 요즘에는 개발과 테스팅이 동시에 진행되고 있는 추세이며, 테스트 드라이버를 먼저 작성한 후, 개발을 하여 테스팅을 진행하기도 한다고 합니다. 

 

이렇게 소프트웨어 테스팅이 무엇이며, 테스팅 방식에는 어떤 것들이 있으며, 왜 테스팅이 중요한지에 대해 알아보았습니다. 

 

참고 문헌

[1] https://www.ibm.com/topics/software-testing

[2] https://www.whitesourcesoftware.com/resources/blog/black-box-testing/