Để vẽ các khía cạnh của một vài câu trả lời với nhau và thêm 2p của tôi ...
Lưu ý: nhận xét của tôi liên quan đến kiểm tra cơ sở dữ liệu cụ thể và không kiểm tra giao diện người dùng (mặc dù rõ ràng áp dụng tương tự).
Cơ sở dữ liệu chỉ cần thử nghiệm nhiều như các ứng dụng giao diện người dùng nhưng có xu hướng được kiểm tra trên cơ sở 'nó có hoạt động với giao diện người dùng không?' hoặc 'các báo cáo có tạo ra kết quả chính xác không?', mà theo tôi là thử nghiệm rất muộn trong quá trình phát triển cơ sở dữ liệu và không mạnh mẽ lắm.
Chúng tôi có một số khách hàng sử dụng thử nghiệm đơn vị / tích hợp / hệ thống cho cơ sở dữ liệu kho dữ liệu của họ ngoài UAT / Performance / et al thông thường. xét nghiệm. Họ thấy rằng với sự tích hợp liên tục và thử nghiệm tự động, họ đã nhận được nhiều vấn đề trước khi đến với UAT truyền thống, do đó tiết kiệm thời gian trong UAT và tăng cơ hội thành công cho UAT.
Tôi chắc chắn rằng hầu hết sẽ đồng ý rằng một sự nghiêm ngặt tương tự nên được áp dụng cho kiểm tra cơ sở dữ liệu như kiểm tra báo cáo hoặc kết thúc trước.
Điều quan trọng với thử nghiệm là kiểm tra các thực thể đơn giản nhỏ, đảm bảo tính chính xác của chúng, trước khi tiến hành kết hợp các thực thể phức tạp, đảm bảo tính chính xác của chúng trước khi mở rộng sang hệ thống rộng hơn.
Vì vậy, đưa ra một số bối cảnh cho câu trả lời của tôi ...
Kiểm tra đơn vị
- có trọng tâm kiểm tra để chứng minh rằng đơn vị hoạt động, ví dụ: bảng, dạng xem, hàm, thủ tục được lưu trữ
- nên 'sơ khai' các giao diện để loại bỏ các phụ thuộc bên ngoài
- sẽ cung cấp dữ liệu riêng của mình. Bạn cần một trạng thái bắt đầu đã biết của dữ liệu, vì vậy nếu có cơ hội dữ liệu trước khi thử nghiệm, thì việc cắt / xóa sẽ xảy ra trước khi dân số
- sẽ chạy lý tưởng trong bối cảnh thực hiện riêng của nó
- sẽ tự xóa sau khi xóa dữ liệu đã sử dụng; Điều này chỉ quan trọng khi sơ khai không được sử dụng.
Ưu điểm của việc này là bạn loại bỏ tất cả các phụ thuộc bên ngoài vào bài kiểm tra và thực hiện số lượng kiểm tra nhỏ nhất để chứng minh tính đúng đắn. Rõ ràng, các thử nghiệm này không thể chạy trên cơ sở dữ liệu sản xuất. Có thể có một số loại bài kiểm tra bạn sẽ làm, tùy thuộc vào loại đơn vị, bao gồm:
- kiểm tra lược đồ, một số có thể gọi đây là kiểm tra 'hợp đồng dữ liệu'
- giá trị cột đi qua
- việc thực hiện các đường dẫn logic với các giá trị dữ liệu khác nhau cho các hàm, thủ tục, khung nhìn, các cột được tính toán
- kiểm tra trường hợp cạnh - NULL, dữ liệu xấu, số âm, giá trị quá lớn
(Đơn vị) Kiểm thử tích hợp
Tôi thấy bài SE này hữu ích khi nói về các loại thử nghiệm khác nhau.
- có trọng tâm thử nghiệm để chứng minh rằng các đơn vị tích hợp với nhau
- thực hiện trên một số đơn vị với nhau
- nên 'sơ khai' các giao diện để loại bỏ các phụ thuộc bên ngoài
- sẽ cung cấp dữ liệu của riêng mình, để loại bỏ ảnh hưởng của ảnh hưởng dữ liệu bên ngoài
- sẽ chạy lý tưởng trong bối cảnh thực hiện riêng của nó
- sẽ tự xóa sau khi xóa dữ liệu đã tạo; Điều này chỉ quan trọng khi sơ khai không được sử dụng.
Khi chuyển từ các bài kiểm tra đơn vị sang các bài kiểm tra tích hợp này, thường sẽ có nhiều dữ liệu hơn một chút, để kiểm tra nhiều trường hợp kiểm thử khác nhau. Rõ ràng, các thử nghiệm này không thể chạy trên cơ sở dữ liệu sản xuất.
Điều này sau đó tiến hành Kiểm tra hệ thống , Kiểm tra tích hợp hệ thống (còn gọi là kiểm tra đầu cuối 2), với việc tăng khối lượng dữ liệu và tăng phạm vi. Tất cả các thử nghiệm này sẽ trở thành một phần của khung kiểm tra hồi quy. Một số thử nghiệm này có thể được người dùng chọn để thực hiện như một phần của UAT, nhưng UAT là các thử nghiệm được xác định bởi người dùng , không được xác định bởi CNTT - một vấn đề phổ biến!
Vì vậy, bây giờ tôi đã đưa ra một số bối cảnh, để trả lời các câu hỏi thực tế của bạn
- chuẩn bị dữ liệu cho kiểm tra đơn vị và tích hợp có thể gây ra lỗi kiểm tra giả và nên tránh.
- Cách duy nhất để đảm bảo các kiểm tra nhất quán là không đưa ra các giả định về dữ liệu nguồn và kiểm soát nó chặt chẽ.
- bối cảnh thực hiện kiểm tra riêng biệt rất quan trọng, để đảm bảo rằng một người kiểm tra không xung đột với người kiểm tra khác thực hiện các kiểm tra tương tự trên một nhánh khác của mã cơ sở dữ liệu được kiểm soát nguồn.