Rest Assured là 1 trong những giữa những thư viện được dùng những tốt nhất vào API Automation testing. Trong tutorial này mình đang hướng dẫn các bạn về các định nghĩa như thể 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 lập trình áp dụng, nó là một tập hợp những functions nhưng hoàn toàn có thể được truy vấn bởi những vận dụng khác. Do kia, nó nlỗi là một trong giao diện thân các khối hệ thống ứng dụng khác biệt và cấu hình thiết lập sự xúc tiến cùng thương lượ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 tiến bộ, rất nhiều những áp dụng / hệ thống được thiết kế với dựa trên mô hình 3 lớp (3-tier architecture model).
Ba lớp kia là:
Presentation Tier – Tầng can dự thẳng với người dùng, dùng để hiển thị các nhân tố bối cảnh để liên hệ với người dùng nhỏng tiếp nhận biết tin, thông báo lỗiLogic Tier – Tầng xúc tích và ngắn gọn, tầng này cũng rất có thể được Điện thoại tư vấn là business tier, trách nhiệm của tầng này là phụ trách cùng up date những business của hệ thống. Tầng này cũng làm nhiệm vụ di chuyển, cập nhật ban bố giữa 2 tầng Presentation với Data TierData Tier - nơi tàng trữ cùng trích xuất dữ liệu tự những hệ quản trị CSDL tuyệt những tệp tin vào hệ thống. Cho phnghiền tầng Business ngắn gọn xúc tích thực hiện các truy vấn vấn dữ liệu.3 layers nói trên sẽ tiếp xúc với nhau trải qua những hình thức dịch vụ (services) cơ mà từng layer cung ứng để tạo nên vận dụng, lớp này cũng ko cần phải biết bên trong lớp tê làm gì mà lại chỉ cần biết lớp cơ cung ứng dịch vụ gì cho mình với áp dụng nó mà lại thôi.
Lớp Logic bao hàm tất cả những bussiness ngắn gọn xúc tích của hệ thống, nó phức hợp rộng tất cả những lớp còn sót lại, cho nên vì thế vấn đề triển khai kiểm demo bên trên lớp này là khôn xiết cần thiết. Việc kiểm demo bên trên lớp bussiness xúc tích và ngắn gọn này được hotline là API Testing.
Đối cùng với UI Testing, bọn họ demo dựa vào những hành vi của người dùng nhỏng nhập dữ liệu qua bàn phím, triển khai cliông chồng một button nào kia bên trên screen,… thì đối với API Testing, chúng ta tiến hành gửi các request với check coi output tự API trả về đến bọn họ xem hệ thống trả về bao gồm đúng thật họ mong ước hay là không. Dữ liệu mà lại API trả về đến bạn có thể là JSON với RESTful API Hay là XML cùng với SOAPhường.
Để hiểu thêm về REST với SOAP thì những bạn có thể tham khảo bài xích viếtChọn web service xuất sắc nhất
REST Assured là gì
Rest-assured (RestA) là một trong tlỗi viện Java DSL được thiết kế bên trên nền HTTP. Builder (thỏng viện tạo thành HTTPhường request), được cho phép tiến hành gửi request và kiểm tra response. Nói dễ dàng là 1 trong tlỗi viện được kiến thiết sẵn nhằm câu hỏi tiến hành kiểm demo API trsống cần dễ dãi rộng. Thực tế, có không ít thỏng viện nhưng mà bạn cũng có thể cần sử dụng, cơ mà kinh nghiệm tay nghề cho thấy, Rest Assured dễ dàng cần sử dụng rộng hết, nhiều công dụng hơn, với đặc biệt là nó tất cả một cộng đồng cung ứng không hề nhỏ.
REST API testing với REST Assured
Lý ttiết các rồi, họ vẫn tiến hành tiến hành api testing qua ví dụ thực tiễn sau :D
Dự án A được phụ trách phát hành một khối hệ thống search tìm video clip đến quý khách hàng JPhường, ko kể việc tạo 1 trang web search kiếm thì khách hàng còn mong ước public API của hệ thống ra bên ngoài. Vậy là tester trong dự án lại đề nghị đảm nhiệm vai trò test các api endpoint cơ mà khối hệ thống đang public.
Đề bài xích đặt ra mang lại tester như sau:
Test case 1: Search đoạn phim với từ khóa mang đến trước, giới hạn số video trả về là 4 videos.Từ khoá: API TestingParameter:tukhoa: Từ khoá của Clip mong muốn searchsoluongvideo: Số lượng đoạn phim mong ước trả về, trong demo case mong muốn là 4URL Endpoint: http://api.5min.com/search/tukhoa/videos.json?num_of_videos=soluongvideoKết quả muốn muốn: Trả về tác dụng dưới dạng JSON, trong số đó bao gồm links dẫn đến các videos, title cùng thể hiện của những video clip đóĐiều kiện nhằm thử nghiệm case pass:Trong kết quả trả về đề nghị bao gồm HTTP Status CodeKết quả trả về nên cất từ khóa tìm kiếm kiếmChỉ có về tối đa 4 videos được trả vềCác video trả về không trùng lặp nhauTest case 2: Search video clip với id của đoạn Clip, cơ mà lần này vẫn trả về biết tin chi tiết của Clip kia với những đoạn Clip liên quan mang đến đoạn phim đó (kiểu nhỏng suggestion video sống youtube vậy), cũng số lượng giới hạn số lượng các video liên quan trả về là 4Parameter: video_id : Từ khoá của video ước muốn searchsoluongvideo: Số lượng đoạn Clip mong ước trả về, vào demo 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 ao ước muốn: Trả về hiệu quả bên dưới dạng JSON, trong những số ấy có ban bố cụ thể về video đó với các Clip liên quanĐiều kiện nhằm kiểm tra case pass:Trong tác dụng trả về yêu cầu có HTTPhường Status CodeKết quả trả về đề xuất liên quan cho tới đoạn Clip được tìm kiếm kiếmChỉ bao gồm tối nhiều 4 videos được trả vềCác đoạn Clip liên quan được trả về ko giống nhau nhauVậy, giải pháp của anh ý tester là gì? Hãy thuộc mình sang phần tiếp theo nhé
REST API testing với REST Assured – (cont.)
Để xử lý bài xích toán chỉ dẫn ở bên trên, tester đề nghị xây đắp 1 framework và tích hòa hợp Rest Assured làm cho tlỗi viện nhằm testing API. Framework tester thành lập cũng cần đáp ứng nhu cầu tiêu chuẩn Re-usability nhằm có thể thử nghiệm cho những api endpoint không giống nhưng mà không phải mất công viết lại code.
Bây tiếng bọn họ bắt đầu !!
1. Xây dựng Project structure.
Trước tiên, họ sẽ tạo nên 1 Maven project, với cài đặt các thỏng mục nlỗi bên dưới:
Utils thư mục đã chứa 2 class là HelperMethods với RestUtilHelperMethods: Class này đang bao gồm những helpers hoàn toàn có thể reusalbeRestUtil: class này đang bao hàm những methods liên quan mang lại thỏng viện Rest AssuredTrong tlỗi mục ApiTests sẽ có được 2 class là Example1Test và Example2Test, đây là 2 classes cất các kiểm tra cases cùng các assertionsTrong thỏng mục TestSuite sẽ sở hữu class AllApiTest, đấy là class Test Runner của chúng ta, class này đã đảm nhiệm câu hỏi run toàn bộ những test cases
2. Cài đặt những dependencies
Chúng ta đã add cái dependencies sau vào pom.xml.Junit Library: Cái này là kiểm tra frameworkHamcrest library: tlỗi viện giành cho các method assertionJayway Rest Assured: Đây là Rest assured, thỏng viện mà chúng ta nói tới nãy giờ trong bài viết :DCấu trúc tệp tin pom.xml của bọn họ vẫn như 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.apađậy.maven.plugins maven-surefire-plugin 2.19.1 **/AllApiTest.class 3. Sau lúc add kết thúc những dependencies thì chúng ta sẽ bắt tay vào code
RestUtil.javaĐây là class góp họ viết các common methods sẽ giúp đỡ bọn họ luôn tiện sử dụng 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 demo, we should phối the RestAssured.baseURI */ public static void setBaseURI (String baseURI) RestAssured.baseURI = baseURI; /* ***Sets base path*** Before starting the test, we should mix the RestAssured.basePath */ public static void setBasePath(String basePathTerm) RestAssured.basePath = basePathTerm; /* ***Rephối Base URI (after test)*** After the chạy thử, we should reset the RestAssured.baseURI */ public static void resetBaseURI () RestAssured.baseURI = null; /* ***Reset base path (after test)*** After the chạy thử, we should reset the RestAssured.basePath */ public static void resetBasePath() RestAssured.basePath = null; /* ***Sets ContentType*** We should mix content type as JSON or XML before starting the demo */ public static void setContentType (ContentType Type) given().contentType(Type); /* ***search query path of first example*** It is equal to "baraông chồng 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 lớn 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 lớn String type with "asString()" method. * Then, sover this String formatted json response khổng lồ the JsonPath class và 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ể áp dụng lại trong 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 Cheông chồng 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 lớn get all id"s under related tag, We can use JsonPath"s get method like "jp.get("items.related.id");" It will give 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 sầu to lớn convert above result in this format: <519148754, 519115214, 519235328, 519235341> In order khổng lồ split first element of "relatedVideosList" & assign it to 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 clip id is duplicated: " + videoIdList.get(i)); return false; return true; Example1Test.java - Example2Test.javaĐây là 2 class quan trọng độc nhất, classes này cất những assertions để kiểm test những kết quả trả về từ 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;