TestMace - một IDE mạnh mẽ để làm việc với API

Chào mọi người! Hôm nay chúng tôi muốn giới thiệu tới cộng đồng CNTT sản phẩm của chúng tôi - một IDE để làm việc với API TestMace. Có lẽ một số bạn đã biết về chúng tôi từ bài viết trước. Tuy nhiên, chưa có đánh giá toàn diện về công cụ này nên chúng tôi giải quyết thiếu sót đáng tiếc này.

TestMace - một IDE mạnh mẽ để làm việc với API

Động lực

Trên thực tế, tôi muốn bắt đầu với việc chúng tôi đến với cuộc sống này như thế nào và quyết định tạo ra công cụ của riêng mình để làm việc nâng cao với API. Hãy bắt đầu với danh sách các chức năng mà một sản phẩm nên có, theo quan điểm của chúng tôi, chúng ta có thể nói rằng đó là một “IDE để làm việc với API”:

  • Tạo và thực thi các truy vấn và tập lệnh (chuỗi truy vấn)
  • Viết các loại bài kiểm tra
  • Tạo thử nghiệm
  • Làm việc với các mô tả API, bao gồm nhập từ các định dạng như Swagger, OpenAPI, WADL, v.v.
  • Yêu cầu chế nhạo
  • Hỗ trợ tốt một hoặc nhiều ngôn ngữ để viết script, bao gồm tích hợp với các thư viện phổ biến
  • vv

Danh sách có thể được mở rộng cho phù hợp với sở thích của bạn. Hơn nữa, điều quan trọng là không chỉ tạo ra IDE mà còn tạo ra một cơ sở hạ tầng nhất định, chẳng hạn như đồng bộ hóa đám mây, công cụ dòng lệnh, dịch vụ giám sát trực tuyến, v.v. Cuối cùng, xu hướng của những năm gần đây cho chúng ta thấy không chỉ chức năng mạnh mẽ của ứng dụng mà còn cả giao diện đẹp mắt của nó.

Ai cần một công cụ như vậy? Rõ ràng, tất cả những người ít nhất có mối liên hệ nào đó với việc phát triển và thử nghiệm API đều là nhà phát triển và người thử nghiệm =). Hơn nữa, nếu trước đây chỉ cần thực hiện các truy vấn đơn lẻ và các tập lệnh đơn giản là đủ, thì đối với người kiểm tra, đây là một trong những công cụ chính, trong số những công cụ khác, phải bao gồm một cơ chế mạnh mẽ để viết bài kiểm tra với khả năng chạy chúng trong CI.

Vì vậy, tuân theo những nguyên tắc này, chúng tôi bắt đầu tạo ra sản phẩm của mình. Hãy xem những gì chúng ta đã đạt được ở giai đoạn này.

bắt đầu nhanh

Hãy bắt đầu với việc làm quen đầu tiên với ứng dụng. Bạn có thể tải nó xuống trên trang web của chúng tôi. Hiện tại, cả 3 nền tảng chính đều được hỗ trợ - Windows, Linux, MacOS. Tải xuống, cài đặt, khởi chạy. Khi khởi chạy lần đầu tiên, bạn có thể thấy cửa sổ sau:

TestMace - một IDE mạnh mẽ để làm việc với API

Nhấp vào dấu cộng ở đầu khu vực nội dung để tạo yêu cầu đầu tiên của bạn. Tab truy vấn trông như thế này:

TestMace - một IDE mạnh mẽ để làm việc với API

Chúng ta hãy xem xét nó chi tiết hơn. Giao diện yêu cầu rất giống với giao diện của các ứng dụng khách còn lại phổ biến, giúp việc di chuyển từ các công cụ tương tự trở nên dễ dàng hơn. Hãy thực hiện yêu cầu đầu tiên tới url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - một IDE mạnh mẽ để làm việc với API

Nhìn chung, thoạt nhìn, bảng phản hồi cũng không gây ra bất ngờ gì. Tuy nhiên, tôi muốn bạn chú ý đến một số điểm:

  1. Phần thân của phản hồi được thể hiện dưới dạng cây, trước hết phần này bổ sung nội dung thông tin và thứ hai cho phép bạn thêm một số tính năng thú vị bên dưới
  2. Có tab Xác nhận, hiển thị danh sách các bài kiểm tra cho một yêu cầu nhất định

