Harus Dibaca 30 Pertanyaan & Jawaban Wawancara Selenium: Panduan Utama 2022

Diterbitkan: 2021-01-04

Apakah Anda menghadiri wawancara penting dan bertanya-tanya apa saja pertanyaan wawancara Selenium yang akan Anda lalui?

Kami telah membuat panduan pertanyaan dan jawaban wawancara Selenium yang paling banyak dibaca ini untuk membantu Anda memahami kedalaman pertanyaan dan menghadapinya dengan percaya diri.

Saat ini aplikasi web sedang meningkat. Dengan meningkatnya kebutuhan akan aplikasi web, ada juga persyaratan yang tak terhindarkan untuk menguji aplikasi web ini. Di situlah Selenium beraksi. Selenium adalah salah satu alat pengujian otomatis yang umum digunakan yang memastikan aplikasi web berfungsi dengan baik. Jika pengujian dilakukan secara manual, itu akan menggunakan beberapa jam kerja dan akan meningkatkan biaya juga.

Selanjutnya, karena manual, mereka rentan terhadap kesalahan. Pengujian manual tidak membantu dalam jangka panjang, sehingga pengujian otomatis seperti Selenium mendapatkan permintaan di industri. Jika Anda mengejar karir Anda dalam pengujian otomatis, dan memiliki wawancara yang akan datang di Selenium, blog ini ditujukan untuk Anda.

Di blog ini, kita akan membahas di sini pertanyaan wawancara Selenium yang paling umum. Ini untuk keduanya – pertanyaan wawancara pemula dan Selenium untuk yang berpengalaman.

Pertanyaan & Jawaban Wawancara Selenium 2022

T.1) Mengapa memilih Selenium daripada alat pengujian otomatis lainnya?

Selenium adalah sumber terbuka. Sangat mudah untuk beradaptasi dibandingkan dengan alat otomatis lainnya di pasar. Karena alasan ini, banyak perusahaan mengambil pengujian otomatis Selenium daripada metode tradisional lainnya.

T.2) Sebutkan beberapa manfaat Selenium dibandingkan alat seperti TestComplete dan QTP. Juga, apa kekurangannya?

Selenium tidak memerlukan lisensi, tidak seperti TestComplete dan QTP, karena mudah di kantong. Komunitas online menawarkan dukungan besar-besaran. Siklus rilis lebih kecil, dan umpan baliknya cepat dibandingkan dengan TestComplete dan QTP. Selanjutnya, Selenium juga berfungsi di Mac, Linux, dan Windows.

Sebaliknya, Selenium membutuhkan pengembang untuk memiliki keterampilan pengkodean yang tinggi. Sedangkan QTP dan TestComplete masing-masing membutuhkan tingkat keterampilan pengkodean yang rendah hingga sedang.

Q.3) Perubahan apa yang terjadi pada berbagai peningkatan versi Selenium?

Pada Selenium versi pertama, Selenium v1, hanya terdiri dari tiga rangkaian alat, yaitu Selenium IDE, RC, dan Grid. Webdriver hilang. Hanya di Selenium versi kedua, Selenium v2 bahwa Webdriver diperkenalkan. Setelah ini selesai, Selenium RC tidak lagi digunakan.

Anda dapat menemukannya di pasar, tetapi dukungannya tidak tersedia. Versi Selenium berikutnya adalah Selenium v3. Ini terdiri dari Webdriver, IDE, dan Grid. Saat ini sedang digunakan. Versi yang lebih baru, Selenium v4, juga sekarang tersedia.

Selenium IDE terutama untuk merekam dan memutar ulang. Webdriver adalah untuk menguji aplikasi web dinamis menggunakan antarmuka pemrograman. Grid digunakan untuk menggunakan tes di mesin host jarak jauh.

Anda harus menggunakan IDE untuk merekam dan memutar ulang tes. WebDriver digunakan untuk menguji aplikasi web aktif menggunakan antarmuka pemrograman, dan Grid digunakan untuk menyebarkan tes di mesin host yang terisolasi.

Q.4) Apa saja pengecualian di Selenium WebDriver?

Sama seperti bahasa pemrograman lainnya, Anda juga dapat menemukan pengecualian di Selenium. Anda dapat menemukan pengecualian berikut di Selenium WebDriver:

