흔한 씹타트업 좆소에서 일하는중입니다...
어쩌다보니 개발하는거에 e2e 테스트를 도입하게'됬'는데 사실 해본사람도 없고 그럴 능력도 없는것들이라
도입하면서 여러가지 문제가 많이 생기고잏읍니다...
먼저 제가 생각하는 e2e 테슨트의 목적은 개발을 하다보면 기존 내용이 업데이트 되었을때
업데이트한 부분을 끌어다 쓰고있는 다른 어느곳에서 분명이 문제가 발생할수있기때문에
그걸 찾아내고 방지하고자 하는 목적에서 모든 테스트를 자동화 하는걸로 알고잏읍ㅂ니다....
사실 이전까지는 새로운걸 추가하고나면 스웨거 작성걸로 하나하나
직접 리퀘슨트 날리고 테스트하는 방식으로 진행했습니다...
현재 테스트 코드 실행 환경은 각자의 로컬db 스키마 업데이트하고 기능 만들고 로컬db를 기준으로 e2e 테스트를 실행하고있습니다
아무튼 잡소리는 그만하고...
e2e 테스트를 진행할때 생성,수정,삭제등 기능을 전부 테스트를 해야하는데
문제는 생성 테스트를 하려면 먼저 해당 개체에 연결된 다른 데이터들이 미리 생성되있어야하는 겁니다...
a 라는걸 생성하기 위해 b c d 이런 것들도 만들어야한다는건데
그래서 제가 작성한 테스트코드를 실행하기 위해서 제 로컬db에는 필수 데이터들을 미리 생성해놓고
테스트를 실행할수가 잏읍니다...
문제는 배포할때나 다른사람 자리에서 테스트를 실행하려면 db에 필수 데이터가 없기때문에 실행을 할수가없다는겁니다
이는 다람사람들 입장에서도 마찬가지 입니다
다른 직원이 본인 자리에서 로컬db로 테스트 통과하는데 마찬가지로 제 자리에선 실행이 불가능합니다
그렇다고 테스트 전용 db를 따로 만들고 거기서 테스트를 하자니
현재 orm을 사용중인데 새로운걸 추가하다보면 각각 직원마다 스키마가 전부 다르다는겁니다
얘를들어 저랑 A 라는 직원이 서로 다른 새로운 기능을 개발하면서 새로운 스키마가 추가되었습니다
근데 제가 먼저 테스트한다고 테스트 db에 스키마를 업뎃하고
나중에 A가 본인이 완성한거 테스트한다고 본인 스키마를 업뎃하면
제가 먼저 적용시켜놨던게 사라지는 그러한 문제도 있습니다.
이런 테스트에 필요한 db 데이터 관련 문제때문에 사실쌍
현재는 각자 로컬에서만 e2e 테스트 실행하고 어? 통과했네? 그럼끝 ㅇ 이렇게 하고있읍니다...
e2e 테스트의 본질자체를 잃어버린,
어짜피 스웨거로 전부 각자 테스트하고 그걸또 본인 로컬에서만 통과하는 e2e 테스트 코드 작성해서 실행 시키는
쓸데없는 좆병신같은 짓을 하고있는 상황입니다...
어떻게 해야 이런 문제를 해결할수있을까요?
딱히 방법이 없는데?
공통으로 쓸 DB만들고 각자 규칙을 만들어 잘 따르게 해야하는데 잘 될 것 같진 않네 - dc App
e2e면 Cypress 쓰는건가
nest 라서 supertest랑 jest 인걸로 알음
각자가 디비 스키마가 다르다는게 젤 큰 문제 같은데용
코드가 문제가 아닌거같은데 일단 모킹 데이터 없는건 seeding + 님이 쓰는 라이브러리로 검색해보면 나올거임 - dc App
요즘은 MongoDB만 쓰는데, 커맨드 한줄이면 dump, restore가 되서 테스트하기 좀 편하고. 도큐먼트라서 걍 스키마 생깔수있어서 세상 편함.. 음 보통은 그런 경우라면. 인스턴스 하나 파서 디비서버 여러개 돌리고 포트를 바꾸거나, 한 디비서버에 DB명으로 분리해버리고, DB URI 를 테스트 때만 다른 환경 변수 넣어서 돌릴 듯.
A가 본인이 완성한거 테스트한다고 본인 스키마를 업뎃하면 제가 먼저 적용시켜놨던게 사라지는 그러한 문제도 있습니다. 이거 항상 create 하는옵션 써서 그런거 아닌가요? 이거만 해결되면 될거같은데