Định nghĩa lỗi phần mềm. Blizzard Entertainment khẳng định rằng lỗi Bug của tôi không phải là lỗi gì cả. Họ có đúng không? [đóng cửa]


18

Theo Wikipepdia,

Lỗi phần mềm là thuật ngữ phổ biến được sử dụng để mô tả lỗi, sai sót, lỗi, lỗi hoặc lỗi trong chương trình máy tính hoặc hệ thống tạo ra kết quả không chính xác hoặc không mong muốn hoặc khiến nó hoạt động theo cách không lường trước được.

Gần đây tôi đã tìm thấy một "lỗi" trong StarCraft 2 tạo ra kết quả không mong muốn: http://eu.battle.net/sc2/en/forum/topic/2868627470

Vấn đề là nếu tôi giữ StarCraft 2 được thu nhỏ trong một thời gian dài, trò chơi sẽ không ngắt kết nối hoặc tạo ra bất kỳ hình thức hết thời gian chờ nào. Tuy nhiên, nó sẽ ngắt kết nối sau trận chiến đầu tiên và đôi khi cũng mất dữ liệu trò chơi (thống kê trận đấu).

Thật không may, theo Blizzard:

Trò chơi không được thiết kế để được giảm thiểu trong một khoảng thời gian dài như vậy. (Blizzard) không thể coi hành vi đó là sai lầm vì StarCraft II không có nghĩa là được giảm thiểu trong nhiều giờ.

Vì vậy, "lỗi" của tôi thực sự là một lỗi?


31
Chắc chắn, đó là một lỗi, nhưng họ sẽ không sửa nó vì họ không coi tình huống này là một sự hỗ trợ (nghĩa là vì nó không được thiết kế để hoạt động theo cách này, nếu bạn cố gắng sử dụng theo cách đó, bạn là của riêng bạn). Và tất nhiên, có một cách giải quyết đơn giản - đừng làm điều đó.
Oded

17
Đối với hồ sơ, đại diện Blizzard xử lý tình huống rất kém. Họ nên nói, "Cảm ơn bạn đã báo cáo lỗi này. Chúng tôi sẽ nhập nó vào hệ thống của chúng tôi và sửa nó ngay khi các nhà phát triển của chúng tôi coi đó là ưu tiên." Giả định ngầm định là nó sẽ không bao giờ trở thành ưu tiên. Xử lý rất kém theo ý kiến ​​của tôi.
riwalk

29
@ Stargazer712 Blizzard xử lý chính xác điều này. Họ không nên đặt kỳ vọng rằng họ sẽ sửa một lỗi mà họ không có ý định sửa.
MattBelanger

3
Để công bằng với TeleShoTTgun, tôi nghĩ Blizzard ít nhất nên định nghĩa cái gì được coi là "một khoảng thời gian dài". Tôi có thể giảm thiểu trò chơi để đi vệ sinh trong vài phút. Tôi không nghĩ đó là một thời gian rất dài nhưng Blizzard? Tôi sẽ coi> 30 phút là "khoảng thời gian dài" trong bối cảnh này, nhưng tôi không biết liệu Blizzard có đồng ý hay không.
Thất vọngWithFormsDesigner

3
Hành động cũ của Vaudeville - "Bác sĩ, bác sĩ, thật đau khi tôi làm điều này" - "Đừng làm thế!"
Cyclops

Câu trả lời:


58

Đối với một nhóm phần mềm, một lỗi là một vấn đề phần mềm cần được sửa chữa. Không phải tất cả các vấn đề phần mềm cần phải được sửa chữa.

Cập nhật phần mềm là tốn kém. Blizzard đang nói với bạn rằng vấn đề của bạn là một trường hợp cạnh. Nói cách khác, vấn đề trường hợp cạnh mà bạn phát hiện ra không nhất thiết là thứ mà họ đã kiểm tra hoặc quan tâm để giải quyết. Khắc phục sự cố sẽ giúp bạn, nhưng rất có thể nó sẽ không giúp được nhiều người khác. Tuy nhiên, chi phí để sửa lỗi có thể cao. Thay vào đó, họ có thể đầu tư tài nguyên của mình vào các tính năng mới hoặc thậm chí hoàn thành Diablo III.