TimeoutException: Anda mendapatkan pengecualian ini saat perintah tidak melakukan tindakan dalam waktu yang ditentukan.

NoSuchElementException: Anda mendapatkan pengecualian ini ketika tidak dapat menemukan elemen dengan atribut yang diberikan pada halaman web.

ElementNotVisibleException: Anda mendapatkan pengecualian ini ketika sebuah elemen tersedia dalam model objek dokumen, tetapi tidak terlihat di halaman web.

StaleElementException: Anda mendapatkan pengecualian ini saat elemen tidak dilampirkan ke model objek dokumen atau dihapus.

Q.5) Jelaskan uji pengecualian Selenium

Pengecualian yang Anda harapkan akan dilemparkan ke dalam kelas uji adalah uji pengecualian. Jika Anda menulis kasus uji yang bermaksud untuk melemparkan pengecualian, Anda harus menggunakan anotasi @test dan juga menyebutkannya dalam parameter pengecualian mana yang akan dilemparkan. Contohnya,

@Test(expectedException = NoSuchElementException.class)

Q.6) Apakah ada kebutuhan akan lembar excel dalam sebuah proyek? Apakah ya, bagaimana?

Lembar Excel digunakan sebagai sumber data selama pengujian. Selanjutnya, ini juga menyimpan kumpulan data saat menjalankan pengujian berbasis data. Ketika lembar excel digunakan sebagai sumber data, ia dapat menyimpan:

URL Aplikasi: Pengembang dapat menyebutkan URL lingkungan tempat pengujian dijalankan. Misalnya, lingkungan pengujian, lingkungan pengembangan, lingkungan QA, lingkungan produksi, atau lingkungan pementasan.

Informasi nama pengguna dan kata sandi: Lembar Excel dapat menjaga keamanan kredensial akses seperti nama pengguna kata sandi dari berbagai lingkungan. Pengembang dapat mengenkripsi dan menyimpan detail ini untuk alasan keamanan.

Kasus uji: Pengembang dapat membuat tabel di mana satu kolom menulis nama kasus uji dan kolom lainnya mengatakan akan dieksekusi atau tidak.

Jika Anda akan menggunakan lembar excel untuk DataDriven Test, Anda dapat dengan mudah menyimpan informasi untuk berbagai duplikasi yang akan dijalankan selama pengujian. Misalnya, semua data yang perlu ditulis dalam kotak teks untuk pengujian pada halaman web dapat disimpan dalam lembar excel.

Q.7) Apa itu POM? Sebutkan kelebihannya?

POM adalah singkatan dari Page Object Model. Ini adalah pola desain untuk membuat Repositori Objek untuk elemen UI web. Setiap halaman web dalam aplikasi harus memiliki kelas halaman yang sesuai, yang bertugas mencari WebElements di halaman itu dan kemudian menjalankan operasi pada mereka.

Keuntungan menggunakan model objek Page adalah:

  • Itu membuat kode dapat dibaca dengan membiarkan pengembang memisahkan operasi dan aliran UI dari verifikasi.
  • Beberapa tes dapat menggunakan Object Repository yang sama karena tidak bergantung pada Test Case.
  • Kode menjadi dapat digunakan kembali.

Q.8) Apa itu Pabrik Halaman?

Page Factory menawarkan metode yang disempurnakan untuk mengeksekusi Model Objek Halaman dengan menggunakan memori secara efisien, dan eksekusi dilakukan dengan menggunakan desain berorientasi objek.

Pelaksanaan POM
Dengan Pabrik Halaman Tanpa Pabrik Halaman
Menggunakan Oleh() Menggunakan @FindBy()
Tidak ada impor yang diperlukan Impor Halaman pabrik
Tidak ada penyimpanan cache Pencarian cache lebih cepat

Page Factory menginisialisasi elemen-elemen dari Objek Halaman atau membuat Objek Halaman itu sendiri. Anotasi untuk elemen juga dapat diproduksi. Faktanya, ini adalah cara yang lebih baik karena properti penggambaran mungkin tidak cukup ekspresif untuk membedakan satu objek dari objek lainnya

Jika POM digunakan tanpa pabrik halaman, daripada harus menggunakan 'FindElements', @FindBy digunakan untuk mencari WebElement, dan initElements digunakan untuk menginisialisasi elemen web dari kelas Page Factory.

