Apa yang harus diketahui oleh backend tester



Saya sering ditanya tentang apa yang harus dibaca sebelum mewawancarai posisi penguji backend. Dan dalam pekerjaan saya, saya menemukan fakta bahwa banyak pelamar tidak selalu mengerti apa yang akan terjadi dalam wawancara, dan tidak siap. Maka lahirlah ide untuk mengumpulkan informasi berguna dalam satu artikel.

FunCorp memiliki daftar topik dengan pertanyaan yang kami ajukan kepada para kandidat. Saya memutuskan untuk menambahnya, menjadikannya lebih universal, memecah setiap topik menjadi level (apa yang perlu Anda ketahui dan apa yang akan menjadi nilai tambah) dan menambahkan tautan ke artikel dan buku yang dapat dibaca tentang topik ini.

Masalah apa yang teks ini bantu selesaikan: kandidat - bersiap untuk wawancara, penguji backend apa pun - penyegaran pengetahuan, penguji aplikasi frontend atau aplikasi seluler - perluas wawasannya. Pengusaha dapat menggunakan daftar untuk membuat persyaratan pekerjaan.

Pengetahuan yang dibutuhkan


Saya akan segera berkomentar: pengetahuan dan keterampilan yang diperlukan bergantung pada kekhususan lowongan. Jika lowongan tentang menguji API di mana HTTP digunakan, maka Anda perlu mengetahui HTTP dengan sangat baik dan tidak perlu tahu nuansa OS. Jika Anda bekerja dengan Windows, maka Anda tidak perlu tahu bash.

Saya juga ingin menarik pengusaha: jangan bertanya tentang manajemen memori di Linux seorang kandidat untuk posisi Mobile QA Engineer, ini tidak mungkin berguna baginya dalam pekerjaannya.
Saya tidak menyebutkan bahasa pemrograman karena banyak bergantung pada stack yang digunakan. Tetapi seringkali mereka tidak ditanya apa-apa tentang mereka di wawancara penguji (jika tidak mereka menunjukkan tingkat pengetahuan bahasa yang diperlukan dalam deskripsi pekerjaan).

Pada banyak topik saya akan memberikan tautan, termasuk ke Wikipedia. Ya, meskipun ini bukan sumber informasi dengan kualitas terbaik, saya percaya bahwa ini sangat cocok untuk studi yang dangkal tentang topik atau pengetahuan yang menyegarkan dan baik karena di setiap artikel ada banyak tautan ke artikel lain di area subjek tertentu. Dalam hal apa pun, saya memberikan tautan ke artikel dan buku lain, sehingga setiap orang dapat memilih sumber informasi yang tepat untuk dirinya sendiri.

Teori pengujian


Saya akan mulai, mungkin, dengan yang paling jelas, tetapi bukan yang paling tegas: beberapa pemimpin tim dapat mengarahkan Anda dalam semua istilah dan konsep dalam wawancara, beberapa tidak akan meminta apa-apa sama sekali.

Apa yang diharapkan dari setiap kandidat


Pengetahuan tentang istilah dasar, teknik desain pengujian, kemampuan untuk menulis laporan bug yang berkualitas.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Secara formal, ini adalah sertifikat ISTQB.

Apa yang harus dibaca pada topik


Ada artikel bagus tentang Habré dengan semua informasi yang diperlukan. Jika Anda ingin memahami teori pengujian secara lebih rinci, maka Anda dapat membaca materi ISTQB .

Kulit


Bergantung pada OS, Anda perlu tahu bash (sh, zsh, dll., Tetapi nuansa tidak mungkin memainkan peran penting), atau CMD dan PowerShell.

Apa yang diharapkan dari setiap kandidat


Pengetahuan tentang perintah dasar.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Calon tahu banyak perintah, berbagai opsi untuk mereka, kelebihan dan kekurangannya, berbagai cara menggunakannya, serta alat untuk masalah debugging, misalnya, strace , tcpdump , gdb dan lainnya.

Apa yang harus dibaca pada topik


Anda dapat membaca tentang perintah utama di Linux di salah satu artikel saya sebelumnya , dan ada juga repositori yang sangat keren dengan banyak contoh di GitHub . Dari buku-buku itu, saya akan menyarankan "Sistem Operasi UNIX" oleh Robachevsky, Nemnyugin dan Stesik - ini bukan hanya tentang tim, tetapi tentang sistem secara keseluruhan.
Anda dapat membaca tentang perintah CMD di sini , tetapi PowerShell memiliki beberapa dokumentasi yang bagus .

HTTP (atau protokol yang ditentukan dalam uraian tugas)


Sangat sering, HTTP dipilih sebagai protokol utama untuk arsitektur client-server, sehingga mereka sering bertanya tentang protokol ini. Namun, Anda mungkin perlu tahu IMAP, POP3, SMTP (jika Anda akan menguji mail), Protobuf atau MessagePack, atau protokol lainnya. 

