이 정도 자동화 테스트를 해도 유닛 테스트가 필요할까?
Вставка
- Опубліковано 6 лют 2025
- 지난 편에서 유닛 테스트와 관련해 짤린 주니어 개발자의 이야기를 전하면서, 제가 경험했던 자동화 테스트 시스템에 대해 간략히 언급했죠. 이번 영상에서는 게임 회사에서 실제로 사용되었던 어마무시한 자동화 테스트 기법들을 소개합니다.
매일 밤마다 실행되던 전 레벨 스크린샷 비교, 캐릭터 조합 테스트, 그리고 랜덤 이동 테스트 등, 단순 유닛 테스트를 넘어선 수준 높은 자동화 사례들을 통해, 소프트웨어 품질 보장을 위한 효율적인 접근 방식을 함께 알아봅니다.
자동화 테스트가 얼마나 강력한 도구인지, 그리고 왜 유닛 테스트만으로는 부족한지 궁금하시다면, 끝까지 시청해 보세요. 다음 편에서는 또 다른 흥미로운 자동화 테스트 사례를 다룰 예정입니다.
"품질 보장은 자동화로부터 시작됩니다."
1편: • 유닛테스트 찬양했다가 짤린 주니어 프로그...
3편: • 48시간 자동 테스트 돌리던 게임 회사의...
앱에서 스크린샷 테스트를 진행하고 있는데 생각보다 실수를 잘 찾아 도움을 받고 있습니다. 적은 코드로 할 수 있는 것도 장점인 것 같아요!
웹 및 앱로딩 속도도 스샷(몇초에 뭐가 보이는지)으로 보여주는 서비스들이 생겼더라고요.
앱 자동화도 말씀해주신것 처럼 툴이 많은데 이걸 더 잘 활용해봐야겠습니다! 항상 좋은 말씀 감사합니다! :)
이론에 몰두하기 보다는 알맞은 테스트를 하자
와.. 테스트를 위해 이펙트 랜덤시드까지 동일하게 하고...
제품이 deterministic하면 버그 재현도 쉬워져서 버그 고치는 속도가 빨라지더라구요.
와 현업의 고급정보 감사합니다
오래되서 정확한 수치까지는 기억이 안나서 그걸 제대로 말씀드리지 못한게 죄송할 뿐입니다...
당연히 그런 테스트가 있으면 유닛테스트는 필요없겠죠. 유닛테스트는 최소한의 허들인데..
요즘은 테스팅과 유닛테스트 tdd이걸 전부 같은 개념으로 생각하는 사람들도 많아지는거같습니다. 그러나 결론은 하나인거같아요.
"테스트" 는 반드시 있어야한다.
유닛테스트 = TDD 요렇게 생각하는 건 TDD 진영이 유닛테스트를 자기들이 만든 것마냥 홍보하고 모든 것엔 극단적인 유닛 테스트를 사용해야만 한다고 어그로를 많이 끌어나서 그런 것 같습니다.
그래서인지 다른 테스트는 전혀 고려하지 않은 채 코드 품질을 높이기 위해 유닛 테스트를 해야한다고 말하는 사람들은 대부분 TDD 진영의 극단적인 유닛테스트를 의미하더라구요.
자동화 테스트 프레임워크중 매우 유명한 JUnit에 Unit이란 이름이 들어있는 것도, 그리고 그걸 만든 사람이 TDD의 창시자라는 것도 이런 혼동에 기여한다고 봅니다
이분이 일하신 분야가 버그나면 그냥 껏다 킬 수 있는 게임업계였다는 것을 고려하고 들으면 될것 같습니다. 테스트는 유닛 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트로 범위가 확장되며 후자로 갈수록 테스트 영역이 커져 버그를 찾는 범위가 커지고 고치는데 비용이 많이 듭니다. 유닛 테스트가 왜 중요하냐면 그것을 고려한 코드는 설계부터 달라질 수 밖에 없으며 작은 단위의 테스트를 많이 할 수록 버그를 찾고 수정하는데 비용이 가장 적게 들기 때문입니다. 이것을 쉬프트-레프트 테스트라고 합니다. 최후 유저 테스트만 통과된다고 릴리즈 하는 방식은 밝혀지지 않는 버그에 대해 유저단에서도 안 나타나길 바라며 물떠놓고 비는 거랑 다를 바 없습니다. 그리고 유닛 테스트랑 TDD랑 같은 의미가 아닙니다.
제가 웹 프로그래머로도 한 10년 일했지 말입니다....
게임 쪽이면 오히려 디플로이가 더 오래걸리지 않나요.. 크래프톤에서 로비 쪽은 조금씩 수정할 때마다 언리얼 빌드 새로 뽑는 게 시간적으로 너무 에바라서 로비는 웹 프론트엔드 스택을 쓴다고 들었어요.
단위테스트가 나름 중요하다는 건 동의하지만 메소드 단위가 아니라 도메인? 행위 단위 정도가 좋은 거 같아요.
누구는 코드 수정해서 테스트 깨지는 거=문제가 발생하는 부분을 파악해서 리팩토링을 마음 놓고 할 수 있다. 라고는 하지만 단순히 값 검증이 실패하는 게 테스트 코드 자체가 동작을 안하는 건 완전히 별개의 이야기 입니다.
이건 테스트의 추상화 정도도 낮고, 테스트 할 필요가 없는 대상도 테스트하고 있다는 걸 의미합니다.
너무 구체적인 메소드 단위보단 도메인 관점에서 행위 단위, 이를테면 A가 B에게 송금한다. 정도의 행위를 테스트할 수 있으면 이상적인 것 같습니다.
구글의 소프트웨어 엔지니어는 이렇게 일한다라는 책 내용을 보면 구글에서는 단위테스트가 80%일 정도로 되게 중시하는 편인데, 테스트 깨지는 것에 대해선 테스트 자체가 잘못된 거다라는 관점이더군요.
껏다켠다뇨.. 롤 승급전하는데 껏다켜세요?.. 게임바로 망할일있나
근데 대다수의 중소 웹회사들은 QA 팀이 없어서... 댓글쓴분말 반은 이해가네요
그래서 님 경력 몇년. 딱보니까 정처기 따고 si에서 ㅈㄴ게 구르고 있나본데ㅋㅋㅋ
tdd를 ai로 하는 개발자들 있던데 괜찮나요?
TDD의 무엇을요?
이제는 AI 때문에 파티클이나 초단위 오차가 들어가도 될듯한 느낌입니다
자동차 소프트웨어도 자동화 테스트에 많의 의존합니다 ㅎㅎ
테스트가 말이 좋아 테스트지 노가다나 다름없네요
모든테스트는 노가다죠.
악!!! 포프님 빨리 다음편 주세요 악!!!
보통 마지막 편은 제일 허접한 법이죠.. :)
웹자동화 넘나 잘돼있어서 브라우저에서 액션을 레코딩하면 코드젠까지 돼요 ㅎ
미쿡은 qa도 프로그래머인가요?
기본적으로 아닙니다