2009-01-21 39 views
22

Trong công ty tôi, những quy tắc áp dụng:theo dõi Bug thực hành tốt nhất

  • Chỉ xét nghiệm được phép tạo các vấn đề.
  • Nhà phát triển phải gửi e-mail cho người kiểm tra để họ tạo sự cố.
  • Nhà phát triển gửi e-mail đến khách hàng tiềm năng về kỹ thuật để họ tự gán cho họ các vấn đề mà họ cho rằng họ có thể giải quyết.
  • Nhà phát triển không thể chỉ định vấn đề cho nhà phát triển khác (Phải gửi e-mail đến khách hàng tiềm năng kỹ thuật).
  • Nếu sự cố của nhà phát triển bị chặn bởi mã của nhà phát triển khác, cô ấy phải giải quyết vấn đề này bên ngoài hệ thống theo dõi lỗi.
  • Chỉ người thử nghiệm mới được phép đóng các vấn đề được mở bởi chính họ.
  • Tất cả các bài tập phải trải qua hướng dẫn kỹ thuật để anh ấy có thể theo dõi các vấn đề.
  • Lỗi không liên quan trực tiếp đến giao diện người dùng không được nhập vào hệ thống (phải được giải quyết bên ngoài).

Bạn đang sử dụng luồng theo dõi lỗi nào? Nó có hoạt động tốt cho bạn không?

Trả lời

13

Chúng tôi sử dụng Bugzilla để theo dõi lỗi và có những quy tắc như:

  • Bất kỳ ai có thể báo cáo lỗi và mọi thay đổi chút nào nên đi qua hệ thống lỗi theo dõi. Nếu nó là một sự nâng cao trong sản phẩm, lỗi sẽ được đánh dấu là nâng cao và hệ thống theo dõi lỗi phải được theo sau.

  • Bất kỳ ai cũng có thể gán lỗi cho bất kỳ ai khác có nghĩa là dễ dàng định tuyến sự cố cho người khác nếu lỗi nằm trong mã của người khác. Có thể có trường hợp khi một lỗi cần được sửa ở nhiều nơi, nghĩa là có sự phụ thuộc vào mã của người khác để được sửa trước và sau đó người khác sẽ sửa mã của họ. Trong những trường hợp đó, một lỗi được gán cho người cần thực hiện công việc trước và sau đó anh ta/cô ấy định tuyến lại lỗi cho người thích hợp bằng cách gán lại nó.

  • Nếu sự cố xuất hiện ở nhiều nơi và mã phía sau khác nhau nhưng vấn đề dường như giống nhau, lỗi được nhân bản sao cho có thể lưu giữ tất cả các thay đổi riêng biệt.

  • Khách hàng tiềm năng kỹ thuật chịu trách nhiệm ưu tiên các lỗi dựa trên nhu cầu khắc phục cụ thể đó.

  • Xét nghiệm/QAEs chịu trách nhiệm chỉ định một mức độ nghiêm trọng đến lỗi ví dụ: Critical/lớn/nhỏ, vv

  • Tất cả lỗi đi qua hệ thống lỗi theo dõi. Lỗi đến từ khách hàng được phân loại riêng biệt bằng cờ tùy chỉnh để cho biết lỗi của khách hàng. Lỗi của khách hàng chủ yếu là trong các bản phát hành và bản vá được phát hành cũ hơn được tạo cho chúng, do đó, chúng được giữ riêng biệt.

Bằng cách này chúng tôi đảm bảo rằng chúng tôi theo dõi tất cả những thay đổi đồng thời trong hệ thống của chúng tôi Nguồn Control (đó là TFS btw) và Bugzilla để cho bất kỳ sự thay đổi có thể được truy trở lại với bản gốc mã thay đổi/chủ sở hữu nếu cần trong tương lai.

+0

Có vẻ lý tưởng với tôi. Bạn cũng có thể chỉ định cách quản lý theo dõi ai làm gì, và làm sao họ có thể chắc chắn mọi người đang làm việc có trách nhiệm và không chỉ giao cho người khác tránh trách nhiệm bằng cách nói "không phải lỗi của tôi"? –

+0