@FindBy dapat menerima atribut seperti tagName, name, partialLinkText , linkText, id, className , css, dan xpath.

Q.9) Bagaimana Anda mencapai sinkronisasi di WebDriver? Atau, beri tahu kami tentang berbagai jenis pernyataan tunggu Selenium Web Driver?

Anda dapat menemukan dua pernyataan tunggu di driver web Selenium, yaitu, Tunggu Implisit dan Tunggu Eksplisit.

Menunggu implisit memerintahkan WebDriver untuk menunggu sebentar dengan polling DOM. Ini hadir untuk kehidupan lengkap instance driver web, setelah menunggu implisit dideklarasikan. Nilai yang telah ditentukan sebelumnya adalah nol. Jika Anda menyetelnya lebih dari nol, maka perilaku akan melakukan polling DOM secara teratur berdasarkan implementasi driver.

Tunggu eksplisit memerintahkan eksekusi untuk menunggu sebentar hingga kondisi tercapai seperti:

  • elemenToBeClickable
  • keberadaanElementLocated
  • elemenUntukDipilih

Baca: Pertanyaan & Jawaban Wawancara Musim Semi

10) Apa gunanya JavaScriptExecutor?

Anda dapat menjalankan JavaScript melalui Selenium Websriver menggunakan JavaScriptExecutor. Ini adalah antarmuka yang menawarkan mekanisme ini. Ini memberikan metode seperti "executescript" dan "executeAsyncScript" untuk menjalankan JavaScript dalam kondisi bingkai atau jendela yang dipilih saat ini. Contohnya adalah:

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript(Script,Argumen);

Q.11) Fungsi mana yang memungkinkan Anda menggulir halaman ke bawah menggunakan JavaScript di Selenium?

Fungsi window.scrollBy() membantu Anda menggulir halaman ke bawah menggunakan JavaScript di Selenium. Contohnya:

((JavascriptExecutor) driver).executeScript(“window.scrollBy(0,500”);

Q.12) Bagaimana Anda menangani tindakan mouse dan keyboard menggunakan Selenium?

Tindakan mouse dan keyboard khusus ditangani menggunakan API Interaksi Pengguna Tingkat Lanjut. Ini terdiri dari Tindakan dan Kelas Tindakan yang diperlukan untuk melakukan acara ini. Event mouse dan keyboard yang paling sering digunakan yang diberikan oleh kelas Action adalah:

dragAndDrop(): Acara ini melakukan klik-dan-tahan pada posisi elemen sumber, bergerak.

source, target(): Bergerak ke posisi elemen target dan melepaskan mouse.

clickAndHold(): Mengklik lokasi mouse saat ini.

Q.13) Apa saja jenis kerangka Selenium?

Berbagai jenis kerangka Selenium adalah:

  • Kerangka Kerja Berbasis Kata Kunci: Dalam kerangka kerja ini, operasi dan instruksi ditulis dalam file terpisah seperti Excel.
  • Kerangka Berbasis Data: Dalam kerangka kerja ini, data uji lengkap diambil dari beberapa file sumber eksternal seperti XML, Excel, CSV, atau beberapa tabel database lainnya.
  • Kerangka Kerja Hibrida: Kerangka kerja ini merupakan perpaduan antara kerangka kerja Berbasis Kata Kunci dan kerangka kerja Berbasis Data.

Q.14) Sebutkan beberapa file yang berfungsi sebagai sumber data untuk berbagai kerangka Selenium.

Mereka bisa berupa XML, Excel, CSV, atau bahkan file Teks.

Q.15) Apa itu Selenese?

Selenese adalah sekelompok perintah selenium untuk menguji aplikasi web. Pengembang dapat menggunakan Pernyataan, Tindakan, dan Aksesor. Pernyataan digunakan sebagai pos pemeriksaan. Tindakan untuk menjalankan operasi, dan Accessor digunakan untuk menyimpan nilai variabel.

Q.16) Apa perbedaan utama antara Page Factory dan Page Object Model (POM)?

Pertanyaan wawancara selenium yang umum. Pabrik halaman adalah metode untuk menginisialisasi elemen web dalam objek halaman pada pembuatan instance. Di sisi lain, model objek halaman adalah kelas yang menyatakan halaman web dan memegang fungsinya.

