banner

블로그

May 31, 2023

최신 CI/CD 파이프라인을 위한 효과적인 테스트 자동화 접근 방식

InfoQ 홈페이지 기사 최신 CI/CD 파이프라인을 위한 효과적인 테스트 자동화 접근 방식

이 항목은 일본어로 표시됩니다.

2023년 5월 31일 20분 분량의 읽기

~에 의해

크레이그 리시

검토자

매트 캠벨

CI/CD의 등장은 소프트웨어 테스트 세계에 막대한 영향을 미쳤습니다. 개발자가 소프트웨어 업데이트의 성공 여부에 대한 빠른 피드백을 제공하기 위해 파이프라인을 요구함에 따라 많은 테스트 팀은 기존 테스트 자동화 접근 방식을 다시 검토하고 품질 저하 없이 제공 속도를 높일 수 있는 방법을 찾아야 했습니다. 이 두 가지 요소는 종종 테스트 세계에서 서로 모순됩니다. 왜냐하면 시간은 종종 테스터가 원하는 테스트 범위를 최대한 철저하게 달성하려는 탐구에서 가장 큰 적이기 때문입니다.

그렇다면 CI 파이프라인이 신속하게 피드백을 반환할 것이라는 기대를 충족하면서 고품질의 자동화된 테스트를 제공할 수 있도록 팀은 이 중요한 변화를 어떻게 처리해야 할까요? 글쎄, 이를 보는 다양한 방법이 있지만 이해하는 것이 중요한 것은 솔루션이 덜 기술적이고 더 문화적인 솔루션이라는 것입니다. 테스트에 대한 접근 방식은 테스트 프레임워크에 대한 큰 기술적 개선보다는 전환이 필요합니다.

아마도 가장 확실한 일은 왼쪽으로 이동하는 것입니다. "왼쪽으로 이동"(주로 디자인 및 단위 테스트 수준에서 테스트가 개발 주기 초기에 이동되는 경우)이라는 개념은 이미 많은 조직에서 추진하고 점점 보편화되고 있는 업계에서 일반적인 개념입니다. 단위 테스트에 중점을 두는 것은 코드를 빠르게 테스트하고 빠른 피드백을 제공하는 좋은 방법입니다. 결국, 단위 테스트는 짧은 시간 내에 실행되며(컴파일 중에 실행될 수 있고 나머지 시스템과 추가 통합이 필요하지 않기 때문에) 올바르게 수행되면 좋은 테스트 범위를 제공할 수 있습니다.

나는 많은 테스터들이 단위 테스트라는 개념을 기피하는 것을 보았습니다. 왜냐하면 단위 테스트는 코드의 매우 작은 구성 요소에 대한 테스트를 작성하는 것이고 중요한 사항을 놓칠 위험이 있기 때문입니다. 이는 단위 테스트 자체의 실패보다는 프로세스에 대한 가시성 부족이나 단위 테스트에 대한 이해 부족으로 인한 두려움일 때가 많습니다. CI 파이프라인에서 코드가 빌드될 때 단위 테스트를 빠르게 실행할 수 있으므로 강력한 단위 테스트 기반을 갖추는 것이 효과적입니다. 가능한 한 많은 것을 보유하고 가능한 모든 유형의 시나리오를 다루는 것이 합리적입니다.

가장 큰 문제는 많은 팀이 이를 올바르게 수행하는 방법을 항상 알지 못한다는 것입니다. 첫째, 단위 테스트는 일부 체크박스 활동으로 취급되어서는 안 되며, 테스터가 일반적으로 적용하는 테스트 설계에 대한 적절한 분석과 헌신을 바탕으로 접근해야 합니다. 이는 단위 테스트를 개발자의 손에 맡기는 대신 테스터를 프로세스에 참여시켜야 함을 의미합니다. 테스터가 코딩에 능숙하지 않더라도 테스트에서 찾아야 할 매개 변수와 나중에 테스트할 통합 ​​기능에 대한 올바른 결과를 제공하기 위해 주장할 올바른 위치를 식별하는 데 도움을 줄 수 있습니다. 테스트 전문가를 단위 테스트 접근 방식에 참여시키지 않는다는 것은 단위 테스트가 일부 주요 검증 영역을 놓칠 수 있다는 것을 의미합니다. 이것이 바로 많은 테스터가 단위 테스트를 잘못 평가한다는 말을 들을 수 있는 이유입니다. 단위 테스트가 효과적이지 않기 때문이 아니라 단순히 올바른 시나리오를 다루지 못하는 경우가 많습니다.

테스터를 조기에 참여시키는 두 번째 이점은 단위 테스트 노력에 가시성을 추가하는 것입니다. 테스터가 이미 자동화된 테스트에서 다룬 내용을 단순히 테스트하게 되므로 테스트 노력을 복제하는 팀에서 낭비할 수 있는 시간(따라서 돈)의 양은 아마도 상당히 높을 것입니다. 이는 독립적인 검증이 발생해서는 안 된다는 의미는 아니지만 시나리오가 이미 다루어진 경우 과도해서는 안 됩니다. 대신, 테스터는 더 나은 탐색적 테스트를 제공할 수 있을 뿐만 아니라 다른 방법으로는 결코 다루지 않았을 엣지 케이스를 통합 테스트하는 데 자체 자동화 노력을 집중할 수 있습니다.

공유하다