Như bạn có thể thấy, công cụ của chúng tôi có thể được sử dụng như một ứng dụng khách nghỉ ngơi tiện lợi. Tuy nhiên, chúng tôi sẽ không ở đây nếu khả năng của nó chỉ giới hạn trong việc gửi yêu cầu. Tiếp theo, tôi sẽ phác thảo các khái niệm và chức năng cơ bản của TestMace.

Các khái niệm và tính năng cơ bản

Nút

Chức năng TestMace được chia thành các loại nút khác nhau. Trong ví dụ trên, chúng tôi đã minh họa hoạt động của nút requestStep. Tuy nhiên, các loại nút sau hiện cũng có sẵn trong ứng dụng:

  • Yêu cầuBước. Đây là nút mà qua đó bạn có thể tạo yêu cầu. Nó chỉ có thể có một nút Xác nhận là phần tử con.
  • Quả quyết. Nút được sử dụng để viết bài kiểm tra. Chỉ có thể là nút con của nút requestStep.
  • Thư mục. Cho phép bạn nhóm các nút Thư mục và Bước yêu cầu trong chính chúng.
  • Dự án. Đây là nút gốc, được tạo tự động khi tạo dự án. Nếu không, nó sẽ lặp lại chức năng của nút Thư mục.
  • Liên kết. Liên kết đến nút Thư mục hoặc nút Yêu cầu. Cho phép bạn sử dụng lại các truy vấn và tập lệnh.
  • vv

Các nút nằm trong các vết xước (bảng ở dưới cùng bên trái, được sử dụng để tạo nhanh các truy vấn “một lần”) và trong các dự án (bảng ở trên cùng bên trái), chúng ta sẽ xem xét chi tiết hơn.

Dự án

Khi khởi chạy ứng dụng, bạn có thể nhận thấy một dòng Dự án đơn độc ở góc trên cùng bên trái. Đây là gốc của cây dự án. Khi bạn bắt đầu một dự án, một dự án tạm thời sẽ được tạo, đường dẫn đến dự án đó phụ thuộc vào hệ điều hành của bạn. Bất cứ lúc nào bạn có thể di chuyển dự án đến một nơi thuận tiện cho bạn.

Mục đích chính của dự án là khả năng lưu các phát triển trong hệ thống tệp và đồng bộ hóa chúng hơn nữa thông qua hệ thống kiểm soát phiên bản, chạy tập lệnh trong CI, xem xét các thay đổi, v.v.

Biến

Biến là một trong những cơ chế chính của ứng dụng. Những người làm việc với các công cụ như TestMace có thể đã hiểu những gì chúng ta đang nói đến. Vì vậy, biến là một cách để lưu trữ dữ liệu chung và liên lạc giữa các nút. Ví dụ, một chất tương tự là các biến môi trường trong Postman hoặc Insomnia. Tuy nhiên, chúng tôi đã đi xa hơn và phát triển chủ đề. Trong TestMace, các biến có thể được đặt ở cấp độ nút. Bất kì. Ngoài ra còn có cơ chế kế thừa các biến từ tổ tiên và các biến chồng chéo ở con cháu. Ngoài ra còn có một số biến tích hợp, tên các biến tích hợp bắt đầu bằng $. Đây là một số trong số chúng:

  • $prevStep - liên kết đến các biến của nút trước đó
  • $nextStep - liên kết đến các biến của nút tiếp theo
  • $parent - điều tương tự, nhưng chỉ dành cho tổ tiên
  • $response - phản hồi từ máy chủ
  • $env - biến môi trường hiện tại
  • $dynamicVar - các biến động được tạo trong quá trình thực thi tập lệnh hoặc truy vấn

$env - về cơ bản đây là các biến cấp độ nút Dự án thông thường, tuy nhiên, tập hợp các biến môi trường thay đổi tùy thuộc vào môi trường đã chọn.

