Test script thường sử dụng trong test postman

QA/QC Oct 06, 2021
  1. Test api như thế nào?

Mục đích nói lại bài này: Sau các bài seminar về postman thì mọi người đã nắm được cơ bản về các chức năng của postman để hỗ trợ việc test api. Tuy nhiên, nhận thấy thì vẫn còn rất nhiều người chưa nắm được phải bắt đầu làm gì, làm như thế nào khi nhận được 1 spec API và yêu cầu test. Vậy bài hôm nay sẽ giúp mọi người định hình được 1 quy trình test api.

Ví dụ: Ta nhận được yêu cầu test api Create plan gồm các trường :

  • Title: require, max 255 ký tự
  • Start date: Format yyyy-mm-dd
  • End date: Format yyyy-mm-dd và phải lớn hơn start date

Khi đó server và client xử lý như sau:

  1. Người dùng vào MH tạo plan và nhập các trường và ấn nút tạo
  2. Sau khi người dùng ấn nút tạo, các thông tin hợp lệ thì sẽ gọi api gửi request tới server
  3. Server đọc request và kiểm tra lại các trường
  4. Nếu các trường hợp lệ thì cập nhật vào DB
  5. Server trả lại thông tin, gọi là response, về lại cho client thông báo rằng nó đã cập nhật thành công.
  6. Trả về thông báo tạo mới thành công trên màn hình

Khi thực hiện check 1 api đơn lẻ ta sẽ check 2 phần chính:

  • Validate dữ liệu ở bước 3 (Syntax Testing)
  • Kiểm tra function ở bước 4 và bước 5 (Functional Testing)

Nói tóm lại, chúng ta sẽ kiểm tra chỉ có thể tạo thành công nếu truyền request đầy đủ và hợp lệ, check response trả về đối với các trường hợp thành công và không thành công, kiểm tra update thành công vào DB khi truyền lên request đúng.

  • Syntax Testing

Loại này giống như những TH check validation mà chúng ta vẫn hay làm hàng ngày, check tạo thành công với data đúng và tạo không thành công với data sai

  • Ví dụ :
  • Để trống trường bắt buộc -> response trả về thông báo lỗi, không update thông tin vào DB
  • Điền sai định dạng -> response trả về thông báo lỗi, không update thông tin vào DB
  • Nhập đúng các data -> Response trả về thông báo thành công, update thông tin vào DB
  • Functional Testing

Loại này check xử lý dữ liệu và thực hiện chức năng có đúng hay không

  • Ví dụ:
  • Có update đúng thông tin và update vào đúng trường trong DB hay không
  • Test scenarios

Ngoài việc check Syntax Testing và Functional Testing, khi test nhiều api ta cần phải test khi ghép các api lại với nhau xem nó có lỗi ở đâu không

Ví dụ:


=> Vậy khi nhận được 1 spec Api, tester cần phải làm gì?

  • Đọc API documentation để nắm được spec
  • Viết testcase api theo 3 mục Syntax Testing, Functional Testing, Test scenarios đã nói ở trên
  • Chuyển thể các testcase thành test script cho từng tool (postman, rest-assured,...)

2. Các câu test script thường sử dụng để test response trong Postman

  • Ý nghĩa của việc dùng test script để test response:  Giúp người test đẩy nhanh được tốc độ test API, thông thường khi test api ta sẽ phải run từng request và check giá trị của từng field trong response trả về. Việc sử dụng test script sẽ giúp chúng ta check tự động kết quả trả về của từng field với 1, 2 dòng code, rất dễ, không cần biết code cũng làm được
  • Để viết 1 test script, mở request mà bạn muốn test, mở tab Tests
  • 1 số câu test script thường sử dụng trong postman như sau:
  • Check status code bằng 200

pm.test("Status code is 200", function () {

pm.response.to.have.status(200);

});

  • Ví dụ: API tạo articles:
  • Url: http://172.16.1.85:8080/api/articles?
  • Method: POST
  • Params: cần truyền lên user_email, key, title, body

Ta sẽ thực hiện test response với case “tạo mới thành công khi nhập đúng tất cả các trường thì sẽ trả về status code là 200

Truyền vào Params:

user_email: tuannda@miichisoft.com

key: $2y$10$eOCKQU9Ax6JAgMheCwOSqeMrWUD1z8NQUBDYGVDMkb5HeS7EKYgiu

title: Seminar

body: Writing testscript in Postman

Truyền vào tab Tests

Ấn send và đọc kết quả test ở phần Test Results

Kết quả là Pass nghĩa là status code khi truyền vào params như trên đúng bằng 200 => Case này Pass

Thử sửa phần status code mong muốn trả về ở phần Test thành 1 số khác, ví dụ 401 thì nó sẽ báo Test result là fail


  • Check status name = “OK”

pm.test("Status code name is valid", function () {

pm.response.to.have.status("OK");

});

  • Check time phản hồi response

pm.test("Response time is less than 200ms", function () {

pm.expect(pm.response.responseTime).to.be.below(200);

});

  • Check 1 giá trị trong response

pm.test("Your test name", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.value).to.eql(100);

});

Test result

  • Check nhiều giá trị cùng lúc:

pm.test("Your test name", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.value1).to.eql(‘giá trị 1’);

pm.expect(jsonData.value2).to.eql(;giá trị 2’)

});

  • Check schema:

var schema = {phần này sẽ điền shema của Body sau khi convert}

var jsonResponse = pm.response.json();

pm.test('Schema is valid', function() {

pm.expect(tv4.validate(jsonResponse, schema)).to.be.true;

});

Paste phần response trả về vào đây để convert schema:

https://www.liquid-technologies.com/online-json-to-schema-converter

  • Log giá trị của 1 biến hoặc 1 phần trong response ở console:

Log giá trị của 1 biến và check kết quả trong console

console.log(pm.environment.get('name’));

  • Log giá trị của 1 field trong response:

console.log(pm.response.json().name);

  • Kiểm tra so sánh response với 1 biến:

Ví dụ, với biến environment

Cách nhận giá trị của 1 biến environment: pm.environment.get(‘Tên biến’);

pm.test("Response property matches environment variable", function () {

pm.expect(pm.response.json().name).to.eql(pm.environment.get("name"));

});


tests["response code is 200"] = responseCode.code === 200;

tests["body contains authenticated"] = responseBody.has("authenticated");

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.