Chrono Mock
Ngôn ngữTiếng Việt

Những ngày đáng kiểm thử

Phần mềm không hỏng vào một ngày thứ Ba bình thường. Nó hỏng vào ngày cuối của quý, vào ngày 29 tháng 2, đúng lúc năm mới chuyển sang, và một giây sau khi giấy phép hết hạn. Đây là những ngày tìm ra các lỗi đó - 14 ngày trong số đó được cung cấp sẵn dưới dạng kịch bản có tên.

Ranh giới các kỳ

Bất cứ thứ gì đóng sổ một kỳ, đánh số tài liệu theo năm, hoặc tích lũy đến một mốc chốt sổ đều làm sai ở đây trước tiên.

  • Ngày cuối tháng - việc khóa sổ cuối tháng và tích lũy theo kỳ có hoạt động đúng vào ngày cuối cùng của tháng không?
  • Ngày cuối quý - việc khóa sổ và báo cáo cuối quý có hoạt động đúng vào ngày cuối cùng của quý không?
  • Ngày cuối năm tài chính - ứng dụng có đóng năm tài chính đúng ngày, tức ngày trước khi năm tài chính bắt đầu, không?
  • Chuyển năm, trực tiếp - việc đánh số tài liệu, năm trong tên và báo cáo hằng năm có xử lý đúng lúc chuyển năm khi nó đang diễn ra, thay vì phải khởi động lại sau đó không?

Trường hợp cuối là thứ mà người ta thường không thể kiểm thử, vì nó cần đồng hồ vượt qua nửa đêm ngày 31 tháng 12 trong khi ứng dụng đang chạy. Với đồng hồ được tăng tốc, đó là việc của mười giây.

Các cạnh của lịch và cách biểu diễn

  • Ngày 29 tháng 2 - ngày nhuận chỉ có bốn năm một lần, và một lượng đáng ngạc nhiên mã kiểm tra hợp lệ từ chối thẳng.
  • Epoch Unix bằng không - ứng dụng coi ngày 1 tháng 1 năm 1970 là ngày thật, hay là một giá trị rỗng mà lẽ ra nó phải từ chối lưu?
  • Ranh giới năm 2038 - thời điểm time_t 32-bit có dấu cạn, lúc 2038-01-19T03:14:07Z. Một giây sau, bộ đếm tràn và quay về năm 1901.

Giấy phép, bản dùng thử và cài đặt

Những ngày này dành để kiểm thử cơ chế cấp phép của chính bạn, trường hợp mà chúng được viết ra để phục vụ.

  • Ngày cuối của bản dùng thử - ứng dụng có còn hoạt động ở khoảnh khắc cuối cùng của bản dùng thử không?
  • Ngày đầu tiên sau khi bản dùng thử hết hạn - nó có từ chối truy cập ngay lúc bản dùng thử kết thúc không, và bằng cách nào? Một thông báo hợp lý, hay một stack trace?
  • Giấy phép đã hết hạn một năm trước - nó có xử lý được giấy phép đã hết hạn từ lâu, chứ không chỉ mới hôm qua không?
  • Ngày trước khi cài đặt - nó có cư xử đúng khi đồng hồ được đặt trước chính ngày cài đặt của nó không? Trường hợp này đọc ngày tệp của chính mục tiêu, nên không cần tham số.

Quy tắc nghiệp vụ và hành vi đồng hồ

  • Thanh toán đến hạn, +N ngày làm việc - khoản thanh toán đến hạn sau N ngày làm việc có rơi vào đúng ngày, bỏ qua cuối tuần và ngày lễ của đúng quốc gia không? Kịch bản duy nhất cần lịch, và đáp án khác nhau giữa các thị trường.
  • Ranh giới tuổi thành niên - ứng dụng có chấp nhận người vừa đúng ranh giới và từ chối người còn thiếu một ngày không?
  • Lệch đồng hồ, +90 s - ứng dụng có xoay xở được khi đồng hồ của nó chạy nhanh hơn giờ thật chín mươi giây không? Đây là trường hợp làm hỏng mật khẩu dùng một lần dựa trên thời gian và việc xác thực token.

Cách dùng một kịch bản

Một kịch bản là một biểu thức ngày có tên. Máy tính ngày tính ra nó có nghĩa là gì, và phần thay thế thời gian chạy ứng dụng ở ngày đó - cùng một cái tên ở cả hai nơi.

# Đó là ngày nào, và ngày đó kiểm thử điều gì?
chrono calc --preset month-end

# Chạy một ứng dụng ở ngày đó
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

# Các kịch bản dùng thử lấy ngày bắt đầu từ ngày tệp của chính mục tiêu
chrono run "C:\apps\test.exe" --preset trial-first-day-after

Trong cửa sổ, chúng là các chip phía trên ô nhập ngày - một cú nhấp sẽ điền vào. Mỗi chip mang một câu riêng nói nó bắt được điều gì, phần mà một máy tính ngày trực tuyến không có cách nào đưa cho bạn.

Màn hình thiết lập của Chrono Mock với phần Scenarios đang mở: một ô tìm kiếm phía trên danh sách, rồi mỗi ngày làm sẵn kèm câu hỏi mà nó trả lời - ranh giới 2038, 29 tháng 2, một đồng hồ chạy nhanh chín mươi giây, ngày cuối tháng - và dưới danh sách là một dòng cho biết còn ba kịch bản nữa cần một giá trị do bạn chọn. Phần chân trang đọc lại thời điểm bằng ngôn ngữ thường ngày, phía trên nút Start.
Mỗi kịch bản mang theo câu hỏi nó trả lời chứ không chỉ một ngày. Ba kịch bản cần giá trị do bạn chọn được nêu tên dưới danh sách chứ không bị giấu đi.

Những gì không có ở đây

Các lần chuyển giờ mùa hè. Ép một ứng dụng đi qua ranh giới chuyển giờ tới hoặc lùi là một bài kiểm thử thực sự hữu ích và nó cố ý vắng mặt, vì múi giờ của phiên là một độ lệch cố định không có giờ mùa hè - hiện chưa có lần chuyển nào để mô phỏng. Cung cấp một kịch bản lặng lẽ không làm gì còn tệ hơn là không cung cấp.

Nó sẽ quay lại cùng một mô hình quy tắc múi giờ. Múi giờ làm và không làm những gì →

Dùng thử