기능 테스트 자동화 설계 관점에서 더 나은 검증 방향을 위해 Expect 또한 재사용 가능한 메서드로 BasePage 클래스에 구현하고 테스트 검증 데이터를 Json에서 관리할 수 있다. 얼핏 보기엔 유지관리 비용이 증가하고 더 복잡해 보이지만 테스트 로직 구현 간에 자동화의 핵심인 Expect 구문을 보다 유연하게 다룰 수 있고 검증 필요한 상황을 보다 직관적으로 관리할 수 있는 장점이 있다.
하지만 근본적으로 해결이 힘든 문제가 존재한다. W3C Spec인 Webdriver로 자동화 대상을 조작하고 Pytest, TestNG, Mocha와 같은 테스트 프레임워크로 다양한 방식의 Expect 또는 Assertion을 하더라도, 서비스 특성상 시각적 테스트가 중요한 기능이 존재할 경우 테스트 커버리지와 개별 결과에 대해 100% 신뢰할 수 없다. 특히 프론트단에서 발생 가능한 미묘한 위치 변화에 대응할 수 없고 무엇보다 검증 로직 작성에 적지 않은 리소스가 필요하다.
이에 따라 WebdriverIO 같은 경우 시각적 회귀 테스트를 위한 이미지 비교 타사 라이브러리가 존재하지만 1세대 시각적 테스트 방식인 스냅샷 테스트 컨셉이었다. 픽셀 쌍을 반복하여 다음 색상 16진수 코드가 동일한지 확인하고, 색상 코드가 다른 경우 에러를 발생시키는 원리이다. 즉 화면의 비트맵이 캡처되고 해당 픽셀이 기본 비트맵과 비교된다. acture, diff, baseline 폴더를 생성하여 기준점과 실제 이미지를 비교하는 방식이다. 쉽게 구축 가능하여 다양한 오픈 소스가 존재한다.
하지만 위와 같이 동작하는 스냅샷 테스트에는 몇 가지 문제점이 있고 이로 인해 테스트 결과를 온전히 신뢰할 수 없는 이슈가 생긴다. 테스트 자동화의 핵심은 빠른 실행과 신뢰성 높은 결과 확인인지라 성공이지만 실패하는 경우, 실패지만 성공하는 경우가 종종 생기기 시작한다면 자동화 결과 자체에 불신이 생기게 되므로 신뢰 가능한 결과 검증이 초기 도입에 있어서 굉장히 중요하다.
위 문제를 Visual AI 기반의 Eye SDK를 WebdriverIO와 함께 사용하여 해결했고 원하는 테스트 결과가 나타나자 문득 과거 인공지능 자동화 서비스 매니저 경험이 떠올랐다. 그때 알았더라면 맡은 직무에서 더 나은 성과와 태도를 만들 수 있었을까, 자동화를 다양한 언어와 프레임워크를 사용해 보며 경험한 것들이 쌓이기 시작한 지금에서야 효율성이 피부로 느껴질 만큼 정말 좋은 서비스였다는 생각이 들었다.
Visual AI 기반의 자동화 방식이 얼마나 효과적이고 편리한지 코드 레벨에서 설명할 수 있게 된 요즘, 자동화 분야에 계속 등장하는 AI 기반 테스트 도구를 기존 테스트 도구와 함께 활용해 보며 때로는 기존 방식에서 벗어나 가치 있는 작업에 집중할 수 있는 가치를 찾아내는 엔지니어로 성장할 수 있도록 노력해야겠다.