JQL: Hàm, lịch sử và sắp xếp

Tháng Bảy 30, 2022
Nga Pham

Các hàm trong Jira rút gọn logic phức tạp để bạn có thể truy cập và sử dụng chúng một cách đơn giản.

Chúng tôi đề xuất bạn xem bài đăng Tổng quan về JQL: phương pháp tìm kiếm linh hoạt nhất trên Jira để tìm hiểu về một số khái niệm cơ bản trước khi đọc bài đăng này. Nội dung dưới đây được triển khai dựa trên nền tảng cơ bản đó.

Hàm: Chúng làm gì?

Giống như trong một lớp học toán, các hàm trong Jira rút gọn logic phức tạp để bạn có thể truy cập và sử dụng chúng một cách đơn giản.

Lấy ví dụ, Jira hỗ trợ một hàm có tên làm membersof(). Bạn có thể sử dụng hàm này để xem tất cả các issue được giao cho các thành viên của một nhóm. Các nhóm có thể được xác định trong Jira hoặc đến từ các nhóm hiện có trong máy chủ thư mục của công ty bạn.

project = Pipeline AND assignee in membersof(‘test-engineering’)

Truy vấn trên trả về tất cả các issue được giao cho các kỹ sư kiểm thử. Các hàm cũng phản ứng linh hoạt khi môi trường thay đổi: Nếu nhiều người dùng khác được thêm vào nhóm test-engineering, kết quả của truy vấn cũng sẽ được cập nhật một cách tự động.

Tiếp theo, hãy xem cách tìm ra những vấn đề đã được khắc phục trong bản phát hành mới nhất.

project = Pipeline AND status in (resolved, closed) and fixversion = “Sprint A”

Truy vấn trên sẽ trả về tất cả các issue đã được khắc phục trong một bản phát hành cụ thể, ở đây là Sprint A. Vậy làm thế nào để có được một danh sách luôn hiển thị các vấn đề đã được khắc phục trong bản phát hành cuối cùng bất cứ khi nào truy vấn được thực thi? Hãy làm như sau:

status in (resolved, closed) and fixVersion = latestReleasedVersion(Pipeline)

Theo thời gian, nhóm sẽ phát hành sprint B, C và D. Truy vấn đầu tiên chỉ trả về danh sách các issue được giải quyết trong sprint A, còn hàm thứ hai truy vấn trên Jira để tìm phiên bản phát hành cuối cùng của dự án Pipeline. Do đó, khi các sprint B, C và D được phát hành, truy vấn sẽ lấy dữ liệu phù hợp cho các bản phát hành tương ứng. Rất tuyệt phải không?

Lịch sử: Điều gì đã xảy ra? 

Bạn cũng có thể sử dụng JQL để xem công việc đã được thực hiện như thế nào theo thời gian. Ví dụ, nếu bạn muốn xem các lỗi mà John Smith đã giải quyết trong dự án Pipeline, bạn có thể sử dụng truy vấn sau:

project = Pipeline AND status CHANGED FROM “In Progress” TO “Resolved” BY jsmith

Đôi khi, các issue được đánh dấu thất bại sau khi kiểm thử hoặc được mở lại (reopen) vì một lý do đặc biệt nào. Bạn có thể lấy được danh sách các thay đổi không hoạt động như dự kiến một cách dễ dàng bằng truy vấn sau:

status CHANGED FROM “In Progress” TO “Open”

Để xem những issue nào đang được thực hiện trong tuần này, bạn có thể sử dụng truy vấn:

status was (“In Progress”) DURING (startofweek(), endofweek());

Vào thời điểm cuối năm, bạn có thể cần tổng kết những issue bản thân đã giải quyết trong năm qua. Truy vấn sau sẽ giúp bạn làm được điều đó:

resolution changed to “Fixed” by currentUser()
during (startOfYear(), endOfYear())

Xác định phạm vi và sắp xếp: Vũ khí bí mật mới của bạn

Thông thường, khi bắt đầu tìm kiếm các issue của mình trên Jira, bạn có thể nhận được rất nhiều thông tin. Việc xác định phạm vi và sắp xếp các truy vấn sẽ giúp bạn xem được các thông tin cần thiết một cách chính xác và nhanh chóng hơn.

Xác định phạm vi

Xác định phạm vi là tập trung truy vấn vào lượng dữ liệu phù hợp để có được chính xác các thông tin liên quan đến yêu cầu, không hơn không kém.

