rest api testing with spring resttemplate
Bu Kapsamlı Eğitici, Basit Örneklerle Spring RestTemplate ve TestNG ile REST API Testine Nasıl Başlanacağını Açıklar:
Bu makalede, RestTemplate ve TestNG çerçevesi ile REST API Testine nasıl başlayacağımızı göreceğiz.
RestTemplate ve TestNG çerçevesiyle REST API Testini keşfetmeden önce, bununla ilgili bazı temel kavramları anlayalım.
Hadi başlayalım!!
Ne öğreneceksin:
- DİNLENME nedir?
- JSON nedir?
- REST API Testi Nedir?
- TestNG Nedir?
- Bahar DİNLENME Şablonu Nedir?
- REST API Test Adımları
- Windows'ta TestNG Test Çerçevesini Kurma
- TestCRUD Dosya Kodunu Tamamlayın
- Sonuç
- Önerilen Kaynaklar
DİNLENME nedir?
Günümüzde REST, Web Hizmetleri oluşturmada oldukça popüler bir seçenek haline geldi. Örneğin Google, Takvim gibi birden çok REST hizmetine sahiptir. Harita API'si , vb.
DİNLENME yani Temsili Devlet Transferi bir yazılım mimari tarzıdır. Bu tarzda, bir dizi kısıtlama tanımlanır ve bu kısıtlamaları karşılamak için web servislerinin oluşturulması gerekir. REST mimari tarzına uyan bu tür web hizmetleri, RESTful Web Hizmetleri olarak bilinir.
'Temsili devlet transferi' terimi ilk olarak Roy Fielding Doktora derecesinde 2000 yılında doktora tezi. REST'in temel fikri, sunucu tarafındaki nesneleri, oluşturulabilen veya silinebilen kaynaklar olarak ele almaktır.
JSON nedir?
JSON yani JavaScript Nesnesi Gösterimi tarayıcı ve sunucu arasında veri depolamak ve değiştirmek için REST hizmetlerinde çok yaygın olarak kullanılan bir sözdizimidir.
JSON'un temel avantajı hafif olması ve ikinci olarak okunabilir formatıdır. Veriler, anahtar: değer çifti biçiminde saklanır. Örneğin, çalışan verilerinin JSON formatında şu şekilde depolanmasını sağlayabilirsiniz: {“ad”: ”Emp1 ″,” maaş ”:” 3000 ″, ”yaş”: ”23 ″,” id ”:” 52686 ″}.
REST API Testi Nedir?
REST API testi dediğimizde, temelde sırasıyla POST, GET, PUT ve DELETE gibi 4 ana yöntemle Kaynak üzerinde Oluşturma, Düzenleme, Okuma ve Silme eylemlerini gerçekleştirerek API'yi test etmektir.
TestNG Nedir?
TestNG, JUnit ve NUnit'ten esinlenen bir test çerçevesidir. Java programlama dili içindir. TestNG, birim, işlevsel, uçtan uca, entegrasyon vb. Gibi daha geniş bir test kategorisi yelpazesini kapsar.
Apache Lisansı kapsamında gelen açık kaynaklı bir çerçevedir. Test komut dosyası geliştirmeyi hızlandıran zengin bir açıklama kümesi sağlar.
Bahar DİNLENME Şablonu Nedir?
Spring RestTemplate sınıfı, Spring 3'te tanıtılan yaylı ağın bir parçasıdır.
RestTemplate sınıfı, GET, POST, PUT, DELETE, vb. Gibi HTTP yöntemleri için aşırı yüklenmiş yöntemler sağlayarak HTTP tabanlı dinlendirici web hizmetlerini test etmek için çok uygun bir yol sağlar. Spring çerçevesi de açık kaynaklıdır.
REST API Test Adımları
Net bir anlayış elde etmek için genellikle REST API Testinde izlenen adımları bazı örneklerle anlayalım.
Bu makalede, bir örnek REST API çalışan hizmetini bu kaynak.
Başlangıçta POSTMAN aracını kullanarak adımları manuel olarak takip edelim.
# 1) Öncelikle, erişmek istediğiniz API'nin uç noktasını bilin.
Örneğin, Yeni bir çalışan kaynağı oluşturmak için http://dummy.restapiexample.com/api/v1/create
#iki) HTTP yöntemi için gerekirse Başlıklar ve Gövde'yi ayarlayın.
Örneğimizde, POST kullanarak yeni bir kaynak oluşturmaya çalışıyoruz. POST için bir istek gövdesi gereklidir.
Bu yüzden bedeni şu şekilde ayarlayacağız:
“Ad”: ”zozo100 ″,” maaş ”:” 123 ″, ”yaş”: ”23 ″
Kabul etmek : uygulama / JSON ve İçerik türü : uygulama / JSON.
derleyicili c ++ ide
# 3) Bu durumda uygun HTTP yöntemini, yani POST'u ayarlayın.
# 4) Rest servis sunucusuna bir istek gönderin.
# 5) Sunucudan bir yanıt alın.
POSTMAN Aracını Kullanarak REST API Çağrısı
# 6) Yanıt Kodunun yardımıyla beklendiği gibi Yanıtı doğrulayın Örneğin. Başarı olarak 200 OK.
# 7) Gerekirse, karşılaştırma dosyanızla karşılaştırarak Yanıt Kuruluşunu gerektiği gibi doğrulayın.
Şimdi, Test Otomasyon paketimiz için aynı adımları otomatikleştirmemiz gerekiyor. Otomasyon için gerekli kurulumla başlayalım.
Windows'ta TestNG Test Çerçevesini Kurma
# 1) Kurulum
- Test komut dosyası geliştirmek için Java kullanacağız. Öyleyse, İlk İndirme Windows için JDK yükleyici ve makinenize Java yükleyin.
- IDE (Entegre Geliştirme Ortamı) : Eclipse'i Automation Test Suite geliştirmem için IDE olarak kullandım. Tıklayın İşte indirmek için.
- TestNG için Eclipse Eklentisini Edinin: Eclipse eklentisine yönelik TestNG'yi çalıştırmak için Java 1.7+ gerektiğini unutmayın. Eclipse 4.2 ve üstü gereklidir. (Referans: TestNG ). Eclipse'de aşağıdaki adımları izleyin:
- Yardım / Yeni Yazılım Kur'u seçin.
- Ekle'ye tıklayın -> Http://beust.com/eclipse/ girin
- URL'nin yanındaki onay kutusunu seçin ve İleri düğmesine tıklayın.
TestNG Kurulumu
-
- Aşağıdaki ekrana ulaşana kadar İleri Düğmesine tıklamaya devam edin.
TestNG Kurulum Son Ekranı
Son olarak, Apache Lisans Sözleşmesini kabul edin ve kurulumu tamamlamak için Bitir düğmesine tıklayın.
Eklenti kurulumunu etkinleştirmek için Eclipse'i yeniden başlatın.
- Bahar Kavanozları: Şimdi son bir şey daha, RestTemplate sınıfını yay çerçevesinden kullanacağız. Yapabilirsin bahar kavanozlarını indir ve yerel bir klasöre kaydedin, Örneğin ,C: / projeJar
- JSON-Basit Kavanozlar: JSON ayrıştırması yapmamız gerekiyor. Bunun için hafif bir Json-basit API kullanacağız. Bu nedenle, Json-simple-1.1.jar dosyasını C: / projectJar olarak indirin
Şimdi gerekli kurulumları tamamladık. Öyleyse Test Otomasyon projemizi oluşturalım.
# 2) Proje Kurulumu
- Dosya Oluştur -> Yeni -> Java Projesi -> Dosyayı ‘olarak adlandırın EmployeeTestSuite ’.
- Şimdi yeni java paketi oluştur com.demo :
- Derleme Yolunu Yapılandır:
- Önceki bölümde gördüğünüz gibi, TestNG'yi kurduk, spring ve JSON-basit kavanozları indirdik. Öyleyse, şimdi bunları tüketmek için projemize inşa yolu eklememiz gerekiyor. Bunun için bir lib klasör EmployeeTestSuite klasörüne kopyalayın ve şimdi tüm kavanozları C: / projectJar'dan lib Klasör.
- ' EmployeeTestSuite '' -> Yol Oluştur -> Oluşturma Yolunu Yapılandır.
- Tıkla lib sekmesi.
- Tıkla Kitaplık Ekle düğmesi -> TestNG'yi seçin. Bu, derleme yoluna TestNG ekleyecektir.
- Tıklamak Kavanoz ekle düğmesi -> lib'den tüm kavanozları seçin. Bu, tüm yaylı kavanozları ve JSON-basit kavanozu proje oluşturma yolunuza ekleyecektir.
Java Derleme Yolu
Proje yapınız şimdi Eclipse Paket Gezgini'nde aşağıdaki gibi görüntülenecektir.
Paket Yapısı
# 3) Test Sınıfı
CRUD (Oluştur-Oku-Güncelle-Sil) İşlemlerini kapsayabilecek bir Test sınıfı oluşturmamız gerekiyor.
Yeni sınıf Dosyası -> Yeni -> TestNG sınıfı oluşturun ve TestCRUD.java olarak adlandırın
# 4) Test Yöntemi
Ayrı test yöntemleri oluşturalım:
- addEmployee (): HTTP POST yöntemini kullanarak API oluşturmayı test etmek için Test Yöntemi.
- getEmployee (): HTTP GET yöntemini kullanarak Okuma API'sini test etmek için Test Yöntemi.
- updateEmployee (): HTTP PUT yöntemini kullanarak Güncelleme API'sini test etmek için Test Yöntemi.
- deleteEmployee (): HTTP DELETE yöntemini kullanarak API Silme'yi test etmek için Test Yöntemi.
TestNG çerçevesi tarafından test yöntemi olarak tanımlanmasını sağlamak için TestNG'nin @Test ek açıklamasını kullanarak herhangi bir java yöntemi olarak bir test yöntemi oluşturabilirsiniz.
Örneğin,aşağıdaki addEmployee test yöntemidir.
çift bağlantılı liste c ++ öğreticisi
@Test public void addEmployee () {}
Örneğimizde, bir örnek REST Hizmeti.
Şimdi POST aramasını otomatikleştirelim. Bunun için kodumuzu 'REST API Test Adımları' bölümünde manuel olarak izlediğimiz adımlarla tek tek eşlememiz gerekiyor.
# 1) Öncelikle, erişmek istediğiniz API'nin uç noktasını bilin.
String addURI = 'http://dummy.restapiexample.com/api/v1/create';
#iki) HTTP yöntemi için Başlıklar ayarlayın.
HttpHeaders headers = new HttpHeaders();
// Üstbilgi ekle
headers.add('Accept', 'application/json'); headers.add('Content-Type', 'application/json');
HTTP yöntemi için Gövde'yi ayarlayın.
String jsonBody = '{'name':'zozo100','salary':'123','age':'23'}';
// Gövde ve üstbilgileri ayarlayarak bir HttpEntity nesnesi oluşturun.
HttpEntity entity = new HttpEntity(jsonBody, headers);
Aşağıdaki adımları tek bir açıklamada otomatik hale getireceğiz.
# 3) Bu durumda uygun HTTP yöntemini, yani POST'u ayarlayın.
# 4) RESTful hizmet sunucusuna bir istek gönderin.
# 5) Sunucudan bir yanıt alın.
RestTemplate restTemplate = new RestTemplate(); ResponseEntity response =restTemplate.postForEntity(addURI, entity, String.class);
Kullanıyoruz postForEntity POST yöntemini sunucuya göndermek için. Yanıt sunucusundan ResponseEntity nesnesinden alıyoruz.
# 6) Yanıt Kodunun yardımıyla beklendiği gibi Yanıtı doğrulayın.
Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
Burada, gerçek değeri, yani response.getStatusCode () beklenen değeri HttpStatus.OK ile karşılaştıran durum kodunu assertEquals yöntemini doğrulamak için TestNG'nin Assert araç sınıfını kullanıyoruz.
Ancak burada, bir doğrulama daha yapıyoruz, yani Eklenen Çalışanın yanıt gövdesinde olup olmadığını doğruluyoruz.
Assert.assertTrue(responseBody.contains(employeeId));
Çalışan kimliğini nasıl aldık?
Bunun için JSON ayrıştırıcı API yani Json-simple'dan yardım alıyoruz.
Çalışan REST hizmetimizde istemci ile sunucumuz arasında verileri depolamak ve değiştirmek için JSON formatı kullanıldığından JSON ayrıştırıcısı kullanıyoruz. Daha önce belirtildiği gibi, JSON verileri şurada saklanır: anahtar: değer biçim. Burada, almak istiyoruz 'İD' değer.
Yanıt gövdesini aşağıdaki gibi ayrıştırarak elde edeceğiz:
JSONParser parser = new JSONParser(); // Instantiate JSONParser object JSONObject jsonResponseObject = new (JSONObject) parser.parse(jsonString); //Parse jsonString i.e. Response body string in json format to JSON object String employeeId = jsonResponseObject.get('id').toString(); // Get id attribute
Yani, bu tamamen Create yöntemi testi ile ilgili.
Yöntemleri Güncelleyin, Alın ve Silin
- Ayrı test yöntemleri oluşturun ve uygun şekilde Başlıklar ayarlayın.
- Durum kodunun doğrulanması da benzer şekilde yapılır.
- Temel fark, sunuculara istek gönderme Yöntemleridir.
Aşağıdaki yöntemleri kullanabilirsiniz:
# 1) Çalışanı Güncelleyin : HTTP PUT isteğidir. Kullanabileceğiniz RestTemplate PUT yöntemi:
public void put(String url,Object request, Object... urlVariables) throws RestClientException
# 2) Çalışan Alın: HTTP GET isteğidir. Kullanabileceğiniz RestTemplate GET yöntemi aşağıdaki gibidir:
public ResponseEntity getForEntity(String url, Class responseType, Object... urlVariables) throws RestClientException
# 3) Çalışan Kaynağını Silin: HTTP DELETE isteğidir. Kullanabileceğiniz RestTemplate DELETE yöntemi şudur:
public void delete(String url, Object... urlVariables) throws RestClientException
Bu yöntemlerin dışında exchange () ve execute () kullanışlı yöntemler vardır.
Örneğin, Fark ederseniz, Sil yöntemi geçersizdir. Ancak yanıt gövdesini doğrulamak istiyorsanız, o zaman yöntemin yürütülmesinden bir yanıt almanız gerekir. Bu amaçla, ResponseEntity döndüren exchange () yöntemini kullanabilirsiniz. Bakın Bahar çerçevesi daha fazla ayrıntı için.
# 5) Testleri Çalıştırmak
Şimdi, test komut dosyası geliştirme görevimizi tamamladık, öyleyse testlerimizi çalıştıralım. Sadece sağ tıklayın TestCRUD.java ve seçeneği seçin 'TestNG Testi Olarak Çalıştır' .
Bu, test yürütme sonuçlarını aşağıdaki gibi gösterecektir.
Konsol Çıkışı
Not: Test paketinizi şuradan tanımlayabilirsiniz: testng.xml dosya da. Örneğimizde, bu yalnızca Bir Test Komut Dosyasıdır. Ancak gerçek senaryoda, her zaman birden çok komut dosyasından oluşan bir koleksiyondur.
Yani testg.xml dosyanız aşağıdaki gibi görünecektir:
# 6) Raporlar
Sonucu konsolda gördük. Ancak TestNG, test sonuçlarını paydaşlarınızla paylaşılabilecek daha kolay anlaşılır bir html formatında sunar. Açık test çıkışı -> emailable-report.html tarayıcıda.
Test raporunu aşağıdaki gibi göreceksiniz. Rapor sayfasında, Test adını TestCRUD, birkaç başarılı test yani 4, Atlanan ve Başarısız Sayısı bu durumda 0 olarak görebilirsiniz. Ayrıca her bir test yönteminin yürütülmesi için gereken toplam süreyi de gösterir.
Html Biçiminde Test Sonucu
TestCRUD Dosya Kodunu Tamamlayın
package com.demo; import java.io.IOException; import java.text.ParseException; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import org.testng.log4testng.Logger; /** * This test class has test methods for CRUD actions on REST API * REST Service http://dummy.restapiexample.com/api * * It has test methods for Create , Edit , Get and Delete Employee items * https://docs.spring.io/spring-framework/docs/current/javadoc- api/org/springframework/web/client/RestTemplate.html * https://docs.spring.io/autorepo/docs/spring/3.2.3.RELEASE/javadoc- api/org/springframework/web/client/RestTemplate.html * @author * */ public class TestCRUD { private String responseBody; public String responseBodyPOST; final static Logger logger = Logger.getLogger(TestCRUD.class); //RESTTemplate Object private RestTemplate restTemplate; //Employee ID private String employeeId; // Create Response Entity - Stores HTTPStatus Code, Response Body, etc private ResponseEntity response; @BeforeTest public void beforeTest() throws IOException, ParseException { logger.info('Setting up prerequisite for test execution'); logger.info('Creating RestTemplate object before tests'); this.restTemplate = new RestTemplate(); } /** * Test Method to add employee using HTTP POST request * * Verifies POST action Status Code * * @throws IOException * @throws ParseException */ @Test public void addEmployee() throws IOException, ParseException { String addURI = 'http://dummy.restapiexample.com/api/v1/create'; HttpHeaders headers = new HttpHeaders(); headers.add('Accept', 'application/json'); headers.add('Content-Type', 'application/json'); logger.info('Add URL :'+addURI); String jsonBody = '{'name':'zozo100','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntity entity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee response = this.restTemplate.postForEntity(addURI, entity, String.class); responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.assertTrue(responseBody.contains(employeeId)); // System.out.println(propertyFile.get('EmployeeAddResBody')); // Check if the status code is 201 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); logger.info('Employee is Added successfully employeeId:'+employeeId); } /** * Method to get Employee ID from REsponse body * I have used Json Simple API for Parsing the JSON object * * @param json * @return */ public static String getEmpIdFromResponse(String json) { JSONParser parser = new JSONParser(); JSONObject jsonResponseObject = new JSONObject(); Object obj = new Object(); try { obj = parser.parse(json); } catch (org.json.simple.parser.ParseException e) { e.printStackTrace(); } jsonResponseObject = (JSONObject) obj; String id = jsonResponseObject.get('id').toString(); return id; } /** * Test Method to Update employee using HTTP PUT request * * Verifies PUT action Status Code * Verifies Updated Name exists in Response Body * * @throws IOException * @throws ParseException */ @Test(dependsOnMethods = 'addEmployee', enabled = true) public void updateEmployee() throws IOException, ParseException { String updateURI = 'http://dummy.restapiexample.com/api/v1/update/'+employeeId; logger.info('Update URL :'+updateURI); String jsonBody = responseBodyPOST; jsonBody = jsonBody.replace('zozo100', 'update_zozo100'); HttpHeaders headers = new HttpHeaders(); headers.add('Accept', 'application/json'); headers.add('Content-Type', 'application/json'); HttpEntity entity = new HttpEntity(jsonBody, headers); //PUT Method to Update the existing Employee //NOTE that I have Not used restTemplate.put as it's void and we need response for verification response = restTemplate.exchange(updateURI, HttpMethod.PUT, entity, String.class); responseBody = response.getBody().toString(); System.out.println('Update Response Body :'+responseBody); // Check if the updated Employee is present in the response body. Assert.assertTrue(responseBody.contains('update_zozo100')); // Check if the status code is 200 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); logger.info('Employee Name is Updated successfully employeeId:'+employeeId); } /** * Test Method to Get employee using HTTP GET request * * Verifies GET action Status Code * Verifies Name exists in Response Body * * @throws IOException * @throws ParseException */ @Test(dependsOnMethods = 'updateEmployee', enabled = true) void getEmployee() throws IOException, ParseException { String getURI = 'http://dummy.restapiexample.com/api/v1/employee/'+this.employeeId; logger.info('Get URL :'+getURI); HttpHeaders headers = new HttpHeaders(); HttpEntity entity = new HttpEntity(headers); //GET Method to Get existing Employee response = restTemplate.getForEntity(getURI,String.class); // Write response to file responseBody = response.getBody().toString(); //Suppressing for log diffs System.out.println('GET Response Body :'+responseBody); // Check if the added Employee ID is present in the response body. Assert.assertTrue(responseBody.contains('update_zozo100')); // Check if the status code is 200 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); logger.info('Employee is retrieved successfully employeeId:'+employeeId); } /** * Test Method to Delete employee using HTTP DELETE request * * Verifies DELETE action Status Code * Verifies Success Message Text in Response Body * * @throws IOException * @throws ParseException */ @Test(dependsOnMethods = 'getEmployee', enabled = true) public void deleteEmployee() throws IOException, ParseException { String delURI = 'http://dummy.restapiexample.com/api/v1/delete/'+this.employeeId; HttpHeaders headers = new HttpHeaders(); HttpEntity entity = new HttpEntity(headers); //DELETE Method to Delete existing Employee response = restTemplate.exchange(delURI, HttpMethod.DELETE, entity, String.class); // Check if the status code is 204 Assert.assertEquals(response.getStatusCode(), HttpStatus.OK); responseBody = response.getBody(); Assert.assertEquals(getMessageFromResponse(responseBody), 'successfully! deleted Records'); logger.info('Employee is Deleted successfully employeeId:'+employeeId); } /** * Gets 'text' key value from Response body text for verification * I have used Json Simple API for Parsing the JSON object * * @param json * @return text string */ public static String getMessageFromResponse(String json) { String successMessageText = null; try { JSONParser parser = new JSONParser(); JSONObject jsonResponseObject = new JSONObject(); jsonResponseObject = (JSONObject) (parser.parse(json)); String successMessage = jsonResponseObject.get('success').toString(); jsonResponseObject = (JSONObject) (parser.parse(successMessage)); successMessageText = jsonResponseObject.get('text').toString(); } catch (org.json.simple.parser.ParseException e) { e.printStackTrace(); } return successMessageText; } @AfterTest public void afterTest() { logger.info('Clean up after test execution'); logger.info('Creating RestTemplate object as Null'); this.restTemplate = new RestTemplate(); } }
Sonuç
Bu makalenin öğrenme sonuçlarını aşağıda özetledik. Bir REST API Test Otomasyon Çerçevesi kurmak için tüm adımları en başından gördük.
Bunda şunları öğrendik:
- Test otomasyonu için programlama dili olarak Java'yı seçtik.
- @ Test gibi TestNG ek açıklamalarını kullandığımız bir test komut dosyası oluşturmak için TestNG'yi test çerçevesi olarak seçtik.
- Sunucuya gerçek HTTP istekleri göndermek için Spring framework RestTemplate sınıfını kullandık.
- Bu API'leri tüketmek için TestNG kurulumunu, indirilen Spring kavanozlarını ve ayrıştırıcı API'si için Json-simple jar'i kurduk.
- Son olarak, Test sınıfını yürüttük ve sonucu hem konsolda hem de daha prezentabl ve daha okunabilir bir HTML formatında gördük.
Özetle, bu makalede, Spring RestTemplate ile REST API Test otomasyonuna nasıl başlayacağımızı öğrendik. Tüm temel yazılımların kurulumundan, Proje Kurulumu, Test Komut Dosyası geliştirmeden Test yürütmeye ve oluşturulan raporları görüntülemeye kadar test otomasyon çerçevemizi kurduk.
Bu, test otomasyon çerçevenize başlamak için herhangi bir otomasyon QA'sı için oldukça yeterlidir. Ancak, her birinden sadece gerekli parçaları gördük, Örneğin, TestNG kurulumunu, @Test notlarını kullanarak test yöntemini, raporları kullandık. Ancak TestNG, Veriye dayalı testler için DataProvider gibi daha birçok özellik sağlar.
Spring RestTemplate ile REST API Test otomasyonuna başlamaya hazır mısınız?
Önerilen Kaynaklar
- 2021'deki En İyi 10 API Test Aracı (SOAP ve REST API Test Araçları)
- En İyi Yazılım Test Araçları 2021 (QA Test Otomasyon Araçları)
- Primer e-Kitap İndirmeyi Test Etme
- En Önemli 20 API Testi Görüşme Soruları ve Cevapları
- Katalon Studio ile API Testini Basitleştirme
- Parasoft SOAtest Eğitimi: Komut Dosyasız API Test Aracı
- HP LoadRunner Öğreticileriyle Yük Testi
- Masaüstü, İstemci Sunucu Testi ve Web Testi arasındaki fark