paint-brush
Đo lường thời gian chạy thử nghiệm: Cách tối ưu hóa hiệu suất bộ thử nghiệm của bạntừ tác giả@launchable
7,486 lượt đọc
7,486 lượt đọc

Đo lường thời gian chạy thử nghiệm: Cách tối ưu hóa hiệu suất bộ thử nghiệm của bạn

từ tác giả Launchable6m2023/07/25
Read on Terminal Reader

dài quá đọc không nổi

Hiểu lý do tại sao đo lường thời gian chạy thử nghiệm có thể giúp tăng tốc chu kỳ phát triển của bạn và các cách tối ưu để hoàn thành phép đo.
featured image - Đo lường thời gian chạy thử nghiệm: Cách tối ưu hóa hiệu suất bộ thử nghiệm của bạn
Launchable HackerNoon profile picture

Các phương pháp tiếp cận thời gian chạy thử nghiệm thủ công và được hỗ trợ bởi AI mà bạn có thể bắt đầu sử dụng ngay hôm nay

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ác phương pháp truyền thống để đ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:


  • Tính thời gian thủ công - Cách cơ bản nhất có thể, cách tính thời gian cho các thử nghiệm này bằng đồng hồ truyền thống và đồng hồ bấm giờ không phải là chưa từng có. Tất cả những gì bạn cần là một cách để theo dõi thời gian trôi qua (như chức năng đồng hồ bấm giờ trên điện thoại của bạn) và một số thời điểm thích hợp. Tuy nhiên, nó không chính xác nhất vì nó vẫn dựa vào sự tương tác của con người.


  • Tích hợp với các công cụ CI - Rất nhiều công cụ CI bao gồm các tính năng để đo thời gian chạy thử nghiệm. Các công cụ như TravisCI và Jenkins có thể ghi lại thời gian bắt đầu và kết thúc của các công việc được cung cấp, giúp bạn có cái nhìn tổng quan về cách chúng thực hiện và liệu nó có thay đổi hay không.


  • Phân tích nhật ký và sử dụng dấu thời gian - Một cách khác “thủ công” hơn là chỉ cần thiết lập nhật ký trong các thử nghiệm của bạn khi chúng chạy. Bất kể bạn sử dụng ngôn ngữ nào, sẽ luôn có hàm print() tương đương ở đâu đó. Bạn cũng có thể đặt các bài kiểm tra của mình để ghi lại các kết quả này để phân tích cú pháp dễ dàng hơn, nhưng một trong hai lựa chọn sẽ khiến bài kiểm tra viết lâu hơn.

Ví dụ phân tích nhật ký trong Python

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.

Ví dụ về dấu thời gian với Python

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.

Tại sao tôi vẫn nên đo thời gian chạy thử nghiệm?

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:

Tối ưu hóa song song

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.

Phân bổ nguồn lực

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.

Ưu tiên thử nghiệm

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.

Cải tiến liên tục

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.

Tự động theo dõi thời gian chạy thử nghiệm và KPI quan trọng với Launchable

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.

Thời gian chạy thử nghiệm có thể khởi chạy đo lường như thế nào?

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 .

Thông tin chi tiết về thử nghiệm sâu hơn ngoài thời gian chạy để có sức khỏe bộ thử nghiệm hoàn chỉnh

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.


  • Ưu tiên các bài kiểm tra không ổn định có tác động: Các bài kiểm tra không ổn định có thể gây đau đầu cho các nhóm QA, tiêu tốn thời gian và công sức. Có thể khởi chạy xác định các thử nghiệm không ổn định dựa trên tác động của chúng, cho phép bạn giải quyết và chạy chúng một cách đáng tin cậy hơn. Nhận thông tin chuyên sâu từ báo cáo Tính không ổn định hàng ngày của chúng tôi và tự tin khắc phục các bài kiểm tra của bạn.


  • Theo dõi thời lượng phiên kiểm tra: Đo thời gian cần thiết để bộ kiểm tra của bạn chạy qua nhiều phiên. Tính năng theo dõi của chúng tôi làm nổi bật các bài kiểm tra vượt quá thời lượng dự kiến, giúp bạn xác định và giải quyết mọi vấn đề về hiệu suất.


  • Tối ưu hóa tần suất phiên kiểm tra: Theo dõi tần suất các bộ kiểm tra của bạn được thực thi và kết hợp nó với thời lượng phiên. Đảm bảo các bài kiểm tra được chạy ở các khoảng thời gian phù hợp. Ngoài ra, Lựa chọn thử nghiệm dự đoán tiết kiệm thời gian và tài nguyên bằng cách chạy các thử nghiệm phù hợp nhất vào thời điểm tối ư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 .