Mọi người dùng nó để làm gì
Năm việc xuất hiện trong gần như mọi dự án nhận tệp từ con người, và lệnh làm từng việc. Mỗi ví dụ bên dưới chạy đúng như được viết.
Giới hạn tải lên
Kiểm thử xem giới hạn kích thước tệp có được áp dụng đúng nơi nó nói không
Một giới hạn là ba trường hợp kiểm thử chứ không phải một: ngay dưới, đúng bằng và ngay trên. Làm tay thì phải tính số byte và hy vọng không lệch một. Hãy yêu cầu cả bộ:
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
Bạn nhận ba PDF thật có 1048575, 1048576 và 1048577 byte, cùng manifest nói hai tệp đầu nên được
chấp nhận và tệp thứ ba bị từ chối vì size_limit. Bài kiểm thử của bạn đọc kỳ vọng
thay vì bạn viết tay ba câu khẳng định - và khi giới hạn đổi, bạn đổi một con số rồi chạy lại.
Điều tương tự dùng được không cần preset khi bạn muốn một bộ ranh giới đơn ngay trong lệnh:
tfg generate --format png --boundary 5mb --out ./png-edges
Tích hợp liên tục
Giữ fixture ngoài kho mã mà không mất chúng
Fixture nhị phân lớn làm kho mã clone chậm và khó review, và không ai biết cái gì đã đổi khi thay một tệp. Công thức là vài trăm ký tự YAML dựng lại các tệp giống hệt - từng byte, trên mọi máy - vì mọi tệp đều suy ra từ seed của lần chạy.
- name: build the fixtures
run: tfg generate fixtures.yaml --out ./fixtures
- name: run the tests
run: pytest tests/
- name: nothing moved
run: tfg verify ./fixtures/manifest.json
Mỗi kết cục có mã thoát riêng, nên pipeline phân biệt được công thức xấu, đĩa đầy và sai lệch khi xác minh. Lần chạy thất bại không in gì ra đầu ra chuẩn, nhờ vậy trình phân tích nhật ký không đọc lỗi thành dữ liệu.
Quy mô
Tìm hiểu chuyện gì xảy ra khi thư mục lớn
Quy trình nhập, tác vụ ban đêm và danh sách thư mục hoạt động khác nhau ở mười nghìn tệp so với mười tệp. Kích thước rút từ một khoảng làm bộ trông như lưu lượng thật thay vì mười nghìn tệp giống hệt, và lần rút lấy từ seed, nên bộ ngày mai vẫn như cũ.
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./fixtures
Kiểm tra một lần chạy sẽ tốn bao nhiêu trước khi nó ghi gì, điều quan trọng khi tổng được đo bằng gigabyte:
tfg generate --format log --size-range 1kb-8kb --count 10000 --dry-run
Lần chạy lớn hơn dung lượng trống của đĩa bị từ chối trước khi byte đầu tiên được ghi, thay vì làm đầy đĩa rồi hỏng giữa chừng.
Tệp nén
Kiểm thử trình giải nén với tệp nén thật sự chứa tệp
Tệp nén rỗng có đuôi đúng chẳng chứng minh gì về mã mở nó và duyệt những gì bên trong. Hãy khai báo nội dung và tệp nén thật sự chứa nó:
targets:
- id: bundle
format: zip
contains:
- format: txt
count: 200
size: 4kb
Độ sâu lồng nhau, số mục và kích thước phần bên trong đều là những thứ mà quy trình nhập có ý kiến riêng, và đây là cách bạn biết ý kiến đó là gì.
Bộ phân tích và trình xem
Kiểm tra mã của chính bạn đọc một định dạng như phần mềm thật
Mỗi định dạng ở đây được kiểm tra bằng trình đọc độc lập trước khi phát hành - PNG được mở và so sánh pixel, DOCX được các thư viện riêng đọc lại, tệp nén được giải nén. Nghĩa là tệp mà bộ phân tích của bạn từ chối là một phát hiện về bộ phân tích của bạn, không phải về trình tạo.
tfg generate --format docx --size 300kb --set paragraphs=120 --out ./documents
tfg generate --format xlsx --size 2mb --set rows=400 --set columns=6 --out ./sheets
Trang định dạng liệt kê các thiết lập mỗi định dạng nhận và tệp nhỏ nhất mà mỗi định dạng có thể có.
Hướng dẫn
Hai trong số đó, chi tiết hơn
- Tệp kiểm thử bị hỏng - một tệp cố ý làm hỏng, đúng kích thước, với điều phải xảy ra với nó được ghi trong manifest.
- Tệp kiểm thử trong CI - một workflow GitHub Actions, một job GitLab và các mã thoát làm bản dựng thất bại.
Dành cho ai
Kỹ sư QA, tự động hóa kiểm thử và bất kỳ ai có mã đứng sau là biểu mẫu tải lên, quy trình nhập, bộ phân tích cú pháp hoặc hạn ngạch lưu trữ. Nó chạy trên máy hoàn toàn không có mạng, điều quan trọng trong môi trường doanh nghiệp đóng nơi trình tạo chạy trên trình duyệt không phải một lựa chọn.
Miễn phí, mã nguồn mở, GPL-3.0. Không cần đăng ký. Bản tải cho Windows và macOS đã được ký nên khởi động không cảnh báo.