Tại sao TestMace lại tốt hơn Postman

Tại sao TestMace lại tốt hơn Postman

Xin chào mọi người, bạn đi đây TestMace! Có lẽ nhiều người biết đến chúng tôi từ của chúng tôi Trước Điều. Dành cho những người mới tham gia: chúng tôi đang phát triển một IDE để hoạt động với API TestMace. Câu hỏi thường gặp nhất khi so sánh TestMace với các sản phẩm cạnh tranh là “Bạn khác với Postman như thế nào?” Chúng tôi quyết định rằng đã đến lúc đưa ra câu trả lời chi tiết cho câu hỏi này. Dưới đây chúng tôi đã phác thảo những lợi thế của chúng tôi so với Người phát thơ.

Chia thành các nút

Nếu bạn làm việc với Postman thì bạn biết rằng giao diện yêu cầu chứa tất cả các chức năng cần thiết. Có các tập lệnh, bài kiểm tra và trên thực tế, có cả các truy vấn. Điều này giúp người mới bắt đầu dễ dàng hơn, nhưng trong các kịch bản lớn, cách tiếp cận này không linh hoạt. Điều gì sẽ xảy ra nếu bạn muốn tạo một số truy vấn và thực hiện tổng hợp chúng? Điều gì sẽ xảy ra nếu bạn muốn thực thi một tập lệnh mà không có yêu cầu hoặc một số tập lệnh được phân tách hợp lý liên tiếp? Sau cùng, sẽ là một ý tưởng tốt nếu tách các thử nghiệm ra khỏi các tập lệnh tiện ích thông thường. Ngoài ra, cách tiếp cận “thêm tất cả chức năng vào một nút” không thể mở rộng được - giao diện nhanh chóng trở nên quá tải.

TestMace ban đầu chia tất cả chức năng thành các loại nút khác nhau. Bạn có muốn đưa ra yêu cầu không? Nó dành cho bạn bước yêu cầu nút Bạn có muốn viết một kịch bản? Nó dành cho bạn kịch bản nút Cần xét nghiệm? Vui lòng - Quả quyết nút Ồ vâng, bạn vẫn có thể gói gọn toàn bộ chuyện này lại thư mục nút Và tất cả điều này có thể dễ dàng kết hợp với nhau. Cách tiếp cận này không chỉ rất linh hoạt mà còn phù hợp với nguyên tắc trách nhiệm duy nhất, cho phép bạn chỉ sử dụng những gì bạn thực sự cần vào lúc này. Tại sao tôi cần tập lệnh và bài kiểm tra nếu tôi chỉ muốn đưa ra yêu cầu?

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

Có sự khác biệt về khái niệm giữa TestMace và Postman trong cách chúng được lưu trữ. Trong Postman, tất cả các yêu cầu được lưu trữ ở đâu đó trong bộ nhớ cục bộ. Nếu có nhu cầu chia sẻ yêu cầu giữa nhiều người dùng thì bạn cần sử dụng tính năng đồng bộ hóa tích hợp sẵn. Trên thực tế, đây là một cách tiếp cận được chấp nhận rộng rãi nhưng không phải không có nhược điểm. Bảo mật dữ liệu thì sao? Rốt cuộc, chính sách của một số công ty có thể không cho phép lưu trữ dữ liệu với bên thứ ba. Tuy nhiên, chúng tôi nghĩ TestMace có thứ gì đó tốt hơn để cung cấp! Và tên của cải tiến này là “định dạng dự án mà con người có thể đọc được”.

Hãy bắt đầu với thực tế là về nguyên tắc, trong TestMace có một thực thể “dự án”. Và ứng dụng này ban đầu được phát triển với mục đích lưu trữ các dự án trong các hệ thống kiểm soát phiên bản: cây dự án gần như được chiếu một đối một lên cấu trúc tệp, yaml được sử dụng làm định dạng lưu trữ (không có thêm dấu ngoặc và dấu phẩy) và biểu diễn tệp của từng nút được mô tả chi tiết trong tài liệu có nhận xét. Nhưng trong hầu hết các trường hợp, bạn sẽ không nhìn vào đó - tất cả các tên trường đều có tên logic.