3
Tôi nghĩ rằng bạn đã nắm bắt được định nghĩa thực tế, được sử dụng trong thực tế. Tôi sẽ trả lời rằng một lỗi là bất kỳ hành vi nào khác với thông số kỹ thuật như các áp phích khác có. Nhưng thực tế là nếu hành vi bị lỗi nằm trong định nghĩa cụ thể nhưng có tác động đáng kể đến hoạt động kinh doanh, một công ty sẽ khắc phục nó. Và như bạn đã nói, ngay cả khi thông số kỹ thuật nói rằng nó sẽ hoạt động và nó không hoạt động, nếu ROI thấp, công ty được đề cập sẽ không khắc phục nó. Câu trả lời chính xác.
Matt Ryan

2
@MattRyan: Và trong thế giới thực (mà tôi đã thấy), nếu thông số kỹ thuật dẫn đến hành vi bị lỗi mà Người dùng doanh nghiệp gọi là "lỗi", nhóm phát triển thường chính thức phân loại lại giải pháp dưới dạng "yêu cầu thay đổi", không phải là một "sửa lỗi". ;)
Thất vọngWithFormsDesigner

3
Nói cách khác, một "lỗi" hoặc "lỗi" thể hiện một yêu cầu không được thực thi chính xác. Trong trường hợp này, việc giảm thiểu trò chơi không phải là một yêu cầu.
Ray

22

Kiểu này làm tôi nhớ đến con mèo trong lò vi sóng , cụ thể là trường hợp của bà Smith năm 1983.

Vấn đề là, bạn mong đợi sản phẩm hoạt động theo cách như vậy. Chủ yếu là vì một số sản phẩm tương tự hoạt động như vậy, tức là nếu bạn giảm thiểu chúng trong nhiều giờ và sau đó mở chúng ra, chúng hoạt động (mặc dù điều ngược lại không phổ biến như bạn nghĩ).

Bà Smith biết từ kinh nghiệm của mình, rằng việc phơi khô mèo trong lò sẽ không gây hại cho chúng (dĩ nhiên là có một chút thận trọng). Chính xác hơn từ kinh nghiệm cô có với tất cả các lò nướng cô đã thử. Sau đó, cô cho rằng nó sẽ giống với lò vi sóng mà cô được tặng. Giả định này là sai. Lò vi sóng không được thiết kế để làm khô mèo. Không phải là lò nướng thông thường. Họ chỉ tình cờ không giết chết con mèo trong quá trình này như là một tác dụng phụ của các quá trình vật lý mà họ sử dụng để tạo ra nhiệt.

Bây giờ là nhà sản xuất lò vi sóng, bạn có thể đặt một cuộn dây đốt nóng và số lượng cảm biến vào lò vi sóng. Cái sau sẽ xác định, liệu nội dung hiện tại có phải là một con mèo hay không và sử dụng cuộn dây thay vì vi sóng.

Theo cách tương tự, người ta có thể sản xuất lò vi sóng phù hợp với mèo khô, Blizzard có thể tạo ra một phiên bản SC2 phù hợp để ở trạng thái tối thiểu trong thời gian dài.

Cá nhân, tôi sẵn sàng trả nhiều tiền hơn cho lò vi sóng có thể làm khô mèo chỉ vì niềm vui của nó (giả sử có một biểu tượng phù hợp với việc sấy khô mèo ở phía trước mà tôi có thể tự hào chỉ vào). Nhưng tôi sẽ không quan tâm đến một trò chơi có thể giảm thiểu trong nhiều giờ.

SC2 được thiết kế để đáp ứng các yêu cầu nhất định. Kỳ vọng của bạn không phải là một phần của những điều đó. Bạn có thể tự do đo SC2 theo mong đợi của bạn. Nhưng liệu Blizzard có bao gồm tất cả chúng trong phạm vi yêu cầu của chúng hay không cuối cùng là lựa chọn của chúng.