Đội dẫn đầu theo dõi mọi thứ đang diễn ra trong đội của họ. Vì vậy, nếu bất kỳ lỗi nào được gán sai, nó sẽ bị bắt nhanh chóng. BugZilla đã có một số cơ chế tìm kiếm rất tốt có sẵn thông qua đó bạn có thể theo dõi hầu hết những thứ như ai đang làm những gì Làm thế nào nhiều lỗi đã mở cửa trở lại vv – Aamir

+0

+1 vì nó dường như làm theo những gì chúng tôi làm. – Klelky

2

Chờ, bạn viết:

Nếu vấn đề của nhà phát triển bị chặn bởi mã của nhà phát triển khác, cô phải giải quyết vấn đề này bên ngoài của hệ thống theo dõi lỗi .

vì vậy có các lỗi nằm ngoài luồng lỗi thông thường. Sau đó bạn có một hệ thống thứ hai để theo dõi những lỗi đó, hoặc tất cả đều là ad-hoc?

Có vẻ như hệ thống theo dõi lỗi của bạn thực sự là một hệ thống theo dõi lỗi người dùng.

Ứng dụng có hoạt động tốt cho bạn hay bạn đang tìm kiếm giải pháp thay thế?

+0

Nó hoạt động tốt cho quản lý tôi nghĩ (không phải cho tôi tất nhiên nhưng đó không phải là một điều tôi có thể thay đổi). Hệ thống thứ hai bạn đang nói về chủ yếu là e - mail. –

+0

Làm thế nào để nó hoạt động tốt cho quản lý khi những thứ họ cần quan tâm là hoàn toàn vô hình? –

2

Tôi nghĩ rằng khách hàng cũng có thể tạo sự cố, không có sự tách biệt giữa báo cáo lỗi và yêu cầu tính năng.

Việc chuyển nhượng các vấn đề không nên được thực hiện bởi chính nhà phát triển: quyết định vấn đề nào phải được khắc phục cho bản phát hành tiếp theo phải thuộc trách nhiệm của khách hàng và người quản lý.

Các phương pháp khác có thể được tìm thấy trong Painless Bug Tracking bởi Joel Spolsky.

+0

Điều gì xảy ra nếu vấn đề được giao cho tôi cần được nhà phát triển khác làm việc? Tôi có nên gán nó cho cô ấy không? –

+0

Theo ý kiến ​​của tôi, đây là vai trò quản lý để phân công công việc cho các nhà phát triển của nó. Tôi cho rằng nếu người quản lý giao một vấn đề cho bạn, bạn có thể thành công hoặc không biết đội của mình, trong trường hợp đó, một cuộc thảo luận với anh ta có thể giải quyết vấn đề. – mouviciel

+0

Điều này có nghĩa là người quản lý cần phải chỉ định mọi thứ và là một điểm thất bại duy nhất. Nó sẽ không tốt hơn nếu đội xử lý mọi thứ thường xuyên, và người quản lý bước vào bất cứ khi nào thích hợp? –

10

Âm thanh khá phức tạp. Chúng tôi đang sử dụng khoảng quá trình sau:

  • Mọi người trong công ty đều có thể mở vé phát hành và giao cho bộ phận.
  • Mọi bộ phận đều có "người điều phối", người kiểm tra vé đến để có hiệu lực và ưu tiên chúng.
  • Tùy thuộc vào thực tiễn của phòng ban, nhà phát triển được giao vé cho chu kỳ phát triển hiện tại của người điều phối, hoặc họ tự gán vé, ưu tiên cao nhất trước.
  • Khi vé được giải quyết, vé sẽ được chuyển về bất kỳ ai đã mở nó. Người này cũng thực hiện tất cả các hoạt động cần thiết sau đó, như thông báo cho khách hàng.
  • Tất cả các vé được giữ trong một hệ thống phần mềm giúp dễ dàng thực hiện các tác vụ này. Nếu bạn nhận được một vé, bạn cũng nhận được một thông báo e-mail.

Đây là quá trình nhẹ khuyến khích các nhà phát triển chịu trách nhiệm về các vấn đề của họ.