Q.17) Apakah Selenium mendukung penanganan jendela pop-up?

Tidak. Selenium tidak mendukung penanganan pop-up. Peringatan, yang merupakan jendela pop-up, menampilkan pesan peringatan di layar. Anda dapat mencapai ini dengan menggunakan beberapa metode seperti:

Pemberhentian batal(): Ketika tombol batal diklik di kotak peringatan, metode ini dipanggil.

Void accept(): Ketika tombol 'OK' dari peringatan diklik, metode ini dipanggil.

String getText(): Jika Anda ingin menangkap pesan peringatan, Anda harus memanggil metode ini.

Void sendKeys(String stringToSed): Jika Anda ingin mengirim beberapa informasi ke kotak peringatan, Anda harus memanggil metode ini.

Baca: Pertanyaan & Jawaban Wawancara React

Q.18) Jelaskan kelas Robot

Kelas Robot memberikan kontrol atas perangkat keyboard dan mouse.

Metode terdiri dari:

  • KeyPress(): Dipanggil pada acara di mana Anda ingin menekan tombol.
  • KeyRelease(): Dipanggil dalam acara untuk melepaskan tombol yang ditekan.
  • MouseMove(): Dipanggil jika Anda harus menggerakkan penunjuk tetikus di koordinat X dan Y.
  • MousePress(): Dipanggil saat Anda menekan tombol kiri mouse.
  • MouseMove(): Dipanggil saat melepas tombol mouse yang ditekan.

Q.19) Bagaimana menangani banyak jendela di Selenium?

Pegangan jendela adalah pengidentifikasi khusus yang memiliki alamat semua jendela. Ini berfungsi sebagai penunjuk ke jendela yang mengembalikan nilai dalam string.

  • get.windowhandle(): Ini mendapatkan pegangan jendela saat ini.
  • get.windowhandles(): Mendapatkan pegangan dari semua jendela yang dibuka.
  • beralih ke: Membantu dalam beralih di seluruh jendela.
  • set: Mengatur pegangan jendela, yang berbentuk string.
  • action: membantu untuk mengeksekusi tindakan tertentu di windows.

Q.20) Apa itu Pendengar?

Antarmuka yang mengubah perilaku sistem disebut pendengar di Selenium. Mereka memungkinkan penyesuaian log dan laporan. Mereka terdiri dari dua jenis: pendengar TestNG dan pendengar Webdriver.

Q.21) Jelaskan perintah Assert dan Verify

Assert: Asersi digunakan untuk membedakan antara hasil nyata dan hasil yang diharapkan.

Verifikasi: Eksekusi pengujian tidak dijeda tidak peduli apakah kondisi verifikasi benar atau salah.

Q.22) Bagaimana cara seseorang bernavigasi bolak-balik di halaman web?

Ini adalah salah satu pertanyaan wawancara selenium yang paling umum.

Anda dapat menggunakan metode di bawah ini untuk menavigasi bolak-balik.

driver.navigate.forward

driver.manage.navigate

driver.manage.back

driver.navigate.to("url")

Q.23) Bagaimana cara mengirim kunci ALT/SHIFT/CONTROL di Selenium WebDriver?

Biasanya menggunakan tombol seperti ALT, Shift, atau Control, kami menggabungkannya dengan tombol lain untuk mengaktifkan suatu fungsi. Kita tidak bisa mengkliknya saja. Kita perlu mendefinisikan dua metode untuk tujuan memegang kunci-kunci ini sementara kunci-kunci berikut adalah:

ditekan: keyUp(modifier_key) dan keyDown(modifier_key)

Parameter: Modifier_key (keys.ALT atau Keys.SHIFT atau Keys.CONTROL)

Tujuan: Tujuannya adalah melakukan penekanan tombol pengubah tanpa melepaskan kunci pengubah. Interaksi berikut mungkin menganggapnya terus ditekan.

Parameter: Modifier_key (keys.ALT atau Keys.SHIFT atau Keys.CONTROL)

Tujuan: Tujuannya adalah melakukan rilis kunci.

Jadi, dengan campuran kedua metode ini, kita dapat menangkap fungsi khusus dari kunci tertentu.

Q.24) Bagaimana cara mengambil screenshot di Selenium WebDriver?