Tất cả những gì bạn thực sự có thể tranh luận là, đó là một thất bại trong thiết kế. Thông thường chỉ ra rằng trừ khi một phần đáng kể người dùng bị nhầm lẫn bởi thiết kế hoặc không hài lòng với nó, nó đủ tốt. Tôi chắc chắn nếu đủ người dùng nói rằng họ chia sẻ kỳ vọng của bạn, Blizzard sẽ mang lại và đưa nó vào thiết kế. Điều này sẽ khiến vấn đề của bạn trở thành một lỗi thực tế và Blizzard sẽ khắc phục nó.


Câu trả lời hay, ẩn dụ kinh hoàng. Tôi rất vui vì ai đó thực sự không đủ ngu ngốc để làm điều đó!
vẽ

11

Tôi nghĩ rằng đây là một trường hợp phần mềm không được sử dụng theo định nghĩa của thông số kỹ thuật. Họ nói

Trò chơi không được thiết kế để được giảm thiểu trong một khoảng thời gian dài như vậy.

Điều đó có nghĩa là họ có một số định nghĩa ở đâu đó được coi là "khoảng thời gian dài". Nếu bạn thu nhỏ chương trình trong hơn một "khoảng thời gian dài", nó sẽ vượt xa các thông số kỹ thuật của họ và vượt xa những gì họ đã thử nghiệm (giả sử họ chính thức đề cập đến điều này) và họ không đảm bảo điều gì sẽ xảy ra. Tất nhiên, thật tuyệt nếu hướng dẫn sử dụng ở đâu đó nói rằng "chúng tôi chỉ thử nghiệm chương trình này để được giảm thiểu trong khoảng thời gian không quá 10 phút. Giảm thiểu thời gian lâu hơn so với rủi ro của riêng bạn!".

Vì vậy, không, tôi không nghĩ rằng đây thực sự là một lỗi. Trong văn phòng của tôi, đây sẽ được gọi là "sự cố đào tạo người dùng" (mà tôi nói là một dạng của vấn đề giao tiếp , vì trong trường hợp này vì không có thời gian tối thiểu để truyền đạt thời gian tối thiểu cho người dùng) vì người dùng là không sử dụng chương trình đúng cách. Không phải là nó giúp ích nhiều cho Blizzard, trừ khi họ đưa nó vào hướng dẫn ...


3
Đối với một hệ thống quan trọng, chúng tôi có một yêu cầu là "hệ thống này phải duy trì hoạt động trong n giờ" và chúng tôi kiểm tra và ghi lại bên ngoài rằng hệ thống hoạt động trong n giờ. Chúng tôi cũng có thể tài liệu nội bộ rằng chúng tôi đã thực hiện một thử nghiệm trong m> n giờ và hệ thống vẫn hoạt động. Đối với một trò chơi, không phải là nhiệm vụ quan trọng, bạn không nhất thiết phải bị bắt chính thức bên ngoài, vì hầu hết mọi người có thể sẽ không bao giờ gặp phải vấn đề này.
Thomas Owens

8

Không phải là một lỗi. Một lỗi là hành vi không tuân thủ các đặc điểm kỹ thuật. Nếu thông số kỹ thuật nói rằng ca sử dụng không phải là hành vi được hỗ trợ thì mọi hành vi - được coi là hợp lệ hay không - trong trường hợp sử dụng đó là 'theo thiết kế'.

Trong kịch bản này, trò chơi hoạt động hoàn toàn có thể được coi là hành vi không xác định.


Đây là một né tránh lớn. Tôi coi thường nó mỗi khi tôi nghe nó. Bởi vì nó chỉ xuất hiện khi "thông số kỹ thuật" không đầy đủ.
Sean McMillan

2
@SeanMcMillan: Không có những thứ như thế này, tính năng creep sẽ giết chết tất cả chúng ta. Dù bằng cách nào, đó không phải là một sự né tránh, bởi vì đó là một kịch bản được chỉ ra cụ thể là không được hỗ trợ.
Steven Evers

1
@SnOrfus: Nó đã được chỉ ra. Sau sự thật. Bạn có thực sự tin rằng có một thông số kỹ thuật nói rõ rằng "Tối thiểu hóa ứng dụng lâu hơn x phút không được hỗ trợ" không? Rõ ràng, đó là một lỗi.
ThomasX

