반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

애플에 버그 report 하기

2012. 6. 9. 04:45 | Posted by 솔웅


반응형

A Complete Guide to Filing Bugs with Apple


모든 소프트웨어에는 버그들이 있습니다. Corona와 Apple도 예외는 아닙니다. Corona 팀 멤버와 빼어난 프로그래머 Eric Wing은 bug reporting 의 프로입니다. 그는 애플의 500개의 버그를 찾아냈습니다. (그리고 많은 부분이 개선 됐습니다.) 이전에 Eric이 올린 reporting bugs와 특징에 관한 글들을 읽어 보세요. 여러분도 발견한 버그가 있으시면 Apple Radar에 올려보세요.

Report your Apple Bugs and Features


앱 스토어에 iOS 앱을 올리시나요? 애플에 1년에 99불을 지불하시나요? 개발하실 때 Xcode를 사용하시나요? 어떤것에든 yes를 대답하셨다면 여러분은 Apple Developer 입니다.


모든 소프트웨어는 버그들을 가지고 있습니다. 코로나도 예외는 아니죠. 우리는 지원하는 다양한 플랫폼에서 발생하는 버그로부터 여러분을 보호해 드리려고 열심히 일하고 있습니다. 하지만 완벽하지는 못하죠. vendor 가 그 문제를 고쳐야 될 때도 있습니다.


애플 디벨로퍼로서 사람들은 가끔 이 버그때문에 절망하기도 하죠. 하지만 사실 애플은 bug report를 꾸준히 받고 있고 또 꾸준히 고치고 있습니다. 다른 큰 회사들이랑 다르죠. 큰 회사에 bug를 report 해 보세요. 그 방법을 찾는게 쉽지는 않을 겁니다. 하나 예를 들자면 저는 몇년전에 Southwest 항공에 버그를 report 하려고 시도했었습니다. Southwest는 의도적으로 온라인을 통해서 그들을 접촉하는 통로를 만들어 두지않았습니다. 그래서 저는 직접 편지를 썼습니다. 그들이 메일을 받았다는 연락은 받았지만 지금까지 그 bug는 고쳐지지 않았습니다.


애플은 unique 합니다. 그들은 외부 개발자들이 그들의 내부 bug/feature tracking system에 bug를 report 할 수 있도록 오픈했습니다. 그들은 이것을 Apple Radar라고 부르고 애플의 직원들이 정기적으로 그 report들을 관리합니다. 만약 task 가 Radar 에 있지 않으면 애플의 기술자들은 그 문제에 대해 일을 하지 않을 것이고 bug가 고쳐지지도 않을 겁니다.





*YOU* Must File Bugs to Get a Fix! (Not somebody else)


개발자들로부터 이런 얘기들을 많이 듣습니다. "누군가가 bug를 신고 할거야" 혹은 "애플이 이미 이 bug를 알고 있을거야". 이말은 잘못된 겁니다. 아무도 bug를 신고하지 않으면 Apple은 이것에 대해 알 수가 없습니다.


그리고 그 말이 사실이라고 해도 문제가 안 됩니다. Radar는 voting/priority 시스템이기 때문입니다. Radar는 report가 얼마나 많은 사람들에 의해 중복해서 보고 됐는지를 조사합니다. 더 많은 사람들이 올린 이슈에 대해 애플은 우선순위를 두어서 bug를 fix 할 겁니다. 그렇기 때문에 애플이 이미 알고 있더라도 누구나 bug를 report 해야하는 겁니다.


Test Betas and File Early


애플은 beta(seeds)를 release 합니다. 그들은 뭔가가 제대로 작동하지 않는지에 대해 알고 싶어 합니다. 이 때 제대로 잡아야 재앙을 막을 수 있습니다.


여러분들 중 iOS 5.0 에서 OpenAL 관련해 진짜 악성 bug가 있었다는 것을 기억하시는 분이 계실겁니다. 정말 재앙이었습니다. 왜냐하면 충분히 막을 수 있었거든요. 그런데 아무도 거기에 대해서 참여하지 않았습니다. iOS 5.0 beta 4에서 OpenAL API 에서 제대로 작동을 멈추게 하는 부분 관련한 audio code에서 무언가 문제점이 있었습니다. 그래서 audio 가 완전히 망가졌었죠. 몇몇 개발자들은 사실 beta 4에서 이 사실을 발견 했습니다. 그런데 애플이 알 거라고 집작했거나 아니면 누군가가 report 했을 거라고 생각해서 아무도 report를 하지 않았죠. 결국 beta 7 에서 그 문제점에 대해 제대로 인식하기 시작했고 제가 그 버그를 report 했습니다. 그런데 이미 때는 늦었습니다. 애플은 이미 코드 단에서 bug fix에 대해  lock down 해 버렸습니다. 그래서 애플은 이후에 보안 이슈같은 아주 critical 이슈들만 fix 했죠. 그래서 그 문제는 5.1 버전까지 fix 되지 않은 채로 있었습니다.


