2009-03-08 49 views
6

Tôi chỉ vấp phải một nguyên tắc mà tôi không thể hiểu được.Kiểm tra những gì bạn bay, bay những gì bạn kiểm tra. [Nguyên tắc của NASA]

Liệu "Kiểm tra những gì bạn bay, bay những gì bạn kiểm tra" có nghĩa là bạn nên phát triển và thử nghiệm cho thật mọi lúc?

Suy nghĩ về vấn đề này, làm cho tôi tự hỏi

  1. Chúng ta có nên chuẩn bị cho điều kiện sản xuất trước?
  2. Chúng tôi có nên khởi chạy hệ thống vào ngày đầu tiên không? (Có thể không thông báo cho người dùng cuối)

Ví dụ,

  1. công cụ xây dựng để đảm bảo các bản ghi lỗi có thể được lấy ra.
  2. Đảm bảo các bản ghi lỗi có thể được phân tích (các công cụ thống kê và/hoặc sử dụng tốt Log Level Design)
  3. Đảm bảo chúng tôi lưu trữ các thay đổi được thực hiện cho hệ thống. Lịch sử thay đổi.
  4. Đảm bảo rằng chúng tôi có chu kỳ cập nhật ngắn trong trường hợp xảy ra lỗi.

Có ví dụ nào khác không? Điều đó sẽ đảm bảo một sự ra mắt rủi ro thấp của một hệ thống mới?

Tôi hơi bối rối. Đó là tất cả.

Nasa http://ecsv.gsfc.nasa.gov/ecsv_emd/GIFS/nasa_logo.gif

Trả lời

2

Dự án cuối cùng của tôi có câu thần chú "Chúng tôi bán điện thoại không phải là mô phỏng", để khoan về điểm mà chúng tôi luôn kiểm tra mã của chúng tôi trên phần cứng đích.Trong thực tế chỉ những lập trình viên thích lấy tay bẩn trên phần cứng mới thực sự làm được điều này và việc xây dựng sản xuất hàng ngày sẽ thất bại một nửa thời gian. Đôi khi điều này sẽ giữ toàn bộ dự án trong khi những người thử nghiệm sản xuất đã cố gắng tìm hiểu vấn đề.

Câu thần chú khác là "chúng tôi không ở nhà với ông Cockup", đó là một tiếng cười, cho rằng ông dường như đã đưa lên thường trú.

+0

Cảm ơn. Câu chuyện thế giới thực vô cùng hữu ích. Tôi có thể nói rằng điều này là có thật. Tôi sẽ suy nghĩ về thần chú cho dự án hiện tại của tôi. Cảm ơn một lần nữa. – Flinkman

16

Điều đó có nghĩa rằng nếu bạn không kiểm tra chính xác những gì bạn có kế hoạch để khởi động, bạn không biết làm thế nào những gì bạn làm ra mắt sẽ cư xử.

Nguyên tắc tương tự cũng được biểu thị là "dogfooding" hoặc "ăn dogfood của riêng bạn". Giả sử sản phẩm của bạn là thứ mà mọi người trong công ty của bạn sẽ sử dụng, khiến họ sử dụng sản phẩm của bạn lâu trước khi bạn khởi chạy sản phẩm. Họ có thể là một nguồn tốt hơn nhiều khả năng sử dụng lỗi, lỗi tham nhũng dữ liệu vv hơn một đội QA có nhiệm vụ rất cụ thể và cũng có thể không nhấn tất cả các trường hợp góc mà người dùng thực sự làm.

Ngoài ra, điều đó có nghĩa là khi bạn khởi chạy, nhu cầu nội bộ của bạn sẽ buộc bạn phải tìm ra công cụ hỗ trợ nào bạn cần (ghi nhật ký, v.v.).

1

Ví dụ về TWYF ​​sẽ đảm bảo rằng thử nghiệm chức năng được thực hiện trên cấu hình Phát hành, không phải (chỉ) cấu hình Gỡ lỗi - hoặc bất kỳ điều gì bạn chọn để gọi những thứ đó trong trang web của bạn. Nếu khác biệt duy nhất giữa Release và Debug là xác nhận kiểm tra hoặc ghi thêm, bạn vẫn không thể chắc chắn rằng phần mềm được thử nghiệm trong Debug hoạt động trong Release, do một cái gì đó giống như một vấn đề thời gian.

FWYT có nghĩa là khi bạn hài lòng với chất lượng của ứng cử viên bản phát hành, bạn tàu xây dựng, thay vì làm "sản xuất chính" mới và hy vọng cấu hình của hai bản dựng giống nhau.

+0

Trong tối ưu hóa trình biên dịch cũng nguy hiểm, đặc biệt là GCC. Tôi đã từng bit-by3 quá nhiều lần để tin tưởng bất cứ điều gì khác mà phát hành thử nghiệm. –

0

Tôi nghĩ phương châm của Nasa là. Đừng kiểm tra những gì bạn bay - nhưng ghi lại quy trình kiểm tra và kiểm tra các tài liệu phù hợp với quy trình.
Và khi khối lượng tài liệu thử nghiệm lớn hơn đường xe cộ - nó đã sẵn sàng để bay.

(Ít nhất đó là cho Hubble.)

1

Các thần chú NASA là wordedslightly differently:

"Test như bạn bay, và bay như bạn kiểm tra"

Từ một quan điểm về phần mềm, tôi coi điều này là

  • Chạy thử nghiệm ở dạng c mất một mô phỏng của các môi trường sản xuất càng tốt
  • Nếu những xét nghiệm thông qua, sau đó bạn có thể triển khai mà bài kiểm tra vào môi trường sống, và bạn chỉ hoạt động thành phần đó trong cách thức mà bạn đã thử nghiệm
Các vấn đề liên quan