Vấn đề là không có thông số kỹ thuật nào đủ hoàn chỉnh để mô tả một phần mềm thực sự. Mục tiêu "khớp với thông số kỹ thuật" không tạo ra phần mềm tốt, đó chỉ là một cái cớ rằng "đó không phải là lỗi của tôi" khi có gì đó trong phần mềm xấu. Có thể nó không đáng để sửa, nhưng "thông số kỹ thuật" không phải là lý do tại sao.
Sean McMillan

@ThomasX Xem xét rằng dự án tôi đang thực hiện, có thông số 200-400 trang và thực sự có ranh giới được xác định cho thời gian chạy. Vâng tôi đồng ý.
Steven Evers

5

Nếu tôi là trưởng nhóm phát triển trong dự án đó, tôi sẽ gọi đó là lỗi nhưng là lỗi nhỏ vì nó nằm ngoài dự đoán hoạt động bình thường của phần mềm. Nếu nó sẽ được thực hiện trên tất cả, tôi có thể giao nó cho một lập trình viên cơ sở hoặc một người thuê mới hơn là một bài tập học tập cho họ hơn bất cứ điều gì khác.

Đó là một ý tưởng tốt để theo dõi các lỗi nhỏ này vì chúng có thể chỉ ra các vấn đề tiềm ẩn sâu rộng hơn. Ví dụ, lỗi lưu dữ liệu bạn gặp phải. Nó có vẻ nhỏ do cách nó xảy ra nhưng có thể có những trường hợp khác mà dữ liệu bị mất. Bằng cách sử dụng hệ thống báo cáo lỗi, bạn có thể tìm thấy tất cả các trường hợp xảy ra sự cố tương tự và xem liệu có yếu tố chung nào không. Trong một hệ thống phức tạp, có loại tài liệu này có thể giúp bạn tìm ra các lỗi nghiêm trọng và tinh vi hơn.


5

Tôi sẽ không đồng ý với hầu hết mọi người ở đây.

Là một người chơi cũ của Starcraft (bản gốc), tôi có thể chứng thực rằng đây là (hoặc ít nhất là) hành vi rất phổ biến. Người dùng rời khỏi trò chơi vào 24/7 để giữ vị trí của họ trong các phòng trò chuyện và tham gia các trò chơi khi họ quay lại lần nữa. Tôi chắc chắn rằng Battle.net được cập nhật có một số cải tiến có thể làm giảm nhu cầu này, nhưng nó vẫn xảy ra rất nhiều.

Nó sẽ có ý nghĩa hơn nhiều khi nó không cho phép bạn tham gia một trò chơi mà không kết nối lại nếu phiên của bạn theo một cách nào đó, hình dạng hoặc hình thức, đã hết hạn. Việc nó cho phép bạn tham gia các trò chơi sau khi bạn hết hạn phiên là một lỗi với tôi. Điều đáng lo ngại ở đây, và một điều chưa thực sự được đưa ra, là các nhà phát triển cần phải hiểu người dùng của họ. Đây rất có thể là một trường hợp cạnh, nhưng nó là một trường hợp cạnh cho các game thủ rất tận tâm mà họ nên được đặt để làm hài lòng.

Về mặt kỹ thuật, họ có thể lập luận rằng đó là do thiết kế, và đó không phải là thứ họ định sửa. Đó vẫn là một lỗi trong mắt tôi, điều này cuối cùng tùy thuộc vào việc họ có phân loại nó là lỗi hay không. Điều đó không có nghĩa là người chơi đồng ý.

Dù sao, tôi nghĩ rằng tôi sẽ đưa ra một câu trả lời hơi khác so với những gì được đăng cho đến nay.


1
Tôi thực sự sẽ thu nhỏ màn hình trong thời gian dài nếu tôi thực sự chơi Starcraft. Tôi nghĩ rằng câu hỏi liệu đó có phải là một lỗi không liên quan hay không, nhưng có vẻ như đó là thứ gì đó nên xử lý và nó sẽ thực sự làm tôi khó chịu nếu không.
psr