그러는 동안 우리는 Corona에서 이 문제와 관련되서 문제점을 극복하려고 몇주간의 시간을 투자했습니다. 우리가 그 solution을 찾았을 때까지 이 문제로 인해 bad performance 를 감수해야 됐습니다. 우리는 그 문제를 해결할 수 있었던 것을 행운이라고 생각합니다. 그것 이외에도 아직 fix되지 않은 iOS에 이미 있었던 버그들이 우리들의 일에 지장을 주었습니다.  그래서 그런 버그들이 또 다른 버그들을 야기하기도 했죠.


애플은 이것을 iOS 5.1에서 fix 했습니다. 문제는 계속 iOS 5.0 을 쓰고 있는 사람들에게는 그 bug가 계속 나타날 거라는 거죠. 그러니까 iOS 5.0 이 완전히 사라질 때까지 우리는 그 bug의 피해를 계속 받을 수밖에 없는 겁니다. (다행히 대부분의 유저들이 2주만에 over-the-air update를 통해서 5.1로 업그레이드 했습니다. 5.0과 관련된 문제가 훨씬 일찍 해결 될 거 같긴 합니다. )


여기서 배운 점은 누군가 beta 4에서 bug를 발견해서 report 하기만 했다면 이 문제는 5.0 이전에 해결 됐을 거라는 겁니다.


Write Good Bug Reports


애플이 제공하는 좋은 bug report 쓰기를 보시려면 여기로 가세요.


아래 몇가지 참조할 만한 사항을 추가합니다.


- 가급적 자세한 정보를 보내세요. 누군가가 그 버그에 대해 report 했을 수 있습니다. 하지만 여러분이 표현한 다른 현상이 버그를 고치는데 더 도움을 줄 수 있습니다.

- 현상을 간단하게 재현해 볼 수 있는 test case 를 제공해 주세요.

- 애플팀에게 어떤 버전에서 그 문제가 일어났고 어떤 OS와 device에서 테스트를 해 봤다는 것을 알려주세요.

- 관련된 다른 버그를 아시면 bug report 에 그 bug number를 포함해 주세요.

- Corona를 사용하고 있다는 것에 대해 그리고 모든 detail하게 알지 못하는 것에 대해 말하는데 부담 갖지 마세요. 애플은 여러분의 binary 파일로도 테스트를 할겁니다. 그러니까 bug report 에 여러분이 built 한 바이너리 파일도 넣어 주세요. 그리고 애플과의 discussion에 우리(Corona) 도 넣어 주세요. 애플에 버그를 submit 할 때 Corona에도 같이 submit 해 주세요. 그리고 애플의 bug report 를 copy 해주시면 감사하겠습니다. (bug number랑요)

- 애플은 좀 더 많은 정보가 필요하면 여러분을 contact 할 겁니다. 거기에 follow up 해 주세요. 애플이 여러분에게 contact 했는데 어떻게 제공할지를 모르면 저희에게 알려 주세요. 저희들이 애플이 필요로하는 정보를 얻는데 도움을 드리겠습니다.


Be Polite


제 경험상으로 애플 기술자들은 그들의 일에 자부심을 가지고 있고 그들의 제품을 사용하는 유저들을 사랑하고 있습니다. 그들은 좋은 bug report를 받는 것을 좋아합니다. 자신들의 상품을 좀 더 좋게 변화시키는 일을 할 수 있으니까요. 여러분도 정중하게 너무 꾸짖는 톤으로 들리지 않도록 신경 써 주세요.


Types of Bugs – Apple or Corona?


어떤게 애플 버그인지 어떤게 코로나 버그인지 어떻게 구분하죠? 가끔 이를 구분하기 어려울 때가 있습니다. 아래 몇가지 hint를 드리겠습니다.


Regression: 같은 device이고 수정하지 않은 같은 프로그램인데 이전 iOS 버전에서 잘 돌아가는데 새로운 iOS 버전에서 에러가 발생한다면 이것을 regression bug라고 합니다. 이것은 대부분 Apple bug 이고 bug report 를 해야할 사안입니다. 빨리 report 해 주세요.


Device specific:  iPad 1과 iPad 2 에서 뭔가 다른 이상한 점들이 있다면 이것은 Apple bug일 가능성이 큽니다. 이럴 경우 어느쪽 버그인지 확실하지 않으면 Apple 과 Corona에 같이 bug report 해 주실것을 부탁드립니다.


Similar problems with apps *not* made with Corona: 코로나를 사용하지 않은 다른 앱에서도 같은 버그가 발생하면 Apple bug일 가능성이 큽니다.


We tell you it’s an Apple bug:  우리가 이미 알고 있는 Apple bug들도 있습니다. 우리가 그것은 Apple bug라고 하면 그것을 애플에 report 해 주세요. (priority를 높이기 위해서요)


Feature requests: Radar 는 feature request도 할 수 있습니다. Siri API access 같은 것을 원하면 애플에게 그것을 오픈해 달라고 요청하실 수도 있습니다. 이런 것들도 bug report 해도 됩니다.


My Personal Results


