Terjemahan dari Shashi Kumar Raja
Jadi, katakanlah Anda ingin melakukan otomatisasi API, tetapi setiap kali Anda mengetik alat otomatisasi api terbaik di bilah pencarian Google, Anda melihat begitu banyak tautan ke 10 alat teratas yang membuat Anda bingung dan memutuskan bahwa Anda pasti akan melakukannya besok.

Mari kita mulai dengan memahami apa yang kita butuhkan jika kita ingin mengatur (semoga besok) platform otomatisasi API . Pegang pemikiran ini sejenak ... Saya katakan, berhenti berpikir ... Saya tahu bahwa bos Anda tidak mengalokasikan uang receh untuk alat berbayar apa pun . Dengar, aku membaca pikiranmu, jangan berpikir keras-keras

Alat berbayar harus digantung, tidak dieksekusi :)
1. di mana saya harus mulai menulis tes?
Anda akan membutuhkan sesuatu yang akan memberi Anda seperangkat aturan dan pedoman untuk menulis tes, dan juga memungkinkan Anda melakukan ini dengan memberi Anda akses ke beberapa alat dan teknik. Saya mendengar bel berbunyi, tidak !!! Yah, saya tahu apa yang akan terjadi.
Pernahkah Anda mendengar tentang TESTNG , JUNIT , MOCHA , PYTEST , ROBOT !? Ya, mereka semua adalah lingkungan otomasi pengujian.
Anda perlu menemukan lingkungan pengujian yang tepat berdasarkan kebutuhan Anda: tumpukan teknologi mana yang digunakan perusahaan Anda? Otomasi apa yang ingin Anda lakukan? Bahasa mana yang lebih nyaman bagi Anda, dll. Anda akan menemukan lingkungan otomasi dalam sebagian besar bahasa populer yang memungkinkan Anda menulis unit, fungsional, dan jenis pengujian API lainnya.
Untuk mempelajari lebih lanjut tentang lingkungan pengujian, lihat Bagian 2 dari seri, di mana saya memperkenalkan Mocha dan Pytest secara rinci .
2. Bagaimana saya akan melakukan panggilan API di lingkungan pengujian?
Sebagian besar platform ini mendukung panggilan API, termasuk perpustakaan permintaan HTTP , karena REST API menggunakan protokol HTTP untuk komunikasi.
Beberapa kerangka kerja, seperti moka , memberi Anda kebebasan untuk menggunakan perpustakaan permintaan HTTP pilihan Anda, seperti superagent .
<code class = "lang-JS"> permintaan
.post ('/ api / pet')
.send ({name: 'Manny', species: 'cat'}) // mengirim postingan JSON
.set ('X-API-Key', 'foobar')
.set ('accept', 'json')
.end ((err, res) => {
// Memanggil fungsi akhir akan mengirim permintaan
});
</code>
Mereka memberi Anda dukungan mudah untuk GET, PUT, POST, DELETE dan semua metode lainnya. Anda dapat mengirimkan tajuk, cache, parameter permintaan, Anda menyebutnya - Anda mendapatkannya - Anda mendapatkannya
3. Keren, tetapi beberapa API saya memberikan JSON dan yang lain memberikan XML sebagai respons, bagaimana saya bisa menghadapinya?
Sebagian besar pustaka permintaan HTTP ini memungkinkan Anda untuk mengirim dan menerima data dalam JSON, XML, CSV, Teks, Gambar, formulir-data, format data yang disandikan dengan beberapa standar otorisasi yang didukung.
Mereka juga memungkinkan Anda untuk memproses kode status respons HTTP dan memeriksa apakah kami telah menerima kode status respons yang diperlukan atau tidak.
- Kode Respon Informasi (1xx)
100 - Lanjutkan
101 - Protokol Pengalihan
102 - Memproses
- Kode Respons Sukses (2xx)
200 - OK 206 - Konten Sebagian
201 - Dibuat 207 - Multi-status
202 - Diterima 208 - Sudah Dilaporkan
203 - Info Non-Resmi 226 - IM Digunakan
204 - Tidak Ada Konten 250 - Ruang Penyimpanan Rendah
205 - Atur Ulang Konten
- Kode Respons Redirection (3xx)
300 - Pilihan Ganda 304 - Tidak Dimodifikasi
301 - Dipindahkan Secara Permanen 305 - Gunakan Proxy
302 - Ditemukan 307 - Pengalihan Sementara
303 - Lihat Lainnya 308 - Pengalihan Permanen
- Kode Respons Kesalahan Klien (4xx)
400 - Pilihan Ganda 410 - Tidak Dimodifikasi
401 - Dipindahkan Secara Permanen 411 - Gunakan Proxy
402 - Ditemukan 412 - Pengalihan Sementara
403 - Lihat Lainnya 413 - Redirect Permanen
404 - Pilihan Ganda 414 - Tidak Dimodifikasi
405 - Dipindahkan Secara Permanen 415 - Gunakan Proxy
406 - Ditemukan 416 - Pengalihan Sementara
407 - Lihat Lainnya 417 - Redirect Permanen
408 - Ditemukan 418 - Pengalihan Sementara
409 - Lihat Lainnya
- Kode Respons Kesalahan Server (5xx)
500 - Kesalahan Server Internal 508 - Loop Terdeteksi
501 - Tidak Diimplementasikan 509 - Bandwidth Limited
502 - Bad Gateway 510 - Tidak Diperpanjang
503 - Layanan Tidak Tersedia 511 - Auth Network Requried
504 - Gateway Timeout 550 - Izin Ditolak
505 - HTTP Ver Tidak Didukung 551 - Opsi Tidak Didukung
506 - Varian Juga Bernegosiasi 598 - Kesalahan Timeout Baca Nework
507 - Penyimpanan Tidak Memadai 599 - Kesalahan Batas Waktu Koneksi Jaringan
4. Baik, tetapi bagaimana saya akan memproses data pengujian?
Tergantung dari mana Anda mendapatkan data tes. Kerangka kerja pengujian ini akan memungkinkan Anda untuk menggunakan semua fitur bahasa di mana mereka didasarkan -
a. Basis data: Anda dapat dengan mudah membuat koneksi basis data untuk membaca data.
b. File eksternal: Anda dapat membaca teks eksternal, JSON, CSV atau file lainnya.
c. Data acak: Anda dapat menggunakan perpustakaan seperti faker untuk menghasilkan data uji acak dengan cepat.
<code> var faker = butuhkan ('faker');
var randomName = faker.name.findName (); // Rowan Nikolaus
var randomEmail = faker.internet.email (); // Kassandra.Haley@erich.biz
var randomCard = faker.helpers.createCard (); // kartu kontak acak yang berisi banyak properti
</code>
d. Data dari respons API: Sering kali selama pengujian, Anda harus meneruskan respons dari satu API sebagai data permintaan ke yang lain. Anda dapat melakukan ini dengan menggunakan kait . Anda akan mendapatkan fungsi seperti Sebelum, Sebelum masing-masing, Setelah, Setelah masing-masing , yang sesuai dengan namanya, dieksekusi sebelum / setelah salah satu atau semua tes. Panggil API1 sebelum API2, dan sampaikan jawabannya ke API2. Tepat !!! οΈ
5. Memproses data pengujian dan membuat panggilan API tampak sederhana, tetapi bagaimana saya akan memeriksa respons API?
Untuk memverifikasi jawaban, Anda akan memerlukan perpustakaan yang disebut perpustakaan pernyataan . Banyak lingkungan uji dibundel dengan pustaka pernyataan, yang memberi Anda kemampuan untuk menulis pernyataan tegas dalam bahasa Inggris biasa, seperti sintaksis. Mereka juga memungkinkan Anda untuk memeriksa skema JSON dari respons Anda.
Di moka, Anda dapat menggunakan pustaka pernyataan apa pun, misalnya, chai .
<code> response.status.should.equal (200)
foo.should.be.a ('string');
foo.should.have.lengthOf (3);
tea.should.have.property ('flavours')
.with.lengthOf (3);
</code>
6. Luar Biasa !!! Ada sedikit hal yang tersisa, setelah semua pengujian ini, entah bagaimana menunjukkan kepada bos saya apa yang saya lakukan dan di mana saya menemukan masalah?
Sebagian besar kerangka kerja ini akan memberi Anda laporan uji coba HTML dasar , yang dapat Anda unduh dan bagikan. Jika Anda membutuhkan laporan yang lebih indah dengan grafik dan bagan, Anda dapat menggunakan beberapa alat pelaporan sumber terbuka seperti daya pikat atau mochawesome .

7. Hanya jika saya bisa mendapatkan semacam template dengan hal-hal ini untuk memulai otomatisasi API sekarang
Apa yang saya katakan, Anda menyebutnya, Anda mengerti
Ini adalah template yang saya buat untuk mengotomatisasi API menggunakan mocha di node.js.
Itu termasuk-
- Test-framework (mocha),
- Pustaka permintaan HTTP (supertest),
- Perpustakaan pernyataan (chai),
- Reporter (daya pikat),
- logger (winston),
- Penghasil data acak (pemalsu),
- Dukungan Eslint dan
- validasi string nakal terintegrasi . Yang harus Anda lakukan adalah mengkloning / mengunduhnya dan Anda siap untuk pergi.
Jika Anda membutuhkan templat dalam bahasa lain, saya dapat menyiapkannya untuk besok.
Jika Anda menyukai artikel ini, Anda dapat bertepuk tangan , itu mungkin akan membuat saya menulis lebih banyak