Tôi muốn bắt đầu bằng cách nói mọi thứ tôi làm là SQL Server, vì vậy đây là những ví dụ tôi đưa ra. Tuy nhiên, nói chung điều này áp dụng cho bất kỳ dạng mã nào bất kể hệ thống.
Hãy bắt đầu bằng cách phá vỡ điều này một chút.
Nâng cấp
Bạn có một hệ thống và sắp nâng cấp một số hoặc tất cả. Ví dụ: nâng cấp một phiên bản từ SQL Server 2012 lên 2014. Tại thời điểm này, việc kiểm tra là rất cần thiết. Thật không may, việc kiểm tra mọi phần của ngay cả một ứng dụng nhỏ có lẽ sẽ không thể thực hiện được. Tại thời điểm đó tôi sẽ làm những gì tôi sẽ gọi là một bài kiểm tra "làm việc". Là hệ thống cơ bản làm việc. Chạy qua các nhiệm vụ chung của bạn bắt đầu để kết thúc. Đừng kiểm tra mọi lựa chọn, chỉ là đường dẫn chính.
Khi thực hiện nâng cấp SQL Server cũng có một số yêu cầu đọc . Về cơ bản, bạn muốn đọc Backward Compatibility
mục nhập cho phiên bản mới ( đây là phiên bản 2014 ) và đảm bảo rằng bạn không có bất cứ điều gì trong bất kỳ danh sách nào (phá vỡ các thay đổi, thay đổi hành vi, v.v.).
Mã ứng dụng
Ở đây chúng tôi đang xem xét mã ứng dụng mới / thay đổi (vì tất nhiên mọi thứ hiện có đã được kiểm tra rồi phải không?). Trong trường hợp này mọi thứ nên được kiểm tra. Bạn nên có các trường hợp thử nghiệm được thiết lập trước thời hạn và chạy qua ít nhất là phần lớn các tính năng bị ảnh hưởng của bạn. Tốt nhất là tại thời điểm này, bạn cũng nên nhờ người khác kiểm tra tương tự. Mã này sẽ được đưa ra, có thể trong một thời gian khá dài và được sử dụng bởi một số lượng lớn người. Bạn muốn chắc chắn rằng nó hoạt động và hoạt động tốt.
Một trong những điều thực sự có thể giúp với điều này là tạo ra một tập hợp unit tests
dễ lặp lại. Steve Jones khuyên bạn nên sử dụng tQueryt để kiểm tra mã TSQL của bạn (chỉ có máy chủ SQL tôi sợ). Nhưng bằng cách này, bạn có thể nhanh chóng chạy qua một bộ kiểm tra cố định và nó sẽ thực sự hỗ trợ kiểm tra hồi quy (kiểm tra mọi thứ, nói trước khi thực hiện nâng cấp).
Tính năng / Cấu hình
Thậm chí nhiều hơn thay đổi mã ứng dụng mà bạn muốn kiểm tra các tính năng mới và thay đổi cấu hình kỹ lưỡng. Ví dụ, nếu bạn quyết định bắt đầu làm việc với các chỉ mục của cộtlần đầu tiên bạn sẽ cần kiểm tra mọi đoạn mã chạm vào các bảng bị ảnh hưởng. Sử dụng các bài kiểm tra đơn vị mà bạn đã tạo để kiểm tra ứng dụng của bạn. Các tính năng này có thể là mới đối với bạn (và có thể là mới trong nền tảng) và có thể sẽ có một số vấn đề bạn không mong đợi. Đối với thay đổi cấu hình, bạn đang nói về một cái gì đó có thể ảnh hưởng đến toàn bộ hệ thống của bạn, có thể đáng kể. Nguyên tắc chung là kiểm tra, và kiểm tra cẩn thận. Có một số thay đổi mà bạn sẽ không thực sự thấy cho đến khi bạn vào một hệ thống đang hoạt động (có thể chỉ là hệ thống sản xuất của bạn) nhưng đó không phải là lý do để không thử chúng trong môi trường thử nghiệm trước.
Các truy vấn đặc biệt tham chiếu / ảnh hưởng đến dữ liệu người dùng
Khi bạn có mã ảnh hưởng đến dữ liệu người dùng của bạn, bạn thường cần phải kiểm tra nó, thậm chí, và có lẽ đặc biệt, bởi vì nó Ad Hoc
. Bây giờ được nói rằng nếu bạn đang chạy cùng một đoạn mã, lặp đi lặp lại, chỉ với các tham số khác nhau, thì có lẽ bạn không cần phải lo lắng về việc kiểm tra mỗi lần.
Ví dụ: bạn cần xóa một hoặc nhiều Quảng cáo khỏi bảng AdList mỗi quý.
DELETE FROM AdList WHERE AdName IN ('January 2015 Ads','February 2015 Ads','March 2015 Ads')
Tại thời điểm đó, bạn đã kiểm tra mã (bạn chỉ thay đổi chuỗi cố định) và có thể khá an toàn khi chỉ chạy mã (giả sử bạn có bản sao lưu tốt chỉ trong trường hợp).
Một cách dễ dàng để kiểm tra một DELETE
, UPDATE
hoặc INSERT
là thay đổi chúng vào một SELECT và chạy chúng, xác nhận sau đó rằng số lượng và loại hàng bạn mong đợi được trả về.
Bạn có thể nghĩ rằng bạn không cần phải kiểm tra SELECT
vì họ không thực sự thay đổi bất kỳ dữ liệu nào. Tuy nhiên bạn đang chạy mã vì một lý do phải không? Giả sử bạn đang thực hiện nghiên cứu cho người quản lý của mình, người sẽ lần lượt trao dữ liệu này cho người quản lý của họ, v.v. Bạn kiểm tra để đảm bảo rằng bạn không nhận được dữ liệu sai (hoặc chặn người khác thu thập dữ liệu của họ).
Các truy vấn đặc biệt tham chiếu / ảnh hưởng đến dữ liệu hệ thống
Đây có thể là một ngoại lệ cho quy tắc "kiểm tra mọi thứ". Bạn đang chạy truy vấn thông tin trên dữ liệu hệ thống. Điều quan trọng ở đây là lấy lại dữ liệu bạn mong đợi. Nếu truy vấn là một cái gì đó đơn giản (truy vấn chế độ xem hệ thống) thì có lẽ bạn vẫn ổn miễn là bạn đã kiểm tra xem chế độ xem / cột thực sự có ý nghĩa gì. Nếu truy vấn phức tạp (giả sử nhấn 3 hoặc 4 lượt xem hệ thống với các tính toán trên các cột được trả về) thì bạn có thể muốn chạy một vài thử nghiệm chỉ để đảm bảo rằng bạn sẽ lấy lại dữ liệu bạn mong đợi.
Tóm lược
Tóm lại, có, bạn muốn kiểm tra tất cả mọi thứ. Nếu nó đủ quan trọng để bạn viết và chạy nó thì nó đủ quan trọng để bạn kiểm tra. Điều đó không có nghĩa là bạn phải dành một lượng lớn thời gian để kiểm tra từng nhánh của mỗi dòng mã. Nhưng một số mức độ thử nghiệm cần phải được thực hiện.
Kiểm tra đơn vị tự động là bạn của bạn ở đây. Với sự ra đời của DevOps
và Continuous Integration
bạn sẽ thấy ngày càng nhiều ứng dụng và phương pháp kiểm tra mã của bạn một cách nhanh chóng và dễ dàng. Tất nhiên điều đó đòi hỏi phải có một môi trường kiểm tra và dữ liệu tốt để đi cùng với nó, nhưng đó là một cuộc thảo luận hoàn toàn khác.