Bên cạnh đó, chúng tôi có một số biện pháp đảm bảo chất lượng tại chỗ cho quá trình thay đổi mọi thứ trong phần mềm, bất kể nguồn và loại yêu cầu thay đổi. Điều này bao gồm đặc biệt:

  • Tất cả mã phải được xem xét trước khi được kiểm tra vào hệ thống quản lý mã nguồn. Điều này bao gồm GUI và đánh giá cơ sở dữ liệu của các nhà đánh giá chuyên ngành nếu cần thiết
  • Mã phải được kiểm tra kỹ lưỡng bởi chính nhà phát triển trước khi kiểm tra.
  • Sau khi xây dựng hàng tháng, tất cả thay đổi phải được kiểm tra lại để ngăn sự cố xảy ra do một số thay đổi ảnh hưởng đến cùng một mã.
  • Xây dựng hàng tháng nhập "giai đoạn khách hàng đầu tiên", nơi nó chỉ được triển khai cho một vài hệ thống khách hàng. Nếu giai đoạn này cho thấy không có lỗi nào chưa được phát hiện trước đó, bản dựng được tuyên bố là an toàn.
+0

Chúng tôi sử dụng quá trình tương tự và nó hoạt động tốt. – Naveen

2

Tôi đã sử dụng một số loại hệ thống theo dõi lỗi khác nhau trong 10 năm qua, bao gồm không có gì, tài liệu từ, FogBugz, Bugzilla và Biện pháp khắc phục. FogBugz là một trong những tốt nhất. Tại nơi làm việc đó, bất cứ ai cũng được phép nhập lỗi, và bất cứ ai cũng có thể gán lỗi cho bất cứ ai khác. Tôi thấy rằng điều này làm việc tốt đặc biệt là nếu tôi tìm thấy một lỗi nhỏ trong mã của tôi. Thay vì dành một giờ viết e-mail và điền vào các mẫu đơn và nhận được một số người khác tham gia, tôi có thể nhanh chóng đăng nhập mà tôi đã tìm thấy và sửa lỗi. Điều này khuyến khích tôi nhập tất cả các lỗi mà tôi tìm thấy và sửa chúng nhanh chóng. Nếu một lỗi đòi hỏi rất nhiều công việc sau đó tôi sẽ chỉ định nó cho người quản lý của tôi để ông có thể ưu tiên nó với công việc khác của tôi.
Tại nơi tôi đã sử dụng Bugzilla, mỗi lần lỗi được tạo, gán hoặc thay đổi một e-mail đã được gửi đến tất cả các nhà phát triển và người quản lý. Điều này đã có tác dụng ngược lại, nó ngăn cản tôi tìm và nhập các lỗi trong hệ thống.

+3

đó là bởi vì bất cứ ai thiết lập hệ thống không đủ độ mịn các email. Không phải lỗi của bugzilla, thực sự. –

1

cửa hàng nhỏ của tôi sử dụng một quy trình làm việc khá đơn giản:

  • Bất cứ ai cũng có thể tạo ra một vấn đề (Tôi nghĩ rằng đó là không cần thiết hạn chế không cho phép điều này) này bao gồm khách hàng và người sử dụng của các dự án mã nguồn mở của chúng tôi.
  • Bảng điều khiển thay đổi (âm thanh lạ mắt, nhưng chỉ là người dẫn đầu và kỹ thuật của QA, cùng với người quản lý sản phẩm) đánh giá các vấn đề mới và gán phiên bản sửa lỗi và ưu tiên
  • Bất cứ ai cũng có thể gán lại lỗi để hỏi phóng viên câu hỏi hoặc truyền lại cho người khác để sửa chữa hoặc kiểm tra
  • Bất cứ ai cũng có thể đánh dấu một lỗi giải quyết
  • Chỉ QA có thể đóng một lỗi - chúng tôi làm điều này để thực thi xác minh của mỗi bản vá lỗi.

Bằng cách này, mọi thứ được đăng nhập vào hệ thống theo dõi lỗi và chúng tôi giữ mọi thứ hiệu quả bằng cách không hạn chế cập nhật. Bạn có thể kết thúc với một chút "spam spam" theo cách này, nhưng nó tốt hơn là tạo ra tắc nghẽn trong kinh nghiệm của tôi.

