Selamat datang kembali.
Mari kita lakukan latihan kecil yang menyenangkan dengan meninjau kembali sepotong kode yang telah kita tulis
sebelumnya, ingat permainan acak tanpa menebak di mana kita harus menebak angka antara satu dan sepuluh jika saya menjalankan file ini, Anda
mengerti?
Itu meminta saya untuk menebak.
Jadi katakanlah satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan.
Dan akhirnya saya mendapatkan nomornya.
Anda adalah seorang jenius.
Jumlahnya sembilan.
Jadi bagaimana kita bisa menguji kode ini sekarang?
Satu hal yang akan Anda perhatikan di sini adalah bahwa kami tidak benar-benar memiliki fungsi.
Saya ingat ketika saya memberi tahu Anda tentang pemrograman fungsional dan bagaimana sebaiknya memecah kode
kita menjadi bagian-bagian kecil fungsi yang melakukan satu hal dan satu hal dengan sangat baik, terutama fungsi murni.
Nah, salah satu manfaat besar dengan mentalitas itu adalah Anda membuat kode yang sangat, sangat mudah untuk
diuji.
Alih-alih memiliki logika yang sangat rumit dalam pengujian kami, kami hanya dapat memberikan fungsi kami
input dan mengharapkan output dan inilah mengapa kami memiliki unit test.
Dan ide dari pengujian unit adalah bahwa kami menguji setiap bagian dari unit.
Tes unit ini adalah bagian kecil yang menguji fungsi-fungsi sederhana ini.
Jadi tantangan saya kepada Anda adalah menggunakan kode ini dan mencoba memecahnya menjadi fungsi-fungsi sederhana.
Sekarang.
Dalam kasus kami, saya ingin kami menguji bagian kode ini, yang merupakan bagian menebak tempat kami menerima
input.
Yang akan menjadi tebakan dan kemudian mengujinya terhadap beberapa jawaban acak yang kita miliki dan kita harus mengharapkan
semacam keluaran.
Jadi kita masukkan No.
Itu harus satu sampai 10, dan jika kita melakukannya dengan benar, kita harus mendapatkan stringnya.
Tapi kuncinya di sini adalah kita mungkin ingin memindahkannya ke fungsi yang bisa kita uji, kita bisa
mengabaikan dunia luar.
Dan pecahkan ini menjadi fungsi kecilnya sendiri.
Jadi jeda video di sini.
Mencobanya.
Anda harus melewati beberapa batu sandungan, tetapi itu akan benar-benar menguji pemahaman Anda tentang
tes.
Ha ha.
Lucu, itu dulu.
Jadi sebarkan videonya, coba, kalau tidak saya akan mulai dengan jawabannya.
Hal pertama yang ingin saya lakukan adalah mengatur pengujian saya lagi, saya akan mengimpor unit test dan saya
akan membuat class test main.
Atau sebut saja test script kali ini atau test game.
Saya akan mengatakan unit test dot test case.
Ini akan menjadi kasus pengujian kami dan kemudian di sini saya akan membuat, katakanlah, hanya sebuah tes sederhana.
Game atau masukan tes?
Menerima diri.
Dan untuk saat ini, saya hanya akan melewati ini karena kita tidak benar-benar melakukan apa-apa.
Akhirnya, saya akan mengatakan jika.
Nama, karena saya kemudian menjalankan unit test.
titik utama.
Jadi ini hanya pengaturan sederhana kami.
Jadi jika kita menjalankan ini sekarang, katakanlah Python tiga.
Uji oleh.
Anda melihat bahwa kami menjalankan satu tes.
Baiklah, jadi ini adalah pengaturan kita selanjutnya, yang ingin saya lakukan sebenarnya adalah mengeluarkan ini sehingga saya dapat menggunakannya
dalam file pengujian saya dengan mengekstraknya menjadi sebuah fungsi.
Jadi saya hanya akan mengatakan di atas sini.
Aku akan mendefinisikan tebakan kita.
Keuntungan atau sebut saja Ron.
Tebakan.
Itu akan menerima masukan.
Atau katakanlah sebuah tebakan, dan kemudian itu akan menjalankan kode ini, jadi mari kita lakukan itu.
aku akan mengambil.
Bagian kode ini.
Seperti ini.
Dan cukup tempel di sini.
Sekarang, tebakan yang salah juga akan membutuhkan variabel jawaban, jadi saya akan memberikan jawaban parameter
kedua.
Seperti ini, jadi sekarang aku bisa begitu saja di dalam sini.
Jalankan fungsi ini dengan para tamu dan jawab.
Seperti itu.
Jadi mari kita simpan di sini dan jalankan tes ini atau jalankan saja file yang sebenarnya untuk memastikan bahwa itu masih
berfungsi.
Dan kami mendapat sedikit lekukan di sana, jadi kami harus memastikan bahwa lekukan kami benar karena
ingat di Python, itu berarti sesuatu.
Baiklah, sekarang kami memiliki masalah, kami memiliki jeda di luar loop karena saat kami menggunakan break,
kata kunci dan saat kami berada di luar loop sekarang.
Jadi satu hal yang bisa kita lakukan adalah kita bisa mengatakan kembali ke sini.
Jadi mari kita jalankan lagi.
Dan terus menebak nama.
Atau nomor, dan begitulah.
Ini masih berfungsi, saya dapat menggunakan pengembalian di sini karena sumur ini akan berjalan dan kembali, tetapi sekarang kami
masih di dalam permainan.
Jadi mungkin kita bisa kembali saja.
Benar.
Dan katakan, jika.
Jalankan tebakan.
Memang benar, kita akan keluar dari ini.
Sekali lagi, mari kita mulai permainan kita.
Saya akan menghapus ini dan menjalankan permainan lagi.
Satu dua tiga empat.
Dan di sana Anda pergi.
Saya telah memasukkan tidak, saya seorang jenius, kami baru saja menyelesaikan permainan.
Mari kita buat ini sedikit lebih kecil, supaya Anda bisa melihatnya.
Jadi kami menjalankan tebakan kami, saya telah sedikit memodifikasi kodenya.
Tetapi kuncinya adalah saya telah mengekstraksi unit fungsionalitas sehingga saya dapat menguji sesuatu seperti run
guess.
Jadi sepertinya saya telah memodifikasi kode kami, tetapi kodenya masih berfungsi.
Jadi sekarang mari kita mulai menguji fungsi kita yang paling salah.
Ayo pergi ke sini.
Dan mulai mengimpor skrip kita.
Dan di sini, lakukan beberapa hal terlebih dahulu, saya ingin jawabannya, katakanlah, sama dengan lima.
Dan tebakannya akan sama dengan lima, jadi kami ingin memastikan bahwa jika tamu
dan jawaban cocok dengan itu, tamu yang salah melewati pernyataan if dan mencetak, Anda jenius atau dalam kasus
kami, mengembalikan true .
Jadi katakanlah otodidak menegaskan.
Setara.
Skrip itu atau sebenarnya pertama kali, mari kita jalankan, jadi biar hasilnya sama dengan
skrip DOT.
Apa itu, Rodrguez?
Jalankan tebakan dan berikan jawaban dan tebakannya.
Dan kami mengharapkan hasilnya.
Kembalikan true, jadi kami hanya bisa mengatakan menegaskan benar itu.
Hasilnya benar jika saya sekarang menjalankan ini.
Oh, kami benar-benar memulai permainan, jadi bagaimana kami bisa memperbaikinya?
Nah, kita bisa menutup ini dan benar-benar menambahkan nama if main.
Disini.
Jadi di bawah sini.
Kami akan berkata, hei, jalankan ini hanya jika ini adalah file utama yang dijalankan begitu saja.
Jika saya kembali untuk menguji di sini dan menjalankan ini lagi.
Baiklah, sekarang berhasil, tetapi saya mendapatkan pernyataan bahwa objek permainan uji udara tidak memiliki atribut pernyataan benar karena,
yah, saya.
Salah mengeja itu.
Mari kita coba lagi.
Baiklah, sepertinya satu tes berjalan dan semuanya baik-baik saja.
Kami juga melihat bahwa itu dicetak Anda adalah seorang jenius, sangat, sangat bagus.
Omong-omong, saya menunjukkan cara pengujian ini karena seperti inilah skenario kehidupan nyata.
Anda terus merusak sesuatu, Anda terus membuat kesalahan, dan kemudian Anda mencoba dan memperbaikinya serta memperbaiki kode Anda.
Dan Anda dapat melihat kode kami sudah terlihat lebih baik dan lebih baik hanya dengan menjalankan tes ini.
Oke, apa lagi yang bisa kita lakukan, katakanlah, di sini?
Bahwa kita akan menyalin ini dan agar semuanya lebih pendek, saya hanya akan langsung memasukkan parameter
di sini.
Seperti itu.
Katakanlah masukan rasa, katakanlah salah.
Atau.
Salah menebak.
Jadi katakanlah jawabannya adalah lima dan saya kira nol.
Jadi kami ingin menegaskan bahwa ini akan sama dengan salah.
Jadi jika saya menjalankan ini, dua tes lulus, itu luar biasa.
Apa lagi yang bisa kita uji di sini?
Baiklah, baiklah, kami ingin menguji bahwa jika tebakannya tidak antara nol dan 10 atau antara satu dan 10, dalam hal
ini, kami ingin mencetak, hei, bozo, saya katakan satu banding sepuluh.
Jadi sekali lagi, saya bisa menguji.
Itu jika tebakan saya salah.
Tidak.
Katakanlah jawabannya lima, tapi saya beri 11.
Kami ingin menegaskan.
Nah, saat ini, kami sedang mencetak dan tidak melakukan apa-apa, jadi mungkin kami harus mengembalikan false hanya untuk mendapatkan konsistensi
di sini.
Sekali lagi, jika saya melakukan itu dan saya lari.
Ini dia.
Tiga ujian telah berlalu, itu bagus, dan masih banyak lagi ujian yang bisa kita tulis.
Mungkin mari kita lakukan satu tes lagi, yaitu menguji.
Bagaimana jika inputnya berupa string?
Jika saya menjalankan ini.
Dan pastikan itu salah.
Ketik di sini, pastikan namanya berbeda.
Dan saya menjalankan empat tes.
Karena ini tidak akan berlalu dan akan kembali salah.
Sekarang, ada lebih banyak hal yang dapat kita lakukan di sini, tetapi Anda dapat melihat kekuatan tes sekarang jika Anda memiliki tes
yang berbeda dari saya.
Tidak apa-apa, semuanya.
Kasus uji berbeda.
Inti dari pengujian adalah sederhana saja.
Lihatlah kode kami dan lihat bagaimana kami dapat memperbaikinya, bagaimana kami dapat memecahkan kode kami, bagaimana kami dapat menyederhanakan
kode kami dengan memecahnya menjadi unit yang lebih kecil, unit yang lebih kecil yang dapat diuji dan memperbaiki beberapa kesalahan yang mungkin
tidak kami duga tentang.
Sekarang, ada banyak hal lagi yang bisa kita lakukan.
Tetapi Anda perhatikan di sini bagaimana idenya adalah mengerjakan bagian-bagian kecil sekaligus diuji.
Dan mungkin selanjutnya, kita dapat melihat bagian kode ini atau mungkin mencoba dan menerima bagian dari kode tersebut.
Dan inilah masalahnya, ketika Anda bekerja untuk sebuah perusahaan, saya berpendapat bahwa ada banyak sekali tes yang dapat
Anda lakukan.
Anda dapat memiliki ratusan baris di sini untuk menguji kode Anda menjadi bit.
Tetapi hanya karena Anda menguji sebanyak mungkin tidak benar-benar membuat pengujian Anda bagus.
Seperti yang saya katakan, ada banyak sekali tes yang bisa Anda tulis.
Idenya adalah untuk menulis tes berkualitas baik yang mencakup sebagian besar kasus Anda, tetapi pada akhirnya Anda akan mendapatkan hasil yang
semakin berkurang di mana Anda harus memiliki trade off antara menulis kode dan menulis tes.
Dan terkadang, tergantung pada apa yang dibutuhkan pekerjaan itu, Anda mungkin harus lebih fokus pada tes dan kurang fokus
pada kode.
Atau terkadang mungkin Anda perlu bergerak cepat dan tidak punya waktu untuk menulis tes.
Dan sekali lagi, tergantung pada kebutuhan bisnis, mungkin juga demikian.
Tetapi dengan bagian ini, saya harap Anda memahami beberapa prinsip pengujian berikut dalam pengembangan perangkat lunak.
Artinya, bug akan selalu muncul dalam kode kita.
Dan kita dapat menggunakan Lintang untuk membantu kita dalam hal ini, tetapi salah satu cara terbaik untuk memastikan bahwa kode kita berfungsi
dengan baik adalah dengan mengujinya.
Dan semakin banyak tes yang biasanya kita lakukan, semakin stabil kode kita.
Saya akan lihat di yang berikutnya, bye bye.