Cái gì tạo thành một lỗi?


10

Trên thực tế lỗi là gì? bất kỳ quy tắc được xác định trước?


Chúng ta có thể có một số bối cảnh? Bạn đang nói từ một quan điểm thuần túy, hoặc các lỗi sẽ được báo cáo trên các trang web theo dõi?
Jeremy

5
Tất cả các lỗi chỉ là các tính năng ẩn :)
Marco Ceppi

2
Tôi có xu hướng nói "các tính năng không có giấy tờ" thay vì ẩn :-)
Little Jawa

Câu trả lời:


14

Một lỗi là:

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. (Từ Wikipedia )

Đây là một định nghĩa tốt về những gì cấu thành một lỗi. Hoặc:

  1. Chương trình đã không hành xử theo ý định của lập trình viên. hoặc là
  2. Ý định của lập trình viên đã không đáp ứng mong đợi chung của người dùng.

Cộng đồng Ubuntu có một định nghĩa tuyệt vời cho lỗi trong wiki này , đặc biệt là làm nổi bật sự khác biệt giữa lỗicác tính năng bị thiếu :

Lỗi phần mềm là lỗi hoặc lỗi trong chương trình máy tính khiến nó không hoạt động như mong muốn. Điều này có thể đơn giản như hoàn toàn không hoạt động hoặc phức tạp như một kết quả không chính xác [...] Một số thứ không phải là lỗi, nhưng thiếu các tính năng cần được đưa vào một cách hợp lý. Các tính năng thiếu không nên được báo cáo là lỗi, thay vào đó, FeatureSpecifying nên được viết cho chúng.

Trong khi thật khó để vẽ một đường phân tách hai định nghĩa và trả lời câu hỏi là lỗi hay thiếu tính năng? , có thể đưa ra một số hướng dẫn:

  • nếu đó là một vấn đề sẽ có nhiều chi tiết cần giải quyết, thì đó có thể là một tính năng. Ví dụ, không thể ghi tệp an toàn vào phân vùng Windows hiện đại là một tính năng bị thiếu.
  • Không thể ghi tệp an toàn vào phân vùng ReiserFS sẽ là một lỗi.

Sự khác biệt giữa hai xác nhận là: đầu tiên là phổ biến hơn (hỗ trợ các cửa sổ hiện đại FS) và do đó có thể được xem là Tính năng bị thiếu, trong khi cái còn lại nhấn mạnh một vấn đề duy nhất (không thể ghi vào ReiserFS) - một lỗi cụ thể.

Nếu bạn quan tâm, tôi khuyên bạn nên xem wiki của đội BugSquad . Chống lỗi là một trong những hoạt động thú vị nhất liên quan đến chu trình phát triển phần mềm, bên cạnh đó là cơ hội học tập tuyệt vời :-)

Cảm ơn!


một cái hay, mặc dù nó không liên quan trực tiếp nhưng có lẽ đáng nói là mọi lỗi bạn muốn phạm phải có thể tái tạo được.
danizmax

Không, có lỗi do điều kiện chủng tộc. Tại sao bạn không muốn cam kết chúng quá? Sẽ rất khó, nếu lập trình viên không thể tái tạo lỗi, nhưng điều đó không ảnh hưởng đến mong muốn làm điều đó, phải không?
người dùng không xác định

Xin vui lòng tham khảo hướng dẫn Ubuntu BugSquad về lỗi: wiki.ubuntu.com/Bugs
Thomas Ward

2

Tôi sẽ đi một vòng. Chủ yếu, hành vi không có ý định của nhà thiết kế / lập trình viên (giảm giá thiết kế xấu). Về những lỗi bạn nên báo cáo cho mọi người, bất cứ điều gì làm cho chương trình giờ sử dụng và phù hợp với mô tả ở trên. Điều này bao gồm, từ tồi tệ nhất đến ít nghiêm trọng nhất, sự cố hệ thống, sự cố X, sự cố chương trình và bất kỳ lỗi chương trình nội bộ nào.

Lỗi gây ra sự cố hoặc đóng cửa sổ thường sẽ khiến một số loại đầu ra bị lỗi nếu bạn chạy ứng dụng từ thiết bị đầu cuối, điều này có thể hữu ích. Cũng xem nhật ký hệ thống để báo cáo lỗi.


1

Lỗi là một lỗi trong chương trình hoặc hệ thống máy tính, vì vậy chương trình không hoạt động đúng hoặc không hoạt động. Vì vậy, lỗi có thể là kết quả của mã lập trình sai hoặc mã lập trình không đủ mạnh và không thể xử lý một số ngoại lệ nhất định (ví dụ: chia cho 0)


1

Đối với tất cả các mục đích thực tế, thuật ngữ "lỗi" nên được tránh là một thuật ngữ quá mờ.

Câu trả lời tốt nhất cho câu hỏi của bạn lấp đầy cả một cuốn sách: "Tại sao các chương trình thất bại" của Andreas Zeller. Một cuốn sách nên có trên kệ sách của mọi lập trình viên. Tác giả cũng rất nỗ lực trong việc không gọi chúng là "lỗi" (đọc tiếp). Bởi vì câu trả lời của crncosta đã gợi ý "lỗi" không chỉ là lỗi lập trình. Đây là lý do tại sao một số người thích thuật ngữ "vấn đề" thay vào đó (dẫn đến "trình theo dõi vấn đề" thay vì "trình theo dõi lỗi").

Bởi vì những gì người dùng cuối coi là lỗi không phải là lỗi. Nó có thể - mặc dù điều này thường được sử dụng như một lý do khập khiễng - đơn giản là do thiết kế. Tuy nhiên, một số thất bại, một khi được quan sát, được phân loại là "lỗi", mặc dù chúng là do thiếu tính năng.

Tác giả của cuốn sách nói trên dành nhiều trang cho định nghĩa của các thuật ngữ như thất bạikhiếm khuyết và mô tả tại sao "lỗi" không phải là một thuật ngữ thích hợp (quá mờ nhạt).

Tóm tắt thuật ngữ của mình:

  1. lập trình viên tạo ra lỗi
  2. lỗi gây ra nhiễm trùng ("trạng thái chương trình bị lỗi")
  3. nhiễm trùng lan truyền
  4. nhiễm trùng gây ra thất bại ("hành vi xấu / ngoài ý muốn")
  5. người quan sát (thường là người dùng cuối) nhìn thấy sự thất bại

Như bạn có thể thấy tác giả phân biệt giữa nguyên nhân và kết quả, trong trường hợp "lỗi" hầu như luôn luôn bị trộn lẫn. Hầu hết thời gian thuật ngữ "lỗi" đã được áp dụng cho các khiếm khuyết , các nhiễm trùng các thất bại .

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.