Apa yang diharapkan dari setiap kandidat


Itu semua tergantung pada prevalensi protokol. Tidak mungkin mereka akan memberi Anda dump lalu lintas biner dan meminta untuk deserialisasi di selembar kertas dari Protobuf, tetapi jika kita berbicara tentang HTTP, maka Anda perlu mengetahuinya pada tingkat yang baik: struktur permintaan dan respons, header utama, metode, kode respons, HTTPS.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Kandidat dapat menjawab pertanyaan tentang caching, kompresi data, cookie, dan penggunaan berbagai header di HTTP. Untuk protokol lain, semuanya lebih subjektif.

Apa yang harus dibaca pada topik


Tentang HTTP, semua informasi yang diperlukan ada di Wikipedia . Untuk protokol lain, saya menyarankan Anda untuk membaca dokumentasi dan spesifikasinya. Juga jangan lupa tentang HTTPS . Yah, tentu saja, Anda harus selalu memiliki tautan di ujung jari Anda ke RFC 2616 dan RFC 7540 (tetapi ada spesifikasi lainnya ).

Protokol jaringan lapisan bawah


Banyak kandidat tidak tahu apa yang ada di bawah HTTP. Saya percaya bahwa ini tidak mencirikan mereka dengan sangat baik, karena penguji harus memiliki pikiran yang ingin tahu dan rasa ingin tahu yang moderat, jadi saya tentu perlu tahu secara umum tentang model jaringan OSI.

Apa yang diharapkan dari setiap kandidat


Calon harus tahu bahwa ada protokol TCP, UDP dan IP dan memahami esensinya.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Memahami mekanisme operasi protokol TCP (jabat tangan tiga arah, beberapa bidang dari header, bendera, jendela geser), kandidat dapat menyebutkan kelemahan dan keuntungan dari TCP dan UDP, bidang aplikasi mereka, pengetahuan umum tentang IP. Ini akan menjadi keren jika kandidat memberitahu secara singkat tentang protokol lain (misalnya, ARP, ICMP, ICMPv6).

Apa yang harus dibaca pada topik


Pengetahuan dasar dapat diperoleh dari artikel Wikipedia: OSI , TCP , UDP , IP , IPv6 , ICMP , ARP , model jaringan ICMPv6 . Jika Anda ingin menyelami topik ini, maka Anda dapat membaca "Jaringan Komputer" oleh Tanenbaum.

Basis data


Apa yang diharapkan dari setiap kandidat


Pertanyaan SQL dasar (GABUNGAN favorit semua orang).

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Pengetahuan umum tentang berbagai DBMS, replikasi, sharding, struktur internal DBMS, pengetahuan umum tentang basis data non-relasional.

Apa yang harus dibaca pada topik


Secara umum, tentang basis data dapat ditemukan dalam dokumentasi untuk DBMS tertentu. Jika Anda ingin berurusan dengan basis data secara terperinci, maka saya merekomendasikan bab-bab yang sesuai dari "Aplikasi Sangat Dimuat " dari Kleppman.

OOP


Apa yang diharapkan dari setiap kandidat


Pengetahuan tentang prinsip-prinsip dasar OOP.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Akan keren jika kandidat tahu beberapa pola.

Apa yang harus dibaca pada topik


Anda dapat membaca tentang prinsip, misalnya, di sini , tentang pola - di sini . Ada juga buku keren “Teknik Pemrograman Berorientasi Objek. Pola Desain "geng empat."

Sistem operasi


Apa yang diharapkan dari setiap kandidat


Untuk sebagian besar lowongan penguji, pengetahuan tentang nuansa sistem operasi tidak relevan.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Ini akan keren jika kandidat tahu tentang manajemen memori, kernel dan stack, penciptaan proses baru dan penjadwalannya, sistem file dan banyak lagi.

Apa yang harus dibaca pada topik


Secara singkat, Anda dapat membaca di buku yang disebut "Sistem Operasi UNIX" oleh Robachevsky, Nemnyugin dan Stesik. Jika topik tersebut menarik, maka Anda dapat menyelidiki menggunakan, misalnya, Sistem Operasi Modern Tanenbaum. Secara umum, Anda dapat membiasakan diri dengan topik menggunakan Wikipedia: ada artikel tentang kernel Linux , memori virtual , pengalih konteks, dan lainnya.

Arsitektur komputer


Apa yang diharapkan dari setiap kandidat


Untuk sebagian besar lowongan penguji, pengetahuan tentang nuansa prosesor, memori, dan periferal tidak relevan.

Yang menunjukkan bahwa kandidat tahu topik dengan baik


Akan sangat bagus jika kandidat tahu secara umum tentang prosesor, register, cache, memori dan disk, dan sebagainya.