Điều này mang lại cho người dùng những gì? Điều này cho phép bạn thay đổi quy trình làm việc của nhóm rất linh hoạt bằng cách sử dụng các phương pháp quen thuộc. Ví dụ: nhà phát triển có thể lưu trữ một dự án trong cùng kho lưu trữ với phần phụ trợ. Trong các nhánh, ngoài việc thay đổi cơ sở mã, nhà phát triển có thể sửa các tập lệnh truy vấn và kiểm tra hiện có. Sau khi thực hiện các thay đổi đối với kho lưu trữ (git, svn, Mercurial - bất cứ điều gì bạn thích nhất), CI (yêu thích của bạn, không bị ai áp đặt) khởi chạy tiện ích bảng điều khiển của chúng tôi testmace-clivà báo cáo nhận được sau khi thực thi (ví dụ: ở định dạng junit, cũng được hỗ trợ trong testmace-cli) sẽ được gửi đến hệ thống thích hợp. Và vấn đề bảo mật nêu trên không còn là vấn đề nữa.

Như bạn có thể thấy, TestMace không áp đặt hệ sinh thái và mô hình của nó. Thay vào đó, nó dễ dàng phù hợp với các quy trình đã được thiết lập.

Biến động

TestMace tuân theo khái niệm không cần mã: nếu một vấn đề có thể được giải quyết mà không cần sử dụng mã, chúng tôi sẽ cố gắng tạo cơ hội này. Làm việc với các biến chính xác là loại chức năng mà trong hầu hết các trường hợp bạn có thể thực hiện mà không cần lập trình.

Ví dụ: chúng tôi đã nhận được phản hồi từ máy chủ và chúng tôi muốn lưu một phần phản hồi vào một biến. Trong Postman, trong một tập lệnh thử nghiệm (bản thân nó đã lạ rồi), chúng ta sẽ viết một cái gì đó như:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Nhưng theo quan điểm của chúng tôi, việc viết một kịch bản cho một kịch bản đơn giản và được sử dụng thường xuyên như vậy có vẻ dư thừa. Do đó, trong TestMace có thể gán một phần câu trả lời cho một biến bằng giao diện đồ họa. Hãy nhìn xem nó đơn giản thế nào:

Tại sao TestMace lại tốt hơn Postman

Và bây giờ với mỗi yêu cầu, biến động này sẽ được cập nhật. Nhưng bạn có thể phản đối, lập luận rằng cách tiếp cận của Postman linh hoạt hơn và cho phép bạn không chỉ thực hiện một bài tập mà còn thực hiện một số tiền xử lý. Đây là cách sửa đổi ví dụ trước:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Chà, vì mục đích này TestMace có kịch bản nút, bao gồm kịch bản này. Để tái tạo trường hợp trước đó nhưng đã được TestMace thực thi, bạn cần tạo một nút tập lệnh theo yêu cầu và sử dụng mã sau làm tập lệnh:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Như bạn có thể thấy, thành phần của các nút ở đây cũng hoạt động tốt. Và đối với trường hợp đơn giản như được mô tả ở trên, bạn chỉ cần gán biểu thức ${crypto.MD5($response.data)} biến được tạo thông qua GUI!

Tạo bài kiểm tra qua GUI

Postman cho phép bạn tạo các bài kiểm tra bằng cách viết các tập lệnh (trong trường hợp của Postman là JavaScript). Cách tiếp cận này có nhiều ưu điểm - tính linh hoạt gần như không giới hạn, tính sẵn có của các giải pháp làm sẵn, v.v.

Tuy nhiên, thực tế thường là (chúng ta không như vậy, cuộc sống là như vậy) rằng một người kiểm thử không có kỹ năng lập trình nhưng lại muốn mang lại lợi ích cho nhóm ngay lúc này. Đối với những trường hợp như vậy, tuân theo khái niệm không có mã, TestMace cho phép bạn tạo các bài kiểm tra đơn giản thông qua GUI mà không cần dùng đến việc viết tập lệnh. Ví dụ: đây là quá trình tạo một bài kiểm tra so sánh các giá trị cho sự bằng nhau trông như thế nào:

Tại sao TestMace lại tốt hơn Postman

Tuy nhiên, việc tạo các bài kiểm tra trong trình soạn thảo đồ họa không loại trừ khả năng viết bài kiểm tra bằng mã. Tất cả các thư viện tương tự đều có ở đây như trong nút tập lệnh và chai cho việc viết bài kiểm tra.