저는 여러분에게 거짓말하고 싶지 않아요. 많은 버그들이 fix 되지 않을 겁니다. 그리고 애플 엔지니어들로부터 여러분이 report 한 버그에 대한 추가 정보를 요청 받는 경우도 아주 드물겁니다. 그런데 말씀 드릴 수 있는 것은 적지 않은 버그들이 response 받고 fix 된다는 점입니다. 저는 애플에 500여개의 버그를 report 했습니다. 그 중에 25% 가량이 fix되거나 해결 된 것 같습니다. 25%면 꽤 괜찮은 비율이라고 생각합니다. 구글이나 마이크로소프트에 report 한 버그는 0% 거든요. 제 bug report 를 그들이 읽었는지 어떤지에 대해서도 저는 전혀 모릅니다.



Bugs Every Corona User Should File


아래 몇개의 버그들을 소개해 드리겠습니다.


Lua support for Xcode:


Xcode 4에는 Lua 에 대해 syntax highlighting 을 제공하지 않습니다. 모든 Corona 유저들이 이 bug를 report 했다면 (feature request) 이 기능은 제공 됐을 겁니다. 왜냐하면 여러분은 이 report를 최고 우선 순위로 올려 놓을 만큼 충분한 머릿수가 되거든요. 이렇게 되도록 만듭니다. 오늘 bug report 를 해 주세요. 애플이 그 버그 레포트가 duplicate 인것을 알아 차리도록 bug report  rdar://9321859 부분을 알려 주세요.


Layer-backed WebView sometimes crashes on Mac:


맥에서 코로나의 Native object들은 애플의 layer-backed views라고 불리는 Core Animation technoloty와 아주 세련되게 잘 어울리도록 돼 있습니다. 하지만 WebView는 이 기술과 2007년 선보인 이래로 OpenGL과 작동하는데 심각한 문제가 있습니다. (제 original bug 가 그 때부터 보고 됐었거든요.) 많은 개선이 있었지만 아직까지 Corona Simulator와 crash 하는 문제점은 있습니다.  만약에 이 webview가 Corona Simulator에서도 잘 작동이 된다면 개발자들에게 아주 편리한 기능이 될 겁니다. 이 bug를 지금 fix 합시다. 여러분의 bug report 에 rdar://1326401 도 추가해 주세요.


Switching between recording and playback causes a momentary freeze:


불행히도 iOS5에는 1개 이상의 심각한 audio bug가 있었습니다. 다른 버그는 recording mode와 playback mode가 서로 교차할 때 일 순간 어플리케이션이 freeze 되는 현상을 유발합니다. Corona에서 제공하는 샘플 앱을 보면 iOS5에 대해 Lua 에서 이 부분을 피해가는 제 2의 방법을 사용하고 있는 것을 볼 수 있을 겁니다 . 그 제 2의 방법을 보면 recording과 playback 모드가 서로 switch 하는 것을 피하기 위해 동시에 playback 과 record 모드를 작동시키고 있습니다. 이런 방법으로 해결은 하고 있지만 이 방법은 비용이 많이 드는 방법입니다. 그래서 performance에도 악영향을 주고요. 아이폰은 큰 이어폰대신 작은 이어폰을 사용하기 위해 playback speaker를 switch 합니다. 아마도 feedback noise를 피하기 위해서 일 겁니다. 여러분들 중에 playback과 recording을 동시에 작동시키기를 원하지 않는 분들은 저희들에게 컴플레인을 하실겁니다. 하지만 small ear speaker를 사용하는 것은 애플의 디자인입니다. 동시에 작동하도록 만드는 것은 저희들이 어쩔 수 없이 선택한 겁니다. 애플만이 이 문제를 fix할 수 있습니다. 그러니까 bug report를 해 주세요.  rdar://145440 도 bug report에서 언급해 주시구요.


I have publicly mirrored these bugs at Open Radar:

저는 Open Radar에 이 버그들을 공개적으로 미러링하고 있습니다.


http://openradar.appspot.com/9321859

http://openradar.appspot.com/radar?id=1326401

http://openradar.appspot.com/radar?id=1454403



Open Radar


이것은 옵션사항입니다. 애플 개발자들은 이미 발견된 버그에 대해 같이 고민해보고자 그 버그를 share 하는 커뮤니티를 시작했습니다. 이 Open Radar에 여러분의 bug report를 공유해 보세요.


What are you waiting for?


여러분은 애플에 개발자 certificate를 위해 99불을 지불 하셨습니다.  여러분은 Mac을 구입하셨습니다. iOS device를 구입하셨습니다. Bug들은 개발시 여러분의 시간과 비용을 증가시킵니다. 그러한 것들은 여러분의 고객을 놓치게 합니다. 그대로 두면 나중에 다시 여러분의 일에 문제를 불러 일으킬 겁니다. 여러분의 투자금을 보호하세요. 그리고 미래의 골치 아픈 문제를 방지하세요. 그 버그들을 오늘 report 하세요.


Apple Radar


Apple Radar에 file report 를 시작하세요.

반응형