Apa yang harus dibaca pada topik


Anda dapat membiasakan diri dengan perangkat keras menggunakan Wikipedia: CPU , mode prosesor , mikroarsitektur (ada banyak tautan ke artikel terkait lainnya dalam artikel ini), cache , ALU , pipa , prediktor cabang , superscalaritas , dll. Topik ini dapat dipelajari secara lebih holistik dan mendalam, misalnya, menggunakan buku " Arsitektur Komputer" oleh Tanenbaum.

Algoritma dan struktur data


Kemungkinan besar, mereka tidak akan bertanya tentang algoritma dan struktur data (terutama jika posisinya tidak di tingkat Intern atau Junior), tetapi Anda masih perlu mengetahui beberapa hal umum. Secara pribadi, saya hanya ditanya sekali tentang tumpukan biner di sebuah wawancara; Saya sendiri juga bukan penggemar bertanya tentang hal ini. Oleh karena itu, saya tidak akan memperkenalkan kriteria apa pun dan hanya melampirkan artikel dengan gambar yang bagus , Anda dapat mencetaknya dan meletakkannya di tempat yang menonjol. Jika Anda ingin membenamkan diri dalam algoritme dan struktur data dengan kepala Anda, silakan mulai membaca “Algoritma. Panduan Pengembangan " Skien atau " Algoritma. Konstruksi dan analisis ” Cormen.

Lain


  1. Banyak tempat Docker digunakan .
  2. (« »).
  3. REST SOAP.
  4. JSON XML.
  5. Protocol Buffers, MessagePack BSON.
  6. TLS.
  7. Git ( VCS).
  8. Nginx Apache.
  9. .
  10. TeamCity Jenkins ( CI-).



, google.com Enter?


Tugas klasik yang dengannya Anda dapat memeriksa seberapa dalam seorang kandidat memahami teknologi web secara umum. Ada analisis rinci tentang tugas ini pada Habré, tetapi saya tidak merekomendasikan membaca nuansa tipe "sejumlah kecil arus dikirim melalui diagram kabel keyboard."

Menguji formulir dengan tombol


Ya, tugas ini sering ditanyakan pada wawancara penguji backend. Tugas ini klasik, jadi akan keren jika calon berfantasi sedikit dan membayangkan apa yang mungkin ada di balik tombol ini dengan tombol. Sebagai contoh, kita dapat mengasumsikan bahwa data berpindah dari formulir ke backend, yang terdiri dari beberapa server dan database, bahwa backend menulis log dan memiliki konfigurasi - ini akan segera menambahkan banyak kasus uji pada level yang lebih dalam daripada “memasukkan nilai terlalu lama di bidang input” . Misalnya, Anda dapat menggunakan tcpdump untuk melihat apakah lalu lintas masuk ke semua server backend dengan tepat; Anda dapat mencoba mengirim injeksi SQL atau JSON rusak (secara alami, jika tiba-tiba JSON sama sekali dalam konteks tugas); Anda dapat memeriksa apa yang terjadi jika log mengambil semua ruang kosong pada disk; Anda dapat memeriksa sistem kapanbackend aman , kebenaran menambahkan data ke database, dll. Dengan demikian, kandidat akan menunjukkan wawasannya yang luas, yang pasti akan menguntungkannya.

Pengujian layanan


Variasi tugas sebelumnya: misalnya, ada layanan yang mendengarkan port dan menerima JSON sebagai input, merespons dalam format yang sama. Semuanya serupa, hanya saja tidak ada timah, jadi Anda tidak perlu takut. Kami terhubung ke port menggunakan telnet , dan kemudian semuanya sama.

Pengujian titik akhir REST API


Dan lagi, semuanya sama, hanya dengan HTTP (kemungkinan besar). Di sini Anda dapat menunjukkan pengetahuan tentang protokol HTTP: misalnya, periksa pengoperasian layanan jika ada berbagai tajuk dalam permintaan.

Tentu saja, Anda tidak dapat menyusun manual pelatihan universal untuk menyiapkan backend tester dari awal: semuanya tergantung pada spesifikasi perusahaan, spesifikasi departemen, dan pimpinan tim. Dan teknologi tidak tinggal diam: sampai saat ini, Docker tidak digunakan secara aktif, dan sekarang pengalaman dengan itu bisa menjadi nilai tambah yang besar. Namun, saya mencoba mengumpulkan barang-barang dasar di satu tempat, dan jika ini membantu mempersiapkan dan mencari pekerjaan untuk setidaknya satu orang, maka saya menulis artikel ini untuk alasan yang baik.

PS Saya juga merekomendasikan membaca artikel rekan saya , “Gambar Penguji Modern. Apa yang perlu Anda ketahui dan bisa ”, ini menguraikan berbagai arah pengembangan untuk penguji.

All Articles