검색
한국어

AI가 쓴 테스트가 모두 통과해도 믿기 어려울 때, 코드를 일부러 망가뜨려 테스트 강도를 재는 Stryker(qiita.com)

startupxo 토론하기

작성 언어: 한국어작성 언어로 보기

쉬운 요약

- 테스트가 모두 통과해도 그 테스트가 실제로 잘못을 잡아내는지는 알 수 없다. 변이 테스트는 코드를 일부러 조금씩 망가뜨린 뒤 테스트가 실패하는지 본다. 실패하면 잡아낸 것이고 통과하면 놓친 것이다. Stryker는 이 과정을 자동으로 해주는 도구다. - 저자 팀은 회사별로 데이터를 자동으로 걸러 주는 Prisma 클라이언트(모델 131개)에 이를 적용했다. 모델별 조건을 적은 정의표는 처음부터 100%였고, 손으로 쓴 클라이언트 테스트는 89.74%에서 보완 후 100%가 됐다. - 놓친 사례 중에는 다른 회사 행을 지우는 시도가 회사별 필터가 아니라 외래키 제약 때문에 실패하던 테스트가 있었다. 리뷰 지적에 따라 AI가 추가한 bind 호출은 지워도 동작이 같아 불필요한 코드로 드러났다. - 저자 환경에서 변이 407개는 3분 30초가 걸렸고, 규모가 1,326개로 커지자 24분이 걸렸다. 관련 없는 테스트까지 돌지 않도록 실DB 테스트만 지정해야 했고, 저자는 PR 전에 한 번 돌리는 방식을 구상한다.

편집 의견

O: 멀티테넌트 SaaS에서 회사별 필터를 맡은 백엔드 개발자가 PR 전에 가장 틀리면 안 되는 파일 하나만 --mutate로 지정해 Stryker를 돌려 보기를 제안합니다. X: 저자 환경에서 변이 407개는 3분 30초, 1,326개로 커지자 24분이 걸렸고 관련 없는 테스트까지 도는 문제도 있어 실DB 테스트만 지정해야 합니다.
작성 언어: 한국어

원문 읽기 ↗

발견한 곳

Qiita ↗ / 매체 발행 글

비슷한 일을 겪어 본 적이 있나요? 그때 어떻게 했는지 한두 줄로 들려주세요. 제품을 잘 몰라도 괜찮습니다.

로그인하고 댓글 쓰기

키보드 단축키

J와 K, 또는 위아래 방향키로 글을 고르고 Enter로 엽니다.

K ↑ / J ↓
이전 글 / 다음 글
Enter C
선택한 글의 요약과 댓글 열기
O
선택한 글의 원문 열기
/
검색
?
이 도움말 보기
Tab
글쓰기나 댓글 버튼으로 이동한 뒤 Enter

입력 칸에서는 평소처럼 입력하세요. Tab과 Enter는 항상 사용할 수 있습니다.