Rest assured là gì

 - 

Rest Assured là 1 trong trong số những tlỗi viện được sử dụng những tốt nhất trong API Automation testing. Trong tutorial này mình sẽ lý giải chúng ta về các khái niệm như là Rest API, API Testing, API Automation Testing,...

Bạn đang xem: Rest assured là gì

API là gì?

API là viết tắt của (Application Programming Interface) – Giao diện thiết kế áp dụng, nó là một tập đúng theo những functions cơ mà rất có thể được truy cập vày các vận dụng khác. Do kia, nó như là một trong những bối cảnh giữa những khối hệ thống ứng dụng khác nhau và tùy chỉnh thiết lập sự hệ trọng cùng hiệp thương tài liệu của bọn chúng.

*

API Testing là gì?

Trong nền công nghiệp phát triển phần mềm tân tiến, không ít những ứng dụng / khối hệ thống có thiết kế dựa vào mô hình 3 lớp (3-tier architecture model).

Ba lớp kia là:

Presentation Tier – Tầng hệ trọng trực tiếp cùng với người dùng, dùng để làm hiển thị các yếu tố hình ảnh để liên quan cùng với người dùng như chào đón ban bố, thông tin lỗiLogic Tier – Tầng xúc tích và ngắn gọn, tầng này cũng hoàn toàn có thể được gọi là business tier, trách nhiệm của tầng này là đảm nhận với xử lí các business của hệ thống. Tầng này cũng làm cho trọng trách dịch chuyển, up date báo cáo thân 2 tầng Presentation và Data TierData Tier - vị trí tàng trữ cùng trích xuất tài liệu từ các hệ quản trị DataBase tốt những file vào khối hệ thống. Cho phxay tầng Business lô ghích triển khai các truy nã vấn dữ liệu.

3 layers nói bên trên đã giao tiếp với nhau trải qua những hình thức (services) nhưng mà mỗi layer cung cấp để tạo cho ứng dụng, lớp này cũng ko cần phải biết bên phía trong lớp cơ làm những gì cơ mà chỉ cần biết lớp cơ hỗ trợ các dịch vụ gì cho mình và thực hiện nó mà thôi.

Lớp Logic bao hàm toàn bộ các bussiness logic của hệ thống, nó tinh vi hơn tất cả những lớp sót lại, vì thế Việc triển khai kiểm thử trên lớp này là siêu cần thiết. Việc kiểm test trên lớp bussiness lô ghích này được hotline là API Testing.