Chúng tôi sử dụng JIRA làm trình theo dõi lỗi - có thể thiết lập tất cả các quy trình công việc tùy chỉnh trong JIRA để thực thi quy trình cụ thể của bạn, nhưng tôi chưa bao giờ thấy cần phải làm điều đó trong các tổ chức nhỏ hơn.

2

lỗi khai thác gỗ là về tốc độ - chỉ số tiền tối thiểu của các thông tin cần thiết để điều tra/sao chép lỗi

cho các dự án web, điều này đi xuống đến: 1) một tiêu đề lỗi mô tả, 2) trang mà lỗi xảy ra, 3) mô tả của vấn đề + ảnh chụp màn hình HOẶC hướng dẫn từng bước để tái tạo các vấn đề (nếu một isnt ảnh chụp màn hình được cung cấp)

ảnh chụp màn hình rất mạnh mẽ cho hai lý do: 1) hình ảnh nói một ngàn chữ, 2) nó mang lại khả năng chi trả cho báo cáo lỗi (bao giờ điều tra một lỗi bạn không thể sao chép ăn và nghĩ rằng "trông giống như khách hàng đang thực hiện những thứ lên một lần nữa")

tôi có một bài viết blog mà đi vào chủ đề hơn nữa:? Logging Bugs Like a Pro

6

Tôi đã sử dụng một số lượng lớn các các hệ thống theo dõi vấn đề, bao gồm cả gnats (ugh!), Bugzilla (hơi ít ugh), Trac, Jira, và bây giờ là FogBugz. Tôi thích Trac nhất, nhưng đó có thể là vì tôi không phải là quản trị viên trên FogBugz và nó đang được sử dụng một cách đáng buồn và khủng khiếp trong hiện thân của nó.

Bắt quyền công việc là điều rất quan trọng, và đủ kỳ lạ nó bắt đầu bằng cách quyết định những gì để đưa vào trình theo dõi lỗi của bạn và cách gắn nhãn những thứ bạn đặt vào đó. Ngay khi bạn có khách hàng, tất cả các nhóm phát triển thực sự theo dõi ba loại vấn đề sau:

  1. Sự cố được ghi nhận bởi khách hàng thực (lỗi trực tiếp).

  2. Sự cố với phần mềm mới hiện đang được phát triển (lỗi chính tả).

  3. Những điều chúng tôi muốn làm trong tương lai (tính năng).

Mỗi một trong ba loại vấn đề này đều có ưu tiên riêng của họ. Một 'lỗi trực tiếp' chỉ là lỗi chính tả trên một nút có thể ít quan trọng hơn nhiều so với lỗi 'dev' đang chặn một bản phát hành công khai hoặc kiểm tra sự phát triển, thử nghiệm khác, v.v.

Mức độ nghiêm trọng của vấn đề mô tả tác dụng phụ của khủng khiếp đến mức nào. Theo kinh nghiệm của tôi, điều này tóm tắt:

  1. Chương trình đang hủy hoại điều gì đó. Dữ liệu, khách hàng bị lập hoá đơn không chính xác, sai thuốc đang được phân phối. Điều này là xấu như nó được. Tôi đã từng làm việc trên một hệ thống mà một lệnh phần mềm rút lại một cánh tay thủy lực ngay giữa một người phục vụ. Điều này là xấu như nó được.

  2. Chương trình bị lỗi và chúng tôi không có công việc xung quanh, nhưng nó không làm hỏng bất kỳ thứ gì (ngoài việc ngừng hoạt động) trong thời gian chờ đợi. Nếu kết quả downtime trong một cái gì đó bị hủy hoại mức độ nghiêm trọng sử dụng # 1.

  3. Chương trình hoạt động không đúng, nhưng chúng tôi có một công việc được xác định có thể thực sự được sử dụng.

  4. Chương trình hoạt động không đúng cách gây phiền nhiễu nhưng không ảnh hưởng đến kết quả.

  5. Chương trình cần phải được tốt hơn trong một số cách được xác định rõ: dễ sử dụng, thực hiện một tính năng mới, chạy nhanh hơn, vv

