본문 바로가기

쉽게 풀어본 IT 기술

소프트웨어 테스트 위상이 높아진 까닭은


소프트웨어를 테스트하는 방법은 여러가지가 있을 수 있다. 기능를 하는 단위 테스트, 여러가지 조합해보는 통합 테스트, 성능 테스트, 보안 사항에 위배가 없는지 해킹 우려가 없는지도 테스트이다.

기본적인 기능에 문제가 없는 단위별 테스트가 단위테스트이다. 개발자가 기본적으로 자기만 개발한 프로그램에 대한 테스트를 해야 한다. 그래서 유닛테스트라고 하고 개발자들이 코드를 개발하는 곳에서 테스트를 할 수 있게 기본적으로 어떤 함수를 만들때 입력과 출력에 대해서 검증하는 것이다. 함수를 만들고 어떤 기능을 동작하게 했다면 입력에 따른 기대 출력값이 있을 것이다. 이것을 검증한 후에는 연결되었을 때 오류가 없는지 봐야 한다. 기능들이 조합되었을 때 예상치 못한 결과가 있을지 모르니 확인해봐야 한다.

통합 테스트를 하면서 전체적인 기능의 연결에서 문제가 없는지 알수가 있다. 그리고 기능은 동작을 했지만, 기능을 동작하기 위해서 속도가 너무 느릴 수도 있고, 동시에 수행을 하게 되었을 때 성능이 떨어질 수도 있다. 이것을 위해서 성능 테스트가 필요하다.

사용자 관점에서 보는 테스트도 있다. 사용자 테스트가 있고, 여기까지의 테스트는 테스트 케이스가 존재하고, 그 전에 테스트 시나리오가 있다. 테스트 시나리오는 흐름을 말하고, 테스트 케이스는 흐름 내에서 구체적인 하나씩의 테스트 항목을 말한다. 이러한 시나리오를 기반으로 테스트를 수행한다.

마구자비로 하는 테스트도 있다. 빅뱅 테스트라고 해서 마구자비로 해서 체계가 없을 거 같지만, 의외로 오류를 많이 발견할 수 있다. 왜냐면 개발자들은 예상되는 시나리오 기반으로 개발을 하고, 테스트를 했기때문에 의외의 동작을 했을 때 상황을 준비하지 못하기도 한다. 그래서 빅뱅테스트를 통해서 사용자의 예상치 못한 동작을 대비하게 된다.

테스트를 진행을 위주로 개발을 해나가는 테스트 주도 개발 방법론도 있다. 테스트가 케이스를 작성하고 그 테스트 케이스에 통과하기 위한 개발 코드를 작성한다. 개발자가 먼저 테스트 케이스를 의식하면서 개발을 하는 것이다. 이러므로써 테스트를 통과하고, 그 뒤에 코드에 대해서 리팩토링을 한다. 리팩토링은 추후 설명하려고 한다. 이렇게 함으로써 개발 효율화를 얻을 수 있다는 방법론이다.

과거 품질이라든가 테스터는 한직이고, 단순 업무라고 생각했었다. 지금은 품질에 대해서 워낙 철저하게 검증을 하고, 어떻게 하면 처음부터 품질을 유지하면서 개발을 할 수 있을지에 대한 관심이 많기 때문에 테스트 기획자 또는 품질 담당자는 프로젝트 처음부터 참여하여 테스트 기획을 하기도한다.


책처럼 전체를 보기를 원하시면 아래 링크를 클릭하시고 북마크 하셔서 보시면 편리합니다. 

https://wikidocs.net/22336