Xem thêm: Sự Tắc Nghẽn ( Congestion Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích

Đối với UI Testing, chúng ta demo dựa vào những hành động của người dùng nhỏng nhập tài liệu qua bàn phím, thực hiện click một button nào đó trên screen,… thì đối với API Testing, chúng ta thực hiện gửi những request cùng kiểm tra coi output từ bỏ API trả về mang đến họ xem khối hệ thống trả về tất cả quả thật bọn họ ước muốn hay không. Dữ liệu nhưng mà API trả về mang đến bạn cũng có thể là JSON với RESTful API hoặc là XML cùng với SOAP.

Để đọc thêm về REST với SOAP.. thì các bạn cũng có thể xem thêm bài viếtChọn website service xuất sắc nhất

REST Assured là gì

Rest-assured (RestA) là 1 trong thỏng viện Java DSL được xây cất bên trên nền HTTP Builder (thỏng viện tạo thành HTTP request), cho phép thực hiện gửi request cùng đánh giá response. Nói dễ dàng là 1 trong thư viện được gây ra sẵn nhằm vấn đề triển khai kiểm test API trsinh sống yêu cầu thuận lợi rộng. Thực tế, có khá nhiều thư viện cơ mà bạn có thể sử dụng, mà lại kinh nghiệm cho biết thêm, Rest Assured dễ dàng cần sử dụng rộng hết, nhiều tác dụng rộng, với nhất là nó gồm một xã hội hỗ trợ không nhỏ.

REST API testing cùng với REST Assured

Lý thuyết những rồi, họ đã triển khai triển khai api testing qua ví dụ thực tế sau :D

Dự án A được đảm nhận tạo ra một khối hệ thống tìm kiếm đoạn Clip mang đến quý khách JP, không tính câu hỏi tạo 1 website tìm kiếm tìm thì quý khách hàng còn ước muốn public API của khối hệ thống ra ngoài. Vậy là tester vào dự án công trình lại đề xuất đảm nhiệm sứ mệnh kiểm tra những api endpoint cơ mà khối hệ thống đã public.

Đề bài bác đề ra mang lại tester như sau:

Test case 1: Search Clip cùng với keyword cho trước, số lượng giới hạn số video trả về là 4 videos.Từ khoá: API TestingParameter:tukhoa: Từ khoá của đoạn Clip mong muốn searchsoluongvideo: Số lượng video clip mong muốn trả về, trong thử nghiệm case mong muốn là 4URL Endpoint: http://api.5min.com/search/tukhoa/videos.json?num_of_videos=soluongvideoKết trái mong muốn: Trả về hiệu quả bên dưới dạng JSON, trong số ấy gồm liên kết dẫn mang lại các videos, title và biểu đạt của những đoạn Clip đóĐiều kiện để demo case pass:Trong công dụng trả về đề nghị gồm HTTP Status CodeKết trái trả về cần đựng từ khóa tìm kiếm kiếmChỉ tất cả tối nhiều 4 videos được trả vềCác Clip trả về không giống nhau nhauTest case 2: Search Clip cùng với id của đoạn phim, tuy vậy lần này đã trả về công bố chi tiết của video clip đó và những video clip liên quan cho đoạn Clip đó (mẫu mã nhỏng suggestion video clip nghỉ ngơi youtube vậy), cũng giới hạn số lượng những đoạn Clip liên quan trả về là 4Parameter: video_id : Từ khoá của đoạn Clip mong muốn searchsoluongvideo: Số lượng đoạn Clip ước muốn trả về, vào chạy thử case mong ước là 4URL Endpoint: http://api.5min.com/video/list/info.json?video_ids=video_id&num_related_return=soluongvideoKết trái mong muốn: Trả về công dụng dưới dạng JSON, trong đó tất cả công bố cụ thể về video kia cùng những video clip liên quanĐiều khiếu nại để demo case pass:Trong kết quả trả về bắt buộc bao gồm HTTPhường Status CodeKết trái trả về cần liên quan tới video được tìm kiếm kiếmChỉ bao gồm về tối nhiều 4 videos được trả vềCác Clip liên quan được trả về không giống nhau nhau

Vậy, phương án của anh tester là gì? Hãy cùng bản thân quý phái phần tiếp theo nhé

REST API testing với REST Assured – (cont.)

Để giải quyết bài bác toán thù chỉ dẫn ngơi nghỉ bên trên, tester đề nghị desgin 1 framework với tích phù hợp Rest Assured có tác dụng thỏng viện để testing API. Framework tester phát hành cũng bắt buộc thỏa mãn nhu cầu tiêu chí Re-usability nhằm hoàn toàn có thể kiểm tra cho các api endpoint không giống mà lại chưa hẳn mất công viết lại code.

Xem thêm: Issuance Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích Issuance Là Gì

Bây giờ chúng ta bắt đầu !!

1. Xây dựng Project structure.

trước hết, họ sẽ khởi tạo 1 Maven project, và setup những tlỗi mục nlỗi bên dưới:

Utils thư mục đã đựng 2 class là HelperMethods và RestUtilHelperMethods: Class này vẫn bao gồm những helpers hoàn toàn có thể reusalbeRestUtil: class này sẽ bao gồm các methods tương quan cho thư viện Rest AssuredTrong thỏng mục ApiTests sẽ sở hữu 2 class là Example1Test và Example2Test, đó là 2 classes chứa các demo cases cùng các assertionsTrong tlỗi mục TestSuite sẽ sở hữu class AllApiTest, đây là class Test Runner của chúng ta, class này đã đảm nhận Việc run tất cả những kiểm tra cases

*

2. Cài đặt những dependencies

Chúng ta sẽ add chiếc dependencies sau vào pom.xml.Junit Library: Cái này là chạy thử frameworkHamcrest library: tlỗi viện dành riêng cho các method assertionJayway Rest Assured: Đây là Rest assured, thư viện mà lại họ nhắc đến nãy giờ vào bài viết :DCấu trúc tệp tin pom.xml của bọn họ đã nlỗi mặt dưới:

4.0.0 com.5min.apikiểm tra 5min-apitest 1.0-SNAPSHOT org.hamcrest hamcrest-all 1.3 org.hamcrest hamcrest-junit 2.0.0.0 junit junit 4.12 com.jayway.restassured json-schema-validator 2.8.0 com.jayway.restassured rest-assured 2.8.0 AllApiTests true org.apabịt.maven.plugins maven-surefire-plugin 2.19.1 **/AllApiTest.class 3. Sau Khi add chấm dứt các dependencies thì bọn họ vẫn bắt tay vào code

RestUtil.java

Đây là class giúp chúng ta viết những common methods sẽ giúp đỡ họ luôn tiện thực hiện sau này

package Utils;import com.jayway.restassured.RestAssured;import com.jayway.restassured.http.ContentType;import com.jayway.restassured.path.json.JsonPath;import com.jayway.restassured.response.Response;import static com.jayway.restassured.RestAssured.*;public class RestUtil //Global Setup Variables public static String path; //Rest request path /* ***Sets Base URI*** Before starting the thử nghiệm, we should set the RestAssured.baseURI */ public static void setBaseURI (String baseURI) RestAssured.baseURI = baseURI; /* ***Sets base path*** Before starting the thử nghiệm, we should phối the RestAssured.basePath */ public static void setBasePath(String basePathTerm) RestAssured.basePath = basePathTerm; /* ***Reset Base URI (after test)*** After the chạy thử, we should remix the RestAssured.baseURI */ public static void resetBaseURI () RestAssured.baseURI = null; /* ***Remix base path (after test)*** After the test, we should remix the RestAssured.basePath */ public static void resetBasePath() RestAssured.basePath = null; /* ***Sets ContentType*** We should mix content type as JSON or XML before starting the test */ public static void setContentType (ContentType Type) given().contentType(Type); /* ***search query path of first example*** It is equal to lớn "baraông xã obama/videos.json?num_of_videos=4" */ public static void createSearchQueryPath(String searchTerm, String jsonPathTerm, String param, String paramValue) path = searchTerm + "/" + jsonPathTerm + "?" + param + "=" + paramValue; /* ***Returns response*** We send "path" as a parameter khổng lồ the Rest Assured"a "get" method và "get" method returns response of API */ public static Response getResponse() //System.out.print("path: " + path +" "); return get(path); /* ***Returns JsonPath object*** * First convert the API"s response to String type with "asString()" method. * Then, skết thúc this String formatted json response to lớn the JsonPath class & return the JsonPath */ public static JsonPath getJsonPath (Response res) String json = res.asString(); //System.out.print("returned json: " + json +" "); return new JsonPath(json); HelperMethods.javaĐây cũng là một trong những class cất những comtháng functions để bạn cũng có thể thực hiện lại vào 2 classes Example1Test và Example2Test

package Utils;import com.jayway.restassured.path.json.JsonPath;import com.jayway.restassured.response.Response;import java.util.*;import static org.junit.Assert.assertEquals;public class HelperMethods { /* Verify the http response status returned. Check Status Code is 200? We can use Rest Assured library"s response"s getStatusCode method */ public static void checkStatusIs200 (Response res) assertEquals("Status Check Failed!", 200, res.getStatusCode()); /* Get Video Ids (For example 1) We can use get method of Rest Assured library"s JsonPath Class"s get method Part of a response is shown below: "items": < "id": 519377522, .... We can get all id"s with this code --> "jp.get("items.id");" this will return all id"s under "items" tag. */ public static ArrayList getVideoIdList (JsonPath jp) ArrayList videoIdList = jp.get("items.id"); return videoIdList; /* Get Related Video Ids (For example 2) Structure of response is shown below: items: "related": < "id": 519148754, .... In order to get all id"s under related tag, We can use JsonPath"s get method lượt thích "jp.get("items.related.id");" It will give sầu us all id"s under related tag. */ public static ArrayList getRelatedVideoIdList (JsonPath jp) //jp.get method returns all ids ArrayList relatedVideoList = jp.get("items.related.id"); /* Result of relatedVideosList: <<519148754, 519115214, 519235328, 519235341>> I have to lớn convert above result in this format: <519148754, 519115214, 519235328, 519235341> In order khổng lồ split first element of "relatedVideosList" và assign it lớn a new ArrayList (as splittedRelatedVideoList) I did below operation. */ ArrayList splittedRelatedVideoList = (ArrayList) relatedVideoList.get(0); return splittedRelatedVideoList; //Merge videoIdList and relatedVideoIdList as mergedVideoList public static ArrayList mergeLists (ArrayList videoList, ArrayList relatedVideoList) ArrayList mergedVideoList = new ArrayList(videoList); mergedVideoList.addAll(relatedVideoList); return mergedVideoList; //Find Duplicate Videos public static boolean findDuplicateVideos (List videoIdList) for (int i=0; i 1) System.out.println("This video id is duplicated: " + videoIdList.get(i)); return false; return true; ​Example1Test.java - Example2Test.javaĐây là 2 class đặc biệt độc nhất vô nhị, classes này chứa những assertions để kiểm demo những kết quả trả về từ bỏ api

Example1Test.java

package ApiTests; import Utils.*;import com.jayway.restassured.http.ContentType;import com.jayway.restassured.path.json.JsonPath;import com.jayway.restassured.response.Response;import org.junit.*;import org.junit.runners.MethodSorters;import static org.junit.Assert.assertTrue;