Các tình huống thường phát sinh khi một truy vấn nhất định hoặc thậm chí toàn bộ tập lệnh cần được thực thi nhiều lần ở các phần khác nhau của dự án. Một ví dụ về các yêu cầu như vậy có thể là ủy quyền nhiều giai đoạn tùy chỉnh, đưa môi trường về trạng thái mong muốn, v.v. Nói chung, xét về mặt ngôn ngữ lập trình, chúng tôi mong muốn có các hàm có thể được sử dụng lại trong các phần khác nhau của ứng dụng. Trong TestMace chức năng này được thực hiện bởi Link nút Nó rất dễ sử dụng:
1) tạo truy vấn hoặc tập lệnh
2) tạo một nút loại Liên kết
3) trong các tham số, chỉ định liên kết đến tập lệnh được tạo ở bước đầu tiên

Trong phiên bản nâng cao hơn, bạn có thể chỉ định biến động nào từ tập lệnh được chuyển lên cấp cao hơn so với liên kết. Nghe có vẻ khó hiểu? Giả sử chúng tôi đã tạo một Thư mục có tên tạo-bài, trong đó một biến động được gán cho nút này postId. Bây giờ trong nút Liên kết tạo-bài-liên kết bạn có thể xác định rõ ràng rằng biến postId được giao cho tổ tiên tạo-bài-liên kết. Cơ chế này (một lần nữa, trong ngôn ngữ lập trình) có thể được sử dụng để trả về kết quả từ một “hàm”. Nói chung là rất tuyệt, DRY đang hoạt động rất tốt và một lần nữa không một dòng mã nào bị hỏng.

Tại sao TestMace lại tốt hơn Postman

Còn với Postman thì có tính năng yêu cầu sử dụng lại các yêu cầu treo từ năm 2015, và dường như thậm chí còn có một số gợi ýrằng họ đang giải quyết vấn đề này. Tất nhiên, ở dạng hiện tại, Postman có khả năng thay đổi luồng thực thi, điều này về mặt lý thuyết có thể giúp thực hiện hành vi tương tự, nhưng đây giống một cách hack bẩn hơn là một cách tiếp cận thực sự hiệu quả.

Sự khác biệt khác

  • Kiểm soát tốt hơn phạm vi của các biến. Phạm vi nhỏ nhất mà một biến có thể được xác định trong Postman là tập hợp. TestMace cho phép bạn xác định các biến cho bất kỳ truy vấn hoặc thư mục nào. Trong bộ sưu tập Postman Share cho phép bạn chỉ xuất các bộ sưu tập, trong khi tính năng chia sẻ ở TestMace hoạt động cho bất kỳ nút nào
  • Hỗ trợ TestMace tiêu đề kế thừa, theo mặc định có thể được thay thế thành các truy vấn con. Người đưa thư có điều gì đó về điều này: bài tập, và thậm chí nó đã bị đóng cửa, nhưng nó được đưa ra như một giải pháp... sử dụng tập lệnh. Trong TestMace, tất cả điều này được định cấu hình thông qua GUI và có tùy chọn tắt tùy chọn các tiêu đề được kế thừa trong các phần tử con cụ thể
  • Hoàn tác/Làm lại. Hoạt động không chỉ khi chỉnh sửa các nút mà còn khi di chuyển, xóa, đổi tên và các hoạt động khác làm thay đổi cấu trúc của dự án
  • Các tệp đính kèm theo yêu cầu sẽ trở thành một phần của dự án và được lưu trữ cùng với dự án, đồng thời được đồng bộ hóa hoàn hảo, không giống như Postman. (Có, bạn không còn cần phải chọn tệp theo cách thủ công mỗi khi khởi động và chuyển chúng cho đồng nghiệp trong kho lưu trữ)

Các tính năng đang được triển khai

Chúng tôi không thể cưỡng lại sự cám dỗ vén bức màn bí mật lên các bản phát hành tiếp theo, đặc biệt khi chức năng này rất tốt và đang trong quá trình đánh bóng trước khi phát hành. Vậy hãy gặp nhau nhé.

Chức năng

Như bạn đã biết, Postman sử dụng cái gọi là biến động để tạo ra các giá trị. Danh sách của họ thật ấn tượng và phần lớn các chức năng được sử dụng để tạo ra các giá trị giả. Ví dụ: để tạo một email ngẫu nhiên, bạn cần viết:

{{$randomEmail}}

Tuy nhiên, vì đây là các biến (mặc dù là biến động) nên chúng không thể được sử dụng làm hàm: chúng không thể tham số hóa được, do đó sẽ không thể lấy hàm băm từ một chuỗi.