Biến được truy cập thông qua ${variable_name}
Giá trị của một biến có thể là một biến khác hoặc thậm chí là toàn bộ biểu thức. Ví dụ: biến url có thể là một biểu thức như
http://${host}:${port}/${endpoint}.

Riêng biệt, cần lưu ý khả năng gán các biến trong quá trình thực thi tập lệnh. Ví dụ: thường có nhu cầu lưu dữ liệu ủy quyền (mã thông báo hoặc toàn bộ tiêu đề) đến từ máy chủ sau khi đăng nhập thành công. TestMace cho phép bạn lưu dữ liệu đó vào các biến động của một trong các tổ tiên. Để tránh xung đột với các biến “tĩnh” đã tồn tại, các biến động được đặt trong một đối tượng riêng biệt $dynamicVar.

Tập lệnh

Sử dụng tất cả các tính năng trên, bạn có thể chạy toàn bộ tập lệnh truy vấn. Ví dụ: tạo một thực thể -> truy vấn một thực thể -> xóa một thực thể. Ví dụ: trong trường hợp này, bạn có thể sử dụng nút Thư mục để nhóm một số nút requestStep.

Tự động hoàn thành và đánh dấu biểu thức

Để làm việc thuận tiện với các biến (và không chỉ), tính năng tự động hoàn thành là cần thiết. Và tất nhiên, làm nổi bật giá trị của một biểu thức để dễ dàng và thuận tiện hơn trong việc làm rõ giá trị của một biến cụ thể. Đây chính xác là trường hợp thà nhìn một lần còn hơn nghe hàng trăm lần:

TestMace - một IDE mạnh mẽ để làm việc với API

Điều đáng chú ý là tính năng tự động hoàn thành không chỉ được triển khai cho các biến mà còn cho các tiêu đề, giá trị của một số tiêu đề nhất định (ví dụ: tự động hoàn thành cho tiêu đề Kiểu nội dung), giao thức, v.v. Danh sách được cập nhật liên tục khi ứng dụng phát triển.

Hoàn tác / làm lại

Hoàn tác/làm lại các thay đổi là một việc rất thuận tiện, nhưng vì lý do nào đó, nó không được triển khai ở mọi nơi (và các công cụ làm việc với API cũng không ngoại lệ). Nhưng chúng tôi không phải là một trong số đó!) Chúng tôi đã triển khai hoàn tác/làm lại trong toàn bộ dự án, điều này cho phép bạn hoàn tác không chỉ chỉnh sửa một nút cụ thể mà còn cả việc tạo, xóa, chuyển động, v.v. Các hoạt động quan trọng nhất yêu cầu xác nhận.

Tạo bài kiểm tra

Nút Xác nhận chịu trách nhiệm tạo các bài kiểm tra. Một trong những tính năng chính là khả năng tạo bài kiểm tra mà không cần lập trình, sử dụng các trình chỉnh sửa tích hợp sẵn.

Nút Xác nhận bao gồm một tập hợp các xác nhận. Mỗi khẳng định có kiểu riêng của nó; hiện tại có một số loại khẳng định

  1. So sánh các giá trị - chỉ cần so sánh 2 giá trị. Có một số toán tử so sánh: bằng, không bằng, lớn hơn, lớn hơn hoặc bằng, nhỏ hơn, nhỏ hơn hoặc bằng.

  2. Chứa giá trị - kiểm tra sự xuất hiện của chuỗi con trong chuỗi.

  3. XPath - kiểm tra xem bộ chọn trong XML có chứa một giá trị nhất định không.

  4. Xác nhận JavaScript là một tập lệnh javascript tùy ý trả về true nếu thành công và sai nếu thất bại.

Tôi lưu ý rằng chỉ có xác nhận cuối cùng yêu cầu kỹ năng lập trình từ người dùng, 3 xác nhận còn lại được tạo bằng giao diện đồ họa. Ví dụ: đây là hộp thoại để tạo xác nhận giá trị so sánh trông như thế nào:

TestMace - một IDE mạnh mẽ để làm việc với API

Điều thú vị nhất là việc tạo ra các khẳng định nhanh chóng từ các câu trả lời, chỉ cần nhìn vào nó!