Fungsi TakeScreenshot membantu mengambil tangkapan layar di Selenium Webdriver. Selanjutnya, Anda dapat menyimpan tangkapan layar dengan menggunakan metode getScreenshotAs().

File scrFile = ((TakeScreenshot)driver).getScreenshotAs(outputType.FILE);

Q. 25) Bisakah kita mengatur ukuran jendela browser menggunakan Selenium? Jika ya, bagaimana?

Ya. Jika Anda ingin memaksimalkan ukuran jendela browser, Anda perlu menggunakan kode

driver.manage().window().maximize();

Jika Anda ingin mengubah ukuran jendela saat ini ke dimensi tertentu, Anda harus menggunakan metode setSize(). Contohnya:

System.out.println(driver.manage().window().getSize());

Dimensi d = Dimensi baru (420.600);

driver.manage().window().setSize(d);

Jika Anda ingin mengatur jendela ke ukuran tertentu, Anda harus menggunakan metode window.resizeTo().

Contohnya:

((JavascriptExecutor)driver).executeScript("window.resizeTo(1024, 768);");

Q.26) Bagaimana cara memilih nilai dari dropdown? Bagaimana cara menangani dropdown?

Kemungkinan besar Anda akan ditanya tentang pertanyaan tentang dropdown dan pemilihan nilai karena sedikit rumit dan teknis juga.

Detail paling penting yang harus Anda ketahui adalah bahwa untuk bekerja dengan dropdown di Selenium, penting untuk menggunakan tag html: 'select'. Anda tidak dapat menangani dropdown tanpa menggunakan tag pilih. Lihat kode di bawah ini:

<pilih id="mySelect">

<option value="option1″>Kue</option>

<option value="option2″>Cokelat</option>

<option value="option3″> Permen</option>

</pilih>

Dalam kode di atas, tag 'pilih' HTML digunakan untuk mendefinisikan elemen tarik-turun. ID dari tag pilih di sini adalah pilihan saya. Kami telah memberikan tiga opsi di dropdown: Kue, Cokelat, dan Permen. Anda dapat melihat bahwa setiap pilihan ini memiliki atribut nilai terlampir. Misalnya, untuk Kue, nilainya adalah Opsi1, untuk Cokelat, Opsi2, dan untuk Permen, adalah Opsi3.

Untuk memilih nilai, Anda perlu:

Identifikasi elemen html 'pilih' dengan menggunakan findelement()

Contoh:

WebElement mySelectElement = driver.findElement(By.id(“mySelect”));

Pilih dropdown = new Select(mySelectElement);

Ambil opsi dari elemen dropdown itu.

Untuk memilih opsi dari dropdown itu, ada tiga cara:

dropdown.selectByVisibleText("Cokelat"); → Memilih opsi berdasarkan teks yang dilihat.

dropdown.selectByIndex("1"); → Memilih opsi menggunakan nomor Indeks opsi itu.

dropdown.selectByValue("pilihan2"); → Memilih opsi menggunakan nilai opsi itu.

Perhatikan bahwa dalam semua kasus, opsi "Cokelat" dipilih dari dropdown. Poin 1 dan 3 sudah jelas dan poin dua; kami mengatakan "1" karena pengindeksan dimulai dari nol.

Baca: Pertanyaan & Jawaban Wawancara Nagios Teratas

Q.27) Bagaimana Anda melompat ke tab baru yang terbuka setelah Anda mengklik tautan?

Saat mengklik tautan di halaman web, Anda perlu menggunakan perintah switchTo() untuk mengubah fokus Webdriver. Contoh: driver.switchTo().window();

di mana 'windowName' adalah nama jendela yang ingin Anda alihkan fokusnya.

Jika Anda tidak memiliki nama jendela, Anda dapat menggunakan perintah driver.getWindowHandle() untuk mengambil nama semua jendela yang dimulai oleh WebDriver. Ingat, itu tidak akan pernah memberi Anda nama-nama jendela yang tidak dijalankan oleh Webdriver.

Saat mendapatkan nama, Anda harus menjalankan melalui satu lingkaran untuk sampai ke jendela itu. Berikut ini contohnya:

Pegangan string= driver.getWindowHandle();

untuk (Pegangan string: driver.getWindowHandles())