Đồng ý - điều này nên được phân loại là một lỗi, tất cả có thể là một ưu tiên rất thấp. Trong khi họ có thể nói rằng "không để trò chơi giảm thiểu trong thời gian dài không được hỗ trợ", chính xác thì điều gì tạo nên một khoảng thời gian dài? Làm thế nào để họ biết vấn đề tương tự sẽ không xảy ra nếu được giảm thiểu trong 10 phút? Ít nhất một thời gian chờ trò chơi nên được thiết kế và thực hiện để ngắt kết nối người dùng nếu nó bị thu nhỏ trong hơn x phút nếu họ không có ý định hỗ trợ các hành động đó.
Gavin Coates

4

Một lỗi hợp lý có thể được định nghĩa là "bất kỳ sai lệch nào so với hành vi dự định của phần mềm".

Rõ ràng họ (và đó là phần mềm của họ để họ xác định cách thức hoạt động của nó) không bao giờ có ý định phần mềm xử lý tình huống này để nó không đáp ứng định nghĩa về lỗi này.

Tuy nhiên, những gì tôi muốn nói là, ít nhất, dưới mức tối ưu là cách nó xử lý tình trạng này.

Rác vào, rác ra (đó là người dùng làm điều gì đó ngu ngốc hoặc xấu hoặc bất ngờ và kết quả là một cái gì đó xấu xảy ra) đã được coi là một tiêu chuẩn hành vi kém. Tôi muốn nói ít nhất nó sẽ thanh lịch hơn trong cách xử lý tình trạng này.

Vì vậy, không hoàn toàn là một lỗi, nhưng xử lý kém của một trường hợp cạnh.

Điều đó nói rằng nếu tôi là họ thì đó không phải là điều tôi có thể cân nhắc sửa chữa (tốn kém vì quá ít lợi ích), mặc dù tôi có thể đề cập với nhóm để tham khảo trong tương lai rằng đó là điều họ có thể xử lý tốt hơn.


1

Định nghĩa của một lỗi không liên quan gì đến hành vi của phần mềm. Một lỗi được xác định dựa trên hành vi của phần mềm có phù hợp với ý định của nó hay không. Và ai là người nói ý định đó là gì? (Vì tôi đang làm việc với các lập trình viên ở đây, tôi sẽ làm rõ câu đầu tiên - không có hành vi phần mềm nào có thể, mà chính nó, tạo thành một lỗi).

Hãy nhớ rằng nói chung một lỗi là điều mà các nhà phát triển phần mềm phải sửa. Vì vậy, định nghĩa của một lỗi dựa trên những gì họ muốn sửa. Ví dụ: "hoạt động chính xác hơn 50% thời gian là tính năng chúng tôi dự định phát hành trong các phiên bản trong tương lai". Bất cứ điều gì có thể được định nghĩa là không phải là một lỗi bằng cách giả vờ phần mềm không bao giờ có ý định giải quyết vấn đề cụ thể đó. Vì vậy, trong thực tế, những gì cấu thành một lỗi là một sự cân nhắc chính trị hoàn toàn.

(Bên cạnh đó, điều này cắt giảm cả hai cách. Đối với một khách hàng không phải trả tiền cho việc sửa lỗi nhưng phải trả tiền cho sự phát triển mới "nó không thực hiện một số tính năng mà tôi chỉ nghĩ đến nhưng bây giờ tôi đã nghĩ đến quyết định là 100% ngụ ý bởi những điều tôi đã đề cập "rõ ràng là một lỗi.)


Không phải OpenBSD tuyên bố bất cứ điều gì không được ghi lại đúng là lỗi, bất kể đó là gì?
Canageek

1

Tôi sẽ không xem xét việc không ngắt kết nối một lỗi. Nó chỉ là một lỗi nếu nó được cho là (theo thiết kế, ý định) ngắt kết nối và nó không. Tôi sẽ gọi những gì bạn đã gửi một yêu cầu tính năng.

Điều đó nói rằng, mất dữ liệu sau trận chiến - đó có thể là lỗi. Tôi không biết nhiều về Starcraft, nhưng tôi nghi ngờ đó không phải do thiết kế.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.