TestMace - một IDE mạnh mẽ để làm việc với API

Tuy nhiên, những xác nhận như vậy có những hạn chế rõ ràng mà bạn có thể muốn sử dụng xác nhận javascript để khắc phục. Và ở đây TestMace cũng cung cấp một môi trường thoải mái với tính năng tự động hoàn thành, đánh dấu cú pháp và thậm chí cả bộ phân tích tĩnh.

Mô tả API

TestMace cho phép bạn không chỉ sử dụng API mà còn ghi lại nó. Hơn nữa, bản thân phần mô tả cũng có cấu trúc phân cấp và phù hợp một cách hữu cơ với phần còn lại của dự án. Ngoài ra, hiện tại có thể nhập mô tả API từ các định dạng Swagger 2.0 / OpenAPI 3.0. Bản thân phần mô tả không chỉ có trọng lượng chết mà còn được tích hợp chặt chẽ với phần còn lại của dự án, đặc biệt là tính năng tự động hoàn thành URL, tiêu đề HTTP, tham số truy vấn, v.v. có sẵn và trong tương lai chúng tôi dự định thêm các bài kiểm tra để tuân thủ phản hồi với mô tả API.

Nút chia sẻ

Trường hợp: bạn muốn chia sẻ một yêu cầu có vấn đề hoặc thậm chí toàn bộ tập lệnh với đồng nghiệp hoặc đơn giản là đính kèm nó vào một lỗi. TestMace cũng đề cập đến trường hợp này: ứng dụng cho phép bạn tuần tự hóa bất kỳ nút nào và thậm chí cả cây con trong URL. Sao chép-dán và bạn có thể dễ dàng chuyển yêu cầu sang máy hoặc dự án khác.

Định dạng lưu trữ dự án mà con người có thể đọc được

Hiện tại, mỗi nút được lưu trữ trong một tệp riêng biệt có phần mở rộng yml (như trường hợp của nút Xác nhận) hoặc trong một thư mục có tên của nút và tệp index.yml trong đó.
Ví dụ: đây là giao diện của tệp yêu cầu mà chúng tôi đã thực hiện trong phần đánh giá ở trên:

chỉ mục.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

Như bạn có thể thấy, mọi thứ đều rất rõ ràng. Nếu muốn, định dạng này có thể dễ dàng chỉnh sửa thủ công.

Hệ thống phân cấp của các thư mục trong hệ thống tệp hoàn toàn lặp lại hệ thống phân cấp của các nút trong dự án. Ví dụ: một tập lệnh như:

TestMace - một IDE mạnh mẽ để làm việc với API

Ánh xạ hệ thống tệp theo cấu trúc sau (chỉ hiển thị phân cấp thư mục, nhưng bản chất rất rõ ràng)

TestMace - một IDE mạnh mẽ để làm việc với API

Điều này làm cho quá trình xem xét dự án dễ dàng hơn.

Nhập từ Người đưa thư

Sau khi đọc tất cả những điều trên, một số người dùng sẽ muốn dùng thử (phải không?) một sản phẩm mới hoặc (không đùa đâu!) sử dụng hoàn toàn nó trong dự án của họ. Tuy nhiên, quá trình di chuyển có thể bị dừng lại bởi một số lượng lớn các phát triển trong cùng một Postman. Đối với những trường hợp như vậy, TestMace hỗ trợ nhập bộ sưu tập từ Postman. Hiện tại, việc nhập khẩu không qua kiểm tra được hỗ trợ, nhưng chúng tôi không loại trừ việc hỗ trợ chúng trong tương lai.

Kế hoạch

Tôi hy vọng rằng nhiều người đã đọc đến thời điểm này sẽ thích sản phẩm của chúng tôi. Tuy nhiên, đó không phải là tất cả! Công việc phát triển sản phẩm đang diễn ra sôi nổi và đây là một số tính năng mà chúng tôi dự định sẽ sớm bổ sung.

Đồng bộ đám mây

