버그질라
버그질라(Bugzilla)는 강력하고 기능이 풍부하며 성숙한 결함 추적 시스템 및 버그 추적 시스템이다. 결함 추적 시스템을 통해 개발자 팀은 제품의 뛰어난 버그, 문제, 문제 개선, 기타 변경 요청을 효과적으로 추적할 수 있다. 간단한 결함 추적 기능은 깃허브(GitHub)와 기타 웹 기반 및 로컬 설치와 같은 통합 소스코드 관리 환경에 내장된다.
개요[편집]
버그질라는 유명한 소프트웨어 개발자인 모질라재단(Mozilla Foundation)이 소개한 특별한 버그 추적 도구이다. 이 도구는 방대한 양의 버그를 추적할 수 있다. 버그질라는 모든 소프트웨어 개발 프로세스의 잠재적 버그를 탐지하는 것으로 유명해졌다. 결과적으로 개발자는 프로세스가 끝나면 오류가 없는 제품을 생산할 수 있다. 많은 버그 추적 도구가 있지만 대부분 유료에 비싸지만, 버그질라는 값비싼 버그 추적 도구에 대한 무료 대안이라는 점에서 주목을 받았다. 즉, 버그질라는 모든 필수 기능과 함께 제공되는 완전 무료 버그 추적 도구로 인기 있는 버그 추적 도구이며, 전 세계 수천 명의 개발자가 사용하고 있다.[1]
역사[편집]
1998년에 아마존(Amazon)의 아마존닷컴(Amazon.com)이 처음 온라인 시장에 등장했다. 그 당시 처음으로 출시된 제품 중 하나가 무료 오픈소스 도구를 사용하여 구현된 버그 시스템인 버그질라이다. 버그질라는 티씨엘그룹(TCL)의 테리 와이즈만(Terry Weissman)이 사내 시스템을 대체하기 위해 모질라재단(mozilla.org)에서 사용하다가 넷스케이프(Netscape)에서 사용되었다. 버그질라는 1998년 4월 6일, 모질라 서버에 대중들에게 처음 등장하게 되었다. 이후, 버그질라는 공개 배치 시험과 수정 후에 익명의 동시 버전 시스템(CVS)을 통해 공개 소스로 공개되어 사용할 수 있었다. 버그질라를 개발한 테리 와이즈만(Terry Weissman)은 펄(Perl) 언어를 개발하여 9월 15일에 발표했으며, 동시 버전 시스템을 사용한 버그질라 2.0 버전도 출시되어 수많은 프로젝트들이 상업적 및 무료 프로젝트의 소프트웨어 결함을 추적하는 주된 방법으로 채택되었다. 2000년 4월에는 테리 와이즈만이 버그질라의 프로젝트 제어권을 넘겨주어 타라 헤르난데즈(Tara Hernandez)가 프로젝트를 관리하게 되었다. 이후, 버그질라 3.0, 4.0, 5.0 버전이 연이어 출시되었다.[2]
특징[편집]
장점[편집]
버그질라는 라이선스가 필요 없는 오픈 소스 소프트웨어이다. 설치가 쉽고 유지 관리가 쉬우며, 특히, 새 버전으로 마이그레이션 할 때 특별한 노력을 기울일 필요가 없이 자신의 사용자 그룹을 가질 수 있다. 잠재적인 소프트웨어 버그를 기록하는데 필요한 모든 필수 기능으로 구성되어 있으며, 여러 첨부 파일과 호환되어 다양한 형식도 지원한다. 특히, 버그질라의 경우 보고 목적에 이상적인데, 필터링 메커니즘 덕분에 다양한 매개 변수를 사용하여 버그를 쿼리 하는데 사용할 수 있다.
단점[편집]
버그질라는 영향을 받는 여러 테스트 사례에 대해 연관 방법이 있는 것이 좋다. 우리가 알다시피 회귀 테스트 슈트를 위한 장소는 별로 없다. 따라서, 모든 회귀 테스트 실행 후 발견된 버그는 회귀 테스트 실패의 형태로 식별된다. 또한, 버그와 관련된 무서는 매우 제한적이며, 스프린트 연결이 없기 때문에 민첩한 메소드와 호환되지 않는다.
자격 조건[편집]
버그질라의 운영체제는 서버에버그질라를 설치하고 실행하기 위해 핵심 자격 조건으로 펄을 설치해야 한다. 버그질라는 윈도우(Window), 리눅스(Linux), 매킨토시(Mac) 오에스텐(OS X) 운영체제에서 펄을 설치할 수 있는 모든 플랫폼에 설치할 수 있다. 리눅스는 적극적으로 권장되며, 1급 시민 운영체제이다. 하드웨어 자격 조건은 사용자 기반의 규모와 데이터베이스의 버그 수에 따라 크게 달라지며, 4GB 이상의 램(RAM)과 빠른 프로세스를 갖추어야 한다. 또한, 수천 명의 사용자와 수십만 개의 버그가 있는 대규모 팀에는 더 많은 하드웨어가 필요하다. 아이디어를 제공하기 위해 모질라의 버그질라에 설치된 웹헤드(webheads) 3개, 마스터 데이터베이스 1개, 슬레이브 데이터베이스 3개, 이메일 릴레이 1대 등 8대의 서버를 사용한다. 또한, 펄모드(mod_perl)는 성능 향상과 높은 액세스를 위해 설계되었다. 버그질라의 소프트웨어에는 데이터베이스 서버, 웹 서버 및 펄 언어가 필요하다. 모든 권장 사항에서 버그질라는 버전 엑스 이상이 필요하다. 최신 출시 버전은 버그 수정이 더욱더 많아 최신 버전일수록 지속해서 지원되며, 보안 수정이 가능하다.[2]
주요 기능[편집]
사용자[편집]
버드질라의 사용자 기능에는 다양한 기능들이 있다. 보고서 및 차트 기능으로, 버그 데이터베이스가 지금 어떻게 보이는지 알고 싶다면 X축 및 Y축으로 두 필드를 사용하고 검색 기준을 사용하여 원하는 버그를 제한하는 테이블을 만들 수 있다. 즉, 각 제품의 각 상태에 몇 개의 버그가 있는지를 보고서를 통해 볼 수 있다. 시간 추적 기능은 버그를 수정하는데 걸리는 시간을 추정한 다음 작업에 소요되는 시간을 추적할 수 있다. 버그를 완료해야 하는 기한을 설정할 수도 있다. 또한, 시스템 요청 기능의 요청 시스템은 다른 사용자에게 특정 버그 또는 첨부 파일로 작업을 요청하는 방법이다. 다른 사용자가 요청을 승인하거나 거부할 수 있으며, 버그질라는 응답을 추적한다. 이것은 다양한 용도로 사용할 수 있는데, 코드 검토를 요청하거나 특정 사용자의 정보를 요청하거나 관리자의 승인을 받아야 하는 경우 시스템은 매우 유연하며 필요한 작업을 수행할 수 있다. 개인 첨부파일 및 주석은 내부자 그룹에 있으면, 특정 첨부파일과 댓글을 비공개로 표시하여 내부자 그룹에 속하지 않은 사용자에게는 보이지 않는다. 사용자는 코멘트가 숨겨졌다는 것을 알지만 그 내용에 접근할 수 없다. 자동 사용자 이름 완성 기능은 드롭 다운 사용자 목록 기능이라고도 불리며, 소규모 버그질라 설치의 경우에 버그질라는 선택 가능한 드롭 다운 목록에 모든 사용자 표시, 다른 사용자에게 버그 재할당, CC 목록에 사용자 추가 또는 기타 여러 영역을 지원한다. 관리자는 특정 사용자가 다른 사용자의 존재를 알지 못하도록 사용자 가시성 제어를 사용하여 각 사용자의 드롭 다운 목록에 나타나는 사람을 제어할 수 있다. 대규모 설치의 경우 버그질라는 담당자, CC 목록 또는 사용자 이름을 사용하는 기타 필드의 사용자 이름을 입력할 때 자동 완성을 지원한다. 이 필드 중 하나에 3글자 이상을 입력하면 버그질라는 사용자 이름이나 실제 이름에 해당 문자가 있는 사용자 목록을 제안한다. 버그에 첨부된 패치를 멋지고 다채로운 보기로 제공하는 패치 뷰어는 LXR 서버(LXR server), 동시 버전 시스템(CVS), 본사이(Bonsai)와 통합되어 패치에 대한 더 많은 정보를 제공하여 코드 검토가 훨씬 쉽다.[2]
- 이메일 기능
이메일 알림 기능은 이메일 알림 기능은 사용자 기본 설정에 의해 제어된다. 버그질라에서 변경된 사항과 개임 사용자 환경 설정에 의해 완전히 제어되는 버그에 대한 알림을 받을 수도 있으며, 이메일로 예약된 보고서는 버그질라에서 지정한 일정에 따라 특정 검색 결과를 지정하는 사용자와 다른 사용자 및 그룹을 보내는 시스템이 있다. 하루 중 언제라도 발생 가능하며 15분마다 발생할 수 있는데, 이 시스템에 대한 액세스는 그룹 시스템에 의해 제어되므로 액세스 권한이 있는 사용자와 자신이 아닌 다른 사용자에게 보고서를 보낼 수 있는 사용자를 개별적으로 제한할 수 있다. 다른 사용자 보기 기능으로, 버그질라에서 다른 사용자를 "보고 싶다"라고 말할 수도 있다. 그 사용자가 마치 사용자인 것처럼 버그질라에서 받는 모든 이메일을 받게 된다. 이는 한 개발자가 휴가를 가고 다른 개발자가 휴가를 보내는 동안 다른 개발자가 해당 개발자의 버그를 처리해야 할 때 특히 유용하게 사용된다. 단, 보안을 우회하는 것을 허용하지 않고, 버그에 접근할 수 없다면 어떤 상황에서도 이에 대한 알림을 받지 못하는 단점이 있다. 이메일로 버그 파일 전송 및 수정이 가능하다. 웹 인터페이스 외에도 새로운 버그를 생성하거나 기존 버그를 수정할 이메일을 버그질라에 보낼 수 있으며, 버그에 파일을 매우 쉽게 첨부할 수도 있다.[2]
- 버그관리 기능
아톰(Atom), 아이캘(iCal) 등 다양한 형식의 버그 목록은 버그를 검색하여 기본 HTML 레이아웃이 아닌 다양한 형식으로 결과를 얻을 수 있다. 피드처럼 검색을 구독하려는 경우에는 아톰에서 버그 목록을 사용할 수 있다. 또한, 아이캘린더(iCalendar) 형식으로 제공되기 때문에 버그질라의 시간 추적 기능을 사용하여 버그가 캘린더에 들어가는 위치를 확인할 수 있다. 모든 버그의 세부 정보를 포함하는 인쇄 가능한 보고서 형식, 스프레드시트로 가져오기 위한 CSV 형식, 다양한 XML 형식과 같은 더 많은 형식을 사용할 수 있다. 자동 중복 버그 감지 기능은 버그질라에서 버그를 제출할 때 간단한 요약을 입력하기 시작하자마자 시스템에서 유사한 버그를 자동으로 찾고 사용자가 새로운 버그를 제출하는 대신, 해당 버그 중 하나의 CC 목록에 자신을 추가할 수 있다. 버그질라는 한 버그질라 설치에서 다른 설치로 버그를 이동하는 기능을 지원하는 설치 간 버그 이동 기능이 있다. 이 기능은 버전 간에도 작동하며, 수동 작업을 하지 않고도 버그질라 2.16 설치에서 버그질라 3.0 설치로 버그를 이동할 수 있다.[2]
- 검색 기능
버그질라의 고급 검색 기능은 두 가지 검색 형식을 제공한다. 신규 사용자에게 간단하고 버그의 전체 텍스트를 검색하는 구글과 유사한 기본 버그 검색과 시간 기반 검색 및 구체적인 쿼리를 포함하여 원하는 검색을 할 수 있는 시스템을 가지고 있다. 검색 저장 및 공유 기능은 검색을 수행한 후에는 모든 페이지의 바닥글에 나타나도록 저장할 수 있으며, 다시 실행하려면 링크를 클릭하기만 하면 된다. 검색을 저장한 후 올바른 권한이 있으면 해당 검색을 버그질라에 속한 모든 그룹과 공유할 수도 있다. 그런 다음 검색과 함께 바닥글에 검색을 표시하는 옵션이 있다.[2]
관리자[편집]
버그질라 프로젝트는 보안 기능으로, 에스큐엘 인젝션(SQL Injection)을 방지하기 위해 테인트(taint) 모드에서 실행된다. 사이트 간 스크립팅을 방지하기 위해 신중한 시스템을 갖추고 있으며, 버그질라의 보안 취약성 패치 기록은 훌륭하며 시스템은 보안을 염두에 두고 모든 단계에서 시스템을 설계한다. 정보 유출에 대해 매우 조심스러워 그룹 시스템을 사용하여 무언가를 숨기면 아무도 그것에 대한 정보를 얻을 수 없고, 누군가가 비밀번호를 추측하여 계정을 악용하려고 시도하면 무차별 대입을 방지하기 위해 몇 번의 시도 후 계정이 자동으로 잠기게 된다. 버그질라의 웹서비스 인터페이스는 XML의 원격 프로시저 호출(RPC)과 제이슨(JSON)의 원격 프로시저 호출 웹 서비스 인터페이스를 통해 액세스하고 수정할 수 있다. 이를 통해 버그질라와 쉽게 상호작용하는 외부 도구를 작성할 수 있다. 버그질라 프로젝트는 웹서비스 인터페이스를 출시 버전 간에 안정적으로 유지하기 위해 작동하여 버그질라의 XML 원격 프로시저 호출과 제이슨 원격 프로시저 호출 웹 서비스 인터페이스의 한 버전에 대해 작성된 애플리케이션은 향후 버그질라 버전에서도 계속 작동해야 한다. 버그질라는 그룹으로 버그 가시성 및 편집 제어가 가능하다. 관리자가 어떤 사용자 그룹을 편집하거나 버그를 편집하여 볼 수 있는지 정의할 수 있다. 이러한 제어는 전체 엔터프라이즈 그룹 시스템에 대한 소그룹 요구를 지원하도록 설계되었다. 또한, 관리자는 유저 임퍼스네이터(Impersonate) 기능을 사용하여 다른 관리자를 제외한 시스템의 모든 사용자를 모방할 수 있다. 이는 문제 해결에 도움이 되기도 하고, 다양한 경우에도 유용하게 사용된다.
버그질라는 다양한 인증방법으로, 기본으로 제공되는 사용자 데이터베이스와 경량 디렉터리 액세스 프로토콜(LDAP) 서버에 대한 인증을 지원한다. 또한, 아파치(Apache)에서 지원하는 모든 인증 방법을 사용할 수 있도록 불완전한 인증도 지원한다. 이러한 인증 방법을 스택하여 사용자가 경량 디렉터리 액세스 프로토콜에서 발견되지 않으면, 버그질라 데이터베이스로 대체되도록 할 수 있다. 버그질라는 다양한 데이터베이스 엔진을 지원한다. 마이에스큐엘(MySQL), 포스트그레스큐엘(PostgreSQL), 오라클(Oracle)에서 실행할 수 있다. 선택한 데이터베이스용 드라이버를 작성할 수도 있다. 버그질라의 온전성 검사(Sanity Check)는 데이터베이스의 불일치를 스캔하며, 오류를 보고하고 자동으로 수정하도록 제안하거나 문제 해결에 도움이 되는 링크를 제공한다.[2]
- 사용자 정의
사용자 정의가 높은 설치를 위한 확장 메커니즘은 버그질라의 모든 사용자 인터페이스와 모든 이메일은 대부분 HTML, CSS 및 자바스크립트(JavaScript)만 포함하는 파일인 템플릿에서 생성된다. 사용자 정의를 위해 펄을 알 필요가 없으며 템플릿을 편집하기만 하면 된다. 좀 더 복잡한 작업을 위해 버그질라는 모든 버그질라 설치에 파일을 드롭하고 다양한 방식으로 동작을 변경할 수 있는 고급 확장 시스템을 가지고 있다. 확장 기능은 버그질라의 주요 출시 버전에서도 거의 변경없이 유지할 수 있는 사용자 정의를 작성하는 적합한 방법이다. 버그질라는 버그 데이터베이스에 사용자 정의 필드를 추가하여 조직에 고유한 데이터를 캡처하고 검색할 수 있도록 지원하며, 다양한 유형의 사용자 정의 필드가 지원되어 다른 필드의 값을 기반으로 표시하여 관련성이 있을 때만 사용할 수도 있다. 또한, 버그질라는 기본 워크플로뿐만 아니라 버그 상태 및 해결 방법의 기본 목록과 함께 제공된다. 즉, 버그 상태 및 해결 방법을 매우 쉽게 생성하거나 삭제할 수 있으며 워크플로를 완전히 사용자 지정할 수 있다.[2]
- 언어
버그질라의 언어는 완전한 유니코드로 지원된다. 모든 버그질라는 일본어 및 중국어와 같은 멀티 바이트 언어를 포함하여 유니코드(unicode)를 완벽하게 지원한다. 버그질라에 유니코드로 데이터를 입력할 수 있으며 모든 데이터를 유니코드로 정확하게 검색하고 정렬할 수도 있다. 버그질라 관리자는 설치도중 지원되는 언어를 구성하고 사용자 브라우저에서 보낸 HTTP의 억셉트언어(Accept-Language) 헤더를 기반으로, 사용자에게 올바른 현지화된 콘텐츠를 자동으로 제공한다. 또한, 뛰어난 성능을 위한 펄모드도 지원한다. 버그질라는 아파치의 펄모드에서 실행할 수 있으며, 개별 페이지 로드 속도를 크게 향상시킨다. 버그질라 페이지는 펄모드에서 실행될 때 종종 1초 이내에 로드되고, 논펄모드(non-mod_perl) 환경에서도 실행되어 아파치의 일반 CGI모드(mod_cgi), 아이아이에스(IIS) 및 원하는 웹서버에서 실행할 수 있다.[2]
각주[편집]
참고자료[편집]
- 〈Bugzilla 대 지라 – 종합 비교〉, 《아이스타소프트》, 2020-03-04
- 버그질라 공식 사이트 - https://www.bugzilla.org/
같이 보기[편집]