Bắt đầu với danh sách các open issue:

project = Pipeline AND status = open

Bạn có thể thấy rằng truy vấn trên trả về quá nhiều issue vì kết quả bao gồm mọi thứ, từ công việc tồn đọng đến các vấn đề bạn hiện đang giải quyết. Bạn có thể thu hẹp kết quả một chút bằng cách loại bỏ các vấn đề tồn đọng như sau:

project = Pipeline AND status = open AND fixVersion = “Current Sprint”

Kết quả này tốt hơn, tuy nhiên bạn vẫn còn có thể thu hẹp hơn nữa. Hãy xem issue nào không được hoàn thành trong sprint trước và đã được chuyển sang sprint này.

project = Pipeline AND status = open AND fixVersion = “Current Sprint”
AND fixVersion WAS “Last Sprint”

Bây giờ, bạn đã có được danh sách các issue bạn thật sự cần quan tâm trong tương lai, do đó có thể dễ dàng cân nhắc các issue này với mức độ tập trung cao và phân tích lý do tại sao chúng không được hoàn thành trong sprint trước. Liệu đó là một vấn đề về ước tính, các yêu cầu hay điều gì khác? Các issue đã được lọc ra trong truy vấn đầu tiên, nhưng việc tìm ra chúng một cách thủ công lại không hề dễ dàng. Tạo ra một truy vấn tốt là một quá trình lặp đi lặp lại: truy vấn, và đánh giá xem liệu bạn có thể thu hẹp kết quả một cách chính xác hơn hay không. Bạn thực hành càng nhiều, quá trình này sẽ càng trở nên đơn giản và dễ dàng hơn.

Sắp xếp

Hãy sắp xếp dữ liệu một cách phù hợp sao cho tập dữ liệu quan trọng nhất được hiển thị đầu tiên.

Giả sử bạn muốn xem tất cả lỗi cần giải quyết trong một sprint cụ thể.

project = Pipeline AND fixVersion = “Current Sprint” AND status = open

Bạn đang cố gắng thu được điều gì từ dữ liệu này? Nếu bạn đang tìm hiểu rủi ro, chắc hẳn bạn sẽ cần xem danh sách được sắp xếp theo mức độ ưu tiên và người đảm nhận, để xem xét liệu có ai phải đảm nhận nhiều hơn một lỗi có mức độ ưu tiên cao hay không. JQL có từ khoá ORDER BY để khiến Jira sắp xếp kết quả trả về. Truy vấn trên có thể được mở rộng bằng cách thêm lệnh sắp xếp như sau:

project = Pipeline AND fixVersion = “Current Sprint” AND status = open ORDER BY priority, assignee

Jira sẽ sắp xếp danh sách kết quả theo độ ưu tiên, sau đó sắp xếp từng nhóm issue có cùng một cấp độ ưu tiên theo người đảm nhận. 

Tiếp theo, hãy xem xét một ví dụ khác. Giả sử bạn cần kiểm tra các lỗi sắp xuất hiện trong dự án. Bạn cần xem xét các lỗi nghiêm trọng hoặc trở ngại mới xuất hiện để đánh giá xem liệu mức độ ổn định của các bản phát hành có bị suy giảm hay không. 

project = Pipeline AND priority in (blocker, critical) AND created > -2w ORDER BY created DESC

Truy vấn trên kiểm soát mức độ ưu tiên và giới hạn phạm vi thời gian issue được tạo. Lệnh sắp xếp thực hiện công việc hiển thị các issue gần nhất trước tiên. Bạn có thể sử dụng từ khoá DESC để sắp xếp theo chiều ngược lại (mới nhất đến cũ nhất). Bằng cách này, bạn có thể tập trung sự chú ý của khán giả vào những vấn đề quan trọng nhất trước tiên, bởi vì không phải ai cũng sẽ xem xét từng issue trong báo cáo của bạn. Hãy luôn nhớ thêm lệnh sắp xếp vào truy vấn để các issue quan trọng nhất được hiển thị đầu tiên.

Kết luận

Chúng ta đã tìm hiểu cấu trúc cơ bản, chức năng, dữ liệu hiện tại, dữ liệu lịch sử, sắp xếp và xác định phạm vi. Nếu bạn muốn tìm hiểu sâu hơn về JQL, chúng tôi đề xuất truy cập tài liệu JQL Reference. 

Theo Atlassian