Một trong những tính năng được yêu cầu nhiều nhất. Hiện tại, chúng tôi đề xuất sử dụng hệ thống kiểm soát phiên bản để đồng bộ hóa, nhờ đó chúng tôi đang làm cho định dạng trở nên thân thiện hơn với loại lưu trữ này. Tuy nhiên, quy trình làm việc này không phù hợp với tất cả mọi người, vì vậy chúng tôi dự định bổ sung cơ chế đồng bộ hóa quen thuộc với nhiều người thông qua máy chủ của mình.

CLI

Như đã đề cập ở trên, các sản phẩm cấp độ IDE không thể hoạt động nếu không có tất cả các loại tích hợp với các ứng dụng hoặc quy trình công việc hiện có. CLI chính xác là thứ cần thiết để tích hợp các bài kiểm tra được viết bằng TestMace vào quá trình tích hợp liên tục. Công việc trên CLI đang diễn ra sôi nổi; các phiên bản đầu tiên sẽ khởi động dự án với một báo cáo bảng điều khiển đơn giản. Trong tương lai, chúng tôi dự định thêm đầu ra báo cáo ở định dạng JUnit.

Hệ thống plugin

Bất chấp tất cả sức mạnh của công cụ của chúng tôi, số lượng trường hợp cần giải pháp là vô hạn. Rốt cuộc, có những nhiệm vụ dành riêng cho một dự án cụ thể. Đó là lý do tại sao trong tương lai chúng tôi dự định thêm SDK để phát triển plugin và mỗi nhà phát triển sẽ có thể thêm chức năng theo ý thích của mình.

Mở rộng phạm vi của các loại nút

Tập hợp các nút này không bao gồm tất cả các trường hợp mà người dùng yêu cầu. Các nút dự định được thêm vào:

  • Nút tập lệnh - chuyển đổi và đặt dữ liệu bằng js và API tương ứng. Khi sử dụng loại nút này, bạn có thể thực hiện những việc như tập lệnh yêu cầu trước và sau yêu cầu trong Postman.
  • Nút GraphQL - hỗ trợ graphql
  • Nút xác nhận tùy chỉnh - sẽ cho phép bạn mở rộng tập hợp các xác nhận hiện có trong dự án
    Đương nhiên, đây không phải là danh sách cuối cùng; nó sẽ được cập nhật liên tục nhờ phản hồi của bạn.

Câu Hỏi Thường Gặp

Bạn khác với Người đưa thư như thế nào?

  1. Khái niệm về nút, cho phép bạn mở rộng quy mô gần như vô tận chức năng của dự án
  2. Định dạng dự án mà con người có thể đọc được bằng cách lưu nó vào hệ thống tệp, giúp đơn giản hóa công việc bằng cách sử dụng hệ thống kiểm soát phiên bản
  3. Khả năng tạo các bài kiểm tra mà không cần lập trình và hỗ trợ js nâng cao hơn trong trình chỉnh sửa kiểm tra (tự động hoàn thành, bộ phân tích tĩnh)
  4. Tự động hoàn thành nâng cao và làm nổi bật giá trị hiện tại của biến

Đây có phải là sản phẩm nguồn mở không?

Không, hiện tại các nguồn đã bị đóng, nhưng trong tương lai chúng tôi đang xem xét khả năng mở các nguồn

Bạn sống bằng gì?)

Cùng với phiên bản miễn phí, chúng tôi dự định phát hành phiên bản trả phí của sản phẩm. Nó chủ yếu sẽ bao gồm những thứ yêu cầu phía máy chủ, chẳng hạn như đồng bộ hóa.

Kết luận

Dự án của chúng tôi đang có những bước nhảy vọt hướng tới một bản phát hành ổn định. Tuy nhiên, sản phẩm đã có thể được sử dụng và những phản hồi tích cực từ những người dùng đầu tiên của chúng tôi là bằng chứng cho điều này. Chúng tôi tích cực thu thập phản hồi vì nếu không hợp tác chặt chẽ với cộng đồng thì không thể xây dựng được một công cụ tốt. Bạn có thể tìm chúng tôi ở đây:

Trang web chính thức

Telegram

Slack

Facebook

Trình theo dõi vấn đề

Chúng tôi mong muốn mong muốn và đề xuất của bạn!

Nguồn: www.habr.com

Thêm một lời nhận xét