Một vấn đề khác nảy sinh rất nhiều trong các hệ thống này là khái niệm của 'vai trò'. Khi được áp dụng cho các hệ thống theo dõi vấn đề, các vai trò sẽ được chuyển thành người được phép làm việc. Ai sẽ tạo ra vấn đề? Ai sẽ thay đổi trạng thái, người sẽ chuyển nhượng lại họ cho người dùng khác, người sẽ đóng họ lại, v.v.

Trong các nhóm nhỏ đến trung bình tôi đã làm việc chặt chẽ, bộ quy tắc chung này làm việc tốt:

  • Bất cứ ai cũng có thể tạo sự cố. Người sáng tạo có thể chỉ định vấn đề cho bất kỳ người nhận (hoặc hầu hết) người nhận nào vì nó được tạo. Người nhận mặc định là nhóm Triage Issue. Các nhà phát triển có thể lưu ý các lỗi mà họ đã tìm thấy khi làm việc trên mã theo cách này và gán lỗi cho chính họ, để theo dõi lý do tại sao họ đang thay đổi mã.

  • Nhóm Triage gặp (xác định khoảng thời gian ở đây) để đánh giá và chỉ định vấn đề. Nhóm Triage đặc biệt tìm kiếm các báo cáo trùng lặp, trong trường hợp đó, vấn đề mới được 'cuộn lên' thành chuỗi sự cố hiện có; đối với các vấn đề chưa được sản xuất từ ​​trường, được gán cho QA để tái sản xuất; và đối với các vấn đề mức độ nghiêm trọng của khách hàng.

  • Người khởi tạo lỗi là người CHỈ có thể đóng. Các báo cáo lỗi do QA hoặc CSR khởi xướng không thể bị đóng bởi nhà phát triển. Vâng, điều này có nghĩa là các lỗi mà CS và nhóm dev không đồng ý vẫn chưa được giải quyết. Tại sao trình theo dõi vấn đề lại báo cáo sự cố được giải quyết khi mọi người không đồng ý? Nếu bạn muốn một kho lưu trữ kỹ thuật số của những lời nói dối, bạn có C-SPAN.

Một số nhóm có thể muốn chuyển vấn đề từ bộ này sang bộ phận khác cho người quản lý, các nhóm khác có thể cho phép bất kỳ thành viên nào trong nhóm chuyển vấn đề. Điều này có thể làm giảm sự nghi ngờ về quản lý, hoặc đơn giản là người được phép phân bổ thời gian làm việc.

Quá trình Triage là chìa khóa. Nhóm Triage về cơ bản là bất cứ ai trong tổ chức của bạn quyết định ai làm việc trên cái gì, và những gì được làm việc tiếp theo. Có đội đáp ứng theo lịch trình thường xuyên giúp đảm bảo rằng những thứ thực sự quan trọng không thể bỏ qua, và rằng những thứ trần tục không bị rơi do thiếu chú ý. Nếu không có bất cứ điều gì trong hàng đợi Triage, cuộc họp (concall, netmeeting, bất kể việc thực hiện là gì) có thể bị hủy bỏ bởi người đứng đầu cuộc họp.

Nếu bạn đang sử dụng Scrum, nhóm Triage có thể là các bậc thầy về scrum, quyết định xem có vấn đề nào được đưa vào chạy nước rút hiện tại và chỉ định mức độ ưu tiên nếu nó đi vào tình trạng tồn đọng.

+0

Điều gì đó bị thiếu trong các ưu tiên từ 2 đến 3. Điều gì xảy ra nếu chương trình không bị lỗi, hoạt động không đúng và không có cách giải quyết nào? Có lẽ 3 và 4 nên thay đổi địa điểm. –

0

Bạn đang sử dụng luồng theo dõi lỗi nào?

  • Tester sẽ đăng tất cả các lỗi trong tình trạng mở
  • Gán để phát triển
  • Nhà phát triển sẽ cố gắng để sửa chữa lỗi - cố định
  • Bug đóng
  • Mở lại tình trạng lỗi
Các vấn đề liên quan