개발자

버그를 잘찾으려면 어떻게 해야할까요

2023년 07월 02일조회 1,937

경력1년(실무 7개월)중고신입으로 이직해서 수습기간동안 과제를 하고있습니다 주어진 시간(일주일) 동안 과제로 시스템들을 만드는데 개발은 어려움없이 하지만 완성도가 부족한것같습니다 사용자입장에서는 여러가지 경우의수로 서비스, 시스템을 사용하는데 개발자입장에선 만든 본인의 의도로만 바라보게되니 버그를 잘 못찾는것같습니다.. 사용자의 테스트없이 게발자혼자 처음부터 버그없는 완벽한 시스템만들기는 불가능일까요? 수습기간이나 종료후에 짤릴까봐 걱정도되네요..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 6

인기 답변

이승현님의 프로필 사진

말씀하신대로, 처음부터 버그 없는 완벽한 시스템을 만드는 것은 불가능합니다. 사용자의 테스트가 있다고 해도, 시스템이 복잡할 수록 어렵기 마련입니다. 다만, 대개는 시스템의 요구 사항에 맞추어 필요로 하는 성능, 용량, 기능에 허용범위가 있고, 이것을 만족하면, 개발 완료가 되었다고 판단하기는 합니다. 그래서 이 요건을 만족시키기 위해서 test case를 만들어 두고, 이 test case들을 다 통과하는 지 살펴 봅니다. 현재 상황에서 주어진 test case들이 있다면, 그 test case들을 충족 시키는 시스템을 개발하시면 될 것 같습니다 그렇지 않은 상황이라면, 스스로 test case들을 작성하셔서, 그 시스템을 의뢰하신 분께, 공유 하시고 이정도의 spec으로 진행해도 되겠는지 의견을 물으심이 좋을 듯 합니다. 보통 이런 일들은 PM이 하곤 합니다만, 과제라서 딱히 이런 부분들이 준비되지 않았을 때는, 스스로 자신의 개발물의 품질을 정하시고, 상대방에게 제안하고 그것을 지킬 수 있다면, 더욱 professional한 개발자로 자신을 appeal하실 수 있을 지 않을까 생각합니다~!

profile picture

익명

작성자

2023년 07월 03일

감사합니다! 테스트가 가장어려운것같아요..

인기 답변

엄홍재님의 프로필 사진

안녕하세요! 저도 비슷한 고민들을 많이 했습니다. 버그가 발생하는 것은 항상 고통이죠 ㅠㅠ 저같은 경우에 기본적인 기능구현을 하고나서 가장 먼저 떠올리는 말은 '유저는 절대로 내 생각대로 행동하지 않는다.' 입니다. A-B-C를 순서대로 입력하기를 저는 바라지만 유저는 절대 순서대로 입력하지않고 마음대로 입력하는거죠... (실제로도 그렇습니다..ㅋㅋㅋㅋ) 그래서 저는 개발환경에서 스스로 엣지케이스 테스트를 해봅니다. 예를들면 중간에 뒤로가기를 해본다든지, 입력을 해야하는 필수요소를 입력하지 않고 다음 버튼을 누른다든지 글자수 제한이 있는곳에 엄청 긴 글자를 붙여넣어본다든지 하는식으로 스스로 유저가 되어서 아무거나 넣어보고 눌러봅니다. 일부러 오류를 내보려고도 하고요. 이렇게 해서 오류를 발견하면 고치는 거죠... 버그와의 싸움 화이팅입니다.

profile picture

익명

작성자

2023년 07월 03일

아 테스트는 정말 끝이없는것같습니다 ㅠ 제가한게 아니라고 생각하고 사용자의 입장에서 해보도록 할께요 감사합니다!

인기 답변

이영준님의 프로필 사진

원래 그런겁니다 그래서 단위 테스트 통합테스트 소스 리뷰 같은 것들을 하는 거고요 경력 10년 넘어도 버그없는 개발자는 없습니다. 중요한건 실수를 인정하고 같은 실수는 반복하지 않는 것이죠. qa없는 회사가 잘못된겁니다 ㅋㅋ

인기 답변

삭제된 사용자님의 프로필 사진

삭제된 사용자

2023년 07월 31일

윗분들께서 잘 설명해 주셨습니다. 사용자입장에서 발생하는 버그들을 원천차단하기는 정말 힘듭니다. 다만, 버그의 원인들을 쉽게 캐치 하기 위한 로그생성이나, 로그 전송등의 기능을 추가하면 보다 버그를 쉽게 찾을수 있을수 있습니다. 또 중요한것은.. 개발레벨의 테스트가 중요합니다. 테스트는 하나의 기능이 추가 되었을때 반드시 한번 수행하는것이 좋으며 기능이 복잡할 경우엔 더 잘게 쪼개어 코드뭉치 단위로 테스트를 수행하는것이 좋습니다. 기억하세요! 두개 이상의 기능을 동시에 테스트하는 것보다 한번에 하나의 기능을 테스트 하는 것이 디버깅 하기 좋습니다! 다만 전제조건으로, 테스트케이스가 잘 만들어져 있어야 번거로운 여러번의 테스트를 자동화 할 수 있습니다. 그렇지 않으면 매 테스트가 고역이 될 수 있습니다. 잘 알려진 테스트 패키지를 쓰시고 TDD를 생활화 하시는게 좋습니다.

손유승님의 프로필 사진

사용자가 할 수 있는 행동을 최대한 통제하는 것도 좋습니다. 예를 들어, 금액을 입력하는 칸에 숫자만 입력할 수 있게 해 두면 문자를 입력했을 때에 대한 테스트를 생략할 수 있습니다. 모든 내용을 정확히 입력하기 전까지 완료 버튼을 못 누르게 막으면 잘못된 값에 대한 것도 상당 부분 대처가 됩니다. 그만큼 테스트 케이스도 줄어들고, 로직도 단순해지며, 버그도 줄어들게 될 것입니다. 버그를 잘 찾으려면 가능한 한 모든 경우의 수를 테스트하는 것이 좋습니다. 유저들이 모두 착하지는 않기 때문에, 상상할 수 있는 모든 수단을 동원해 의도적으로 버그를 내려고 작정하는 것도 도움이 됩니다. 그러려면 개발하고 있는 시스템에 대한 도메인 지식도 있어야 합니다. 예를 들어 온라인 체스 사이트를 만들려고 하면 체스 규칙 정도는 반드시 알아야겠죠.

로이님의 프로필 사진

저같은 경우 IDE를 이용해서 디버깅모드를 사용합니다.

이용운님의 프로필 사진

이용운

쏘뉴 팀장2023년 07월 20일

덧붙이자면 시대마다 버그의 개념도 바뀌기에 불가능하다고 봅니다. 이를테면 과거에는 주소검색시 '성수동'만 입력하고 선택하면 아무 문제 없었지만 요새는 '서울 특별시 ...'부터 입력하는게 일반화되어 동명전용 검색 기능을 사용자는 버그로 인식하더군요. 과거에는 버그가 아니었던 기능이 버그가 되어 버린 것이지요 :) 웹브라우저도 기능이 바뀌다 보면 작동되던 기능이 갑자기 안되는 경우도 있습니다. 세월이 흐르면서 버그가 자동으로 생겨나는 것이지요 :)

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!