Quá trình phát triển phần mềm ngày càng trở nên phức tạp hơn khi thời gian trôi qua, khiến cho việc kiểm thử phần mềm trở nên cần thiết không kém để phát hành một sản phẩm ổn định và đáng tin cậy. Nhưng chúng tôi biết các bộ thử nghiệm cồng kềnh là nút cổ chai khét tiếng đối với các bản phát hành nhanh hơn.
Các nhóm nhà phát triển cần có khả năng tăng tốc các bài kiểm tra của họ để tiếp tục phát triển, nhưng điều đó không đơn giản.
Việc đo lường thời gian chạy của các bộ thử nghiệm có thể tác động đáng kể đến chu kỳ phát triển của bạn, cho phép các vòng phản hồi nhanh, sử dụng tài nguyên hiệu quả và khả năng bảo trì tốt hơn cho các thử nghiệm của bạn. Với tất cả những điều đó, bạn có thể thấy tầm quan trọng của việc đo lường thời gian chạy thử nghiệm.
Có một số cách đo thời gian chạy thử nghiệm, đủ để phù hợp với nhu cầu của hầu hết mọi người. Tuy nhiên, điều đó không có nghĩa là chúng luôn là cách tiếp cận tốt nhất. Hãy nói về một số phương pháp phổ biến nhất mà bạn có thể đã nghe nói đến:
Khi khung thử nghiệm của bạn tạo nhật ký, bạn có thể phân tích cú pháp chúng để trích xuất thông tin cần thiết như thời gian bắt đầu thử nghiệm và thời gian hoàn thành thử nghiệm.
import re def parse_logs(log_file): with open(log_file, 'r') as f: logs = f.readlines() test_start_time = None test_end_time = None for line in logs: if 'Test started' in line: test_start_time = extract_timestamp(line) elif 'Test completed' in line: test_end_time = extract_timestamp(line) if test_start_time and test_end_time: test_runtime = test_end_time - test_start_time print(f"Test runtime: {test_runtime}") def extract_timestamp(log_line): # Regular expression to extract timestamp (assuming format: [YYYY-MM-DD HH:MM:SS]) timestamp_pattern = r'\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]' match = re.search(timestamp_pattern, log_line) if match: timestamp = match.group(1) return convert_to_datetime(timestamp) return None def convert_to_datetime(timestamp): from datetime import datetime datetime_format = "%Y-%m-%d %H:%M:%S" return datetime.strptime(timestamp, datetime_format) # Usage parse_logs('test_logs.txt')
Trong ví dụ này, hàm parse_logs đọc từng dòng của tệp nhật ký và tìm kiếm các điểm đánh dấu cụ thể ('Đã bắt đầu kiểm tra' và 'Đã hoàn thành kiểm tra') để trích xuất các dấu thời gian tương ứng. Nó sử dụng các biểu thức chính quy để trích xuất dấu thời gian và chuyển đổi nó thành một đối tượng DateTime để tính toán thêm.
Một cách tiếp cận khác là ghi lại dấu thời gian trực tiếp trong mã kiểm tra của bạn. Trong ví dụ bên dưới, hàm run_test ghi lại thời gian bắt đầu bằng cách sử dụng time.time() trước khi thực hiện logic kiểm tra.
Sau khi kiểm tra hoàn tất, nó sẽ tính toán thời gian chạy bằng cách lấy thời gian kết thúc trừ đi thời gian bắt đầu, cũng thu được bằng cách sử dụng time.time().
Kết quả được in dưới dạng thời gian chạy thử tính bằng giây.
import time def run_test(): start_time = time.time() # Test logic goes here # ... end_time = time.time() test_runtime = end_time - start_time print(f"Test runtime: {test_runtime} seconds") # Usage run_test()
Bất kể cách tiếp cận của bạn là gì, những phương pháp này có xu hướng có một số cạm bẫy. Rất khó để có được kết quả hoàn toàn chính xác từ các phương pháp này, cho dù là do lỗi của con người hay các yếu tố bên ngoài.
Ngoài ra, nhiều trong số này không thể mở rộng quy mô với thử nghiệm của bạn. Điều đó có nghĩa là bạn cần tìm một cách chính xác hơn để đo lường.
Chúng ta đã nói đi nói lại về cách thức, nhưng còn lý do tại sao thì sao? Các thử nghiệm của bạn rất quan trọng, nhưng quy trình thử nghiệm có thể là nút cổ chai phân phối.
Bằng cách theo dõi cách các thử nghiệm của bạn chạy, bạn có thể thấy bức tranh toàn cảnh về hiệu suất của chúng, kết hợp trí thông minh của bộ thử nghiệm lại với nhau và thực hiện các bước để hợp lý hóa thử nghiệm của bạn hơn nữa, bao gồm ba lĩnh vực phổ biến:
Việc đo lường thời gian chạy của bộ kiểm tra cho phép bạn phát hiện ra những kiểm tra nào có thời gian chạy dài nhất. Tính minh bạch này cho phép bạn tối ưu hóa hơn nữa quá trình thử nghiệm, khi có thể, bằng cách thử nghiệm song song mang lại cho bạn kết quả nhanh hơn và vòng phản hồi ngắn hơn.
Việc đo lường chính xác thời gian chạy thử nghiệm của bạn có thể giúp bạn lập kế hoạch cho các giai đoạn thử nghiệm của mình hiệu quả hơn. Bạn sẽ có thể phân bổ thời gian và sức mạnh tính toán cho các thử nghiệm dài hơn của mình và tránh tắc nghẽn sau này trong quá trình thực hiện.
Xác định các bài kiểm tra chậm nhất của bạn cũng cho phép bạn lùi lại một bước và ưu tiên các bài kiểm tra quan trọng nhất và những gì có thể được lưu lại sau này. Bằng cách đó, bạn có thể chạy thử nghiệm nhanh hơn trước, cung cấp cho bạn thông tin chi tiết quan trọng về bản dựng trước khi các thử nghiệm dài hơn của bạn bắt đầu hoạt động.
Thời gian chạy thử nghiệm rất quan trọng trong các quy trình CI/CD, trong đó phản hồi nhanh là điều cần thiết. Bằng cách đo lường và tối ưu hóa thời gian chạy thử nghiệm của mình, bạn có thể giảm thời gian cần thiết cho quy trình CI/CD , cho phép triển khai nhanh hơn.
Đổi lại, điều này cải thiện tính linh hoạt tổng thể của quá trình phát triển và cho phép lặp lại thường xuyên hơn.
Khá rõ ràng rằng việc đo lường thời gian chạy thử nghiệm có thể là một yếu tố quan trọng trong quá trình thử nghiệm tổng thể của bạn. Và với Launchable, bạn có thể bắt đầu đo lường ngay lập tức và thực hiện các thử nghiệm của mình hiệu quả hơn.
Có thể khởi chạy tự động theo dõi thời gian chạy thử nghiệm bằng cách tích hợp với tất cả các công cụ CI/CD yêu thích của bạn, bao gồm TravisCI, Jenkins và GitHub Actions. Điều đó có nghĩa là bạn có thể dễ dàng đưa Launchable vào quy trình bán hàng hiện có của mình, cho phép mô hình ML của chúng tôi phân tích các thử nghiệm của bạn.
Và khi chúng tôi tham gia, chúng tôi có thể đo liền mạch thời gian chạy thử nghiệm trên nhiều bản dựng, cung cấp cho bạn thông tin chi tiết quan trọng về các thử nghiệm của bạn ngoài thời gian chạy .
Trao quyền cho nhóm của bạn để định lượng tác động của những thay đổi trong bộ thử nghiệm của bạn ngoài thời gian chạy thử nghiệm. Có thể khởi chạy cung cấp các số liệu về sức khỏe của bộ thử nghiệm để có được tính minh bạch sâu hơn của bộ thử nghiệm dành cho QA dựa trên dữ liệu.
Xác định tỷ lệ lỗi của phiên kiểm thử: Xác định các kiểm thử thường xuyên bị lỗi và điều tra các sự cố tiềm ẩn với các kiểm thử hoặc bản dựng hiện tại. Thu thập thông tin chuyên sâu có giá trị về tính ổn định của quy trình thử nghiệm và đưa ra quyết định sáng suốt để cải thiện chất lượng tổng thể.
Sử dụng hiệu quả cơ sở hạ tầng thử nghiệm của bạn là chìa khóa để giảm thiểu thời gian nhàn rỗi và tối đa hóa tài nguyên của bạn. Dễ dàng xác định bất kỳ tắc nghẽn nào cản trở hiệu suất bằng cách đo thời gian chạy thử nghiệm với Launchable.
Nhận tất cả thông tin bạn cần để kiểm tra các mẫu và xu hướng của bộ trong các thử nghiệm của bạn, cho phép bạn đưa ra các quyết định dựa trên dữ liệu sáng suốt để tối ưu hóa các thử nghiệm của mình. Và bằng cách đó, bạn có thể hợp lý hóa quy trình thử nghiệm tổng thể của mình .