Chúng tôi dự định bổ sung các chức năng “trung thực” vào TestMace. Ngay bên trong ${}, bạn không chỉ có thể truy cập một biến mà còn có thể gọi một hàm. Những thứ kia. nếu bạn cần tạo email giả mạo khét tiếng, chúng tôi sẽ chỉ cần viết

${faker.internet.email()}

Ngoài việc nó là một hàm, bạn sẽ nhận thấy rằng có thể gọi một phương thức trên một đối tượng. Và thay vì một danh sách phẳng lớn gồm các biến động, chúng ta có một tập hợp các đối tượng được nhóm một cách hợp lý.

Nếu chúng ta muốn tính hàm băm của một chuỗi thì sao? Một cách dễ dàng!

${crypto.MD5($dynamicVar.data)}

Bạn sẽ nhận thấy rằng bạn thậm chí có thể chuyển các biến dưới dạng tham số! Tại thời điểm này, một người đọc tò mò có thể nghi ngờ có điều gì đó không ổn...

Sử dụng JavaScript trong biểu thức

... Và vì lý do chính đáng! Khi các yêu cầu về hàm đang được hình thành, chúng tôi đột nhiên đi đến kết luận rằng javascript hợp lệ nên được viết dưới dạng biểu thức. Vì vậy, bây giờ bạn có thể tự do viết các biểu thức như:

${1 + '' + crypto.MD5('asdf')}

Và tất cả điều này không có tập lệnh, ngay trong trường nhập liệu!

Còn với Postman, ở đây bạn chỉ có thể sử dụng các biến và khi bạn cố gắng viết biểu thức nhỏ nhất, người xác nhận sẽ chửi rủa và từ chối tính toán.

Tại sao TestMace lại tốt hơn Postman

Tự động hoàn thành nâng cao

Hiện tại TestMace có tính năng tự động hoàn thành tiêu chuẩn trông như thế này:

Tại sao TestMace lại tốt hơn Postman

Ở đây, ngoài dòng tự động hoàn thành, nó còn cho biết dòng này thuộc về dòng nào. Cơ chế này chỉ hoạt động trong các biểu thức được bao quanh bởi dấu ngoặc ${}.

Như bạn có thể thấy, các điểm đánh dấu trực quan đã được thêm vào để cho biết loại biến (ví dụ: chuỗi, số, mảng, v.v.). Bạn cũng có thể thay đổi chế độ tự động hoàn thành (ví dụ: bạn có thể chọn tự động hoàn thành bằng các biến hoặc tiêu đề). Nhưng ngay cả điều này cũng không phải là điều quan trọng nhất!

Đầu tiên, tính năng tự động hoàn thành hoạt động ngay cả trong các biểu thức (nếu có thể). Đây là những gì nó trông giống như:

Tại sao TestMace lại tốt hơn Postman

Và thứ hai, tính năng tự động hoàn thành hiện có sẵn trong tập lệnh. Hãy xem nó hoạt động như thế nào!

Tại sao TestMace lại tốt hơn Postman

Không có ích gì khi so sánh chức năng này với Postman - tính năng tự động hoàn thành chỉ giới hạn ở danh sách tĩnh các biến, tiêu đề và giá trị của chúng (hãy sửa cho tôi nếu tôi quên điều gì đó). Tập lệnh không được tự động hoàn thành :)

Kết luận

Tháng XNUMX đánh dấu một năm kể từ khi chúng tôi bắt đầu phát triển sản phẩm. Trong thời gian này, chúng tôi đã làm được rất nhiều việc và ở một khía cạnh nào đó, chúng tôi đã bắt kịp các đối thủ cạnh tranh. Tuy nhiên, mục tiêu của chúng tôi là tạo ra một công cụ thực sự thuận tiện để làm việc với API. Chúng tôi vẫn còn rất nhiều việc phải làm, đây là kế hoạch sơ bộ để phát triển dự án của chúng tôi trong năm tới: https://testmace.com/roadmap.

Phản hồi của bạn sẽ cho phép chúng tôi điều hướng tốt hơn các tính năng phong phú và sự hỗ trợ của bạn mang lại cho chúng tôi sức mạnh và sự tự tin rằng chúng tôi đang làm điều đúng đắn. Tình cờ hôm nay là một ngày quan trọng đối với dự án của chúng tôi - ngày TestMace được xuất bản vào ProductHunt. Hãy ủng hộ dự án của chúng tôi, nó rất quan trọng đối với chúng tôi. Hơn nữa, hôm nay có một ưu đãi hấp dẫn trên trang PH của chúng tôi và số lượng có hạn

Nguồn: www.habr.com

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