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

- Link: https://qiita.com/Dingu-suke/items/b5318ef2040a9f59224a?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items
- Discussion: https://startupxo.com/ko/1263/
- Posted by startupxo at 2026-11-10T00:41:40.139Z
- 0 points, 1 comment, kind story, origin curated
- Written in ko

## Summary

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

## Sources

- Qiita: https://qiita.com/Dingu-suke/items/b5318ef2040a9f59224a?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items

## Comments (1)

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

JSON: https://startupxo.com/api/v1/item.json?id=1263&lang=ko