{

driver.switchTo().window(pegangan);

}

Q.28) Bagaimana cara mengupload file di Selenium WebDriver?

Perintah element.send_keys(file path) digunakan untuk mengupload file di Selenium Webdriver. Tapi sebelum itu, Anda harus menggunakan tag html: 'input' di mana tipe atributnya adalah 'file'. Berikut adalah contoh untuk memahaminya dengan lebih baik:

<input type=”file” name=”my_uploaded_file” size=”50″ class="pole_plik">

elemen = driver.find_element_by_id(”my_uploaded_file”)

element.send_keys(“C:filesaya.txt”)

Q.29) Apa pentingnya testng.xml?

Jika Anda mewawancarai Selenium, Anda pasti tahu pentingnya pengujian. Selenium tidak mendukung pembuatan laporan serta manajemen kasus uji. Oleh karena itu, kami menggunakan kerangka kerja TestNG dengan Selenium. Ini jauh lebih maju dibandingkan dengan Junit, dan lebih mudah untuk menerapkan anotasi menjadikan kerangka kerja TestNG pilihan dengan Selenium Webdriver.

Anda dapat menentukan rangkaian pengujian dan pengelompokan kelas pengujian di TestNG, dengan mengambil perintah dari file testing.xml. Ini direpresentasikan dalam file XML dan bukan dalam rangkaian pengujian dalam kode sumber pengujian karena rangkaian tersebut adalah fitur eksekusi. Test suite adalah sekelompok atau kumpulan kasus uji.

File testng.xml harus berisi nama semua metode dan kelas yang ingin Anda jalankan sebagai bagian dari alur eksekusi tersebut.

Beberapa keuntungan menggunakan file testng.xml adalah:

  • Ini memungkinkan eksekusi beberapa kasus uji dari beberapa kelas
  • Ini memungkinkan eksekusi kasus uji dalam kelompok, di mana satu tes dapat dimiliki oleh beberapa kelompok.
  • Ini memungkinkan eksekusi paralel.

Q. 30) Jelaskan DataProviders di TestNG. Apakah mungkin untuk memanggil metode penyedia data tunggal untuk beberapa fungsi dan kelas?

Salah satu pertanyaan wawancara selenium tingkat lanjut. DataProvider adalah fitur TestNG, memungkinkan pengembang untuk menulis tes DataDriven. Ini mendukung pengujian DataDriven, yang berarti bahwa metode pengujian yang sama dapat berjalan beberapa kali dengan kumpulan data yang berbeda. DataProvider hanyalah sebuah metode untuk meneruskan parameter ke metode pengujian.

@DataProvider adalah metode untuk menyediakan data untuk metode pengujian. Metode beranotasi harus mengembalikan Object[] di mana setiap Object[] dapat dialokasikan ke daftar parameter metode pengujian.

Ya. Dimungkinkan untuk memanggil metode penyedia data tunggal untuk beberapa fungsi dan kelas. DataProvider yang sama dapat digunakan di beberapa fungsi dan kelas dengan mendeklarasikan DataProvider di kelas terpisah dan kemudian menggunakannya lagi di beberapa kelas.

Q. 31) Apa saja fitur dari TestNG?

  • Sebelum dan sesudah anotasi
  • Konfigurasi pengujian berbasis XML
  • Eksekusi multi-utas
  • Buka API
  • Pelaporan yang lebih baik
  • Pengujian Berdasarkan Data
  • Grup Dependen.
  • Metode dependen

Dapatkan Kursus Pengembangan Perangkat Lunak dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Menjelang akhir panduan pertanyaan dan jawaban wawancara Selenium , kami harap ini membantu Anda mendapatkan pekerjaan Anda. Pertanyaan wawancara selenium untuk yang berpengalaman lebih bersifat teknis, tetapi dengan persaingan ketat untuk mendapatkan pekerjaan, selalu baik untuk mempersiapkan diri dengan baik untuk wawancara.

Jika Anda tertarik untuk mempelajari Selenium, DevOps, dan segala sesuatu tentang pengembangan Full Stack, lihat Program PG Eksekutif IIIT-B & upGrad di Program Pengembangan Perangkat Lunak Stack Penuh.

Persiapkan Karir Masa Depan

Daftar Sekarang untuk Magister Rekayasa Perangkat Lunak