Kembali ke sekolah: cara melatih penguji manual untuk menangani ujian automatik

Empat daripada lima pemohon QA ingin belajar cara bekerja dengan ujian automatik. Tidak semua syarikat boleh memenuhi keinginan penguji manual sedemikian semasa waktu bekerja. Wrike mengadakan sekolah automasi untuk pekerja dan merealisasikan hasrat ini untuk ramai orang. Saya menyertai sekolah ini tepat sebagai pelajar QA.

Saya belajar cara bekerja dengan Selenium dan kini menyokong beberapa autoujian secara bebas tanpa bantuan luar. Dan, berdasarkan hasil pengalaman bersama kami dan kesimpulan peribadi saya, saya akan cuba mendapatkan formula untuk sekolah automasi yang paling ideal.

Pengalaman Wrike dalam penganjuran sekolah

Apabila keperluan untuk sekolah automasi menjadi jelas, organisasinya jatuh kepada Stas Davydov, peneraju teknikal automasi. Siapa lagi selain dia boleh menjelaskan mengapa mereka membuat inisiatif ini, sama ada mereka mencapai keputusan dan sama ada mereka menyesali masa yang diluangkan? Mari beri dia lantai:

β€” Pada tahun 2016, kami menulis rangka kerja baharu untuk autotest dan menjadikannya mudah untuk menulis ujian: langkah biasa muncul, struktur menjadi lebih mudah difahami. Kami menghasilkan idea: kami perlu melibatkan semua orang yang ingin menulis ujian baharu, dan untuk memudahkan pemahaman, kami mencipta satu siri kuliah. Kami secara kolektif membuat rancangan topik, setiap pensyarah masa depan mengambil satu untuk diri mereka sendiri dan menyediakan laporan mengenainya.

- Apakah kesukaran yang dihadapi oleh pelajar?

- Terutamanya, sudah tentu, seni bina. Terdapat banyak soalan mengenai struktur ujian kami. Dalam maklum balas, banyak yang ditulis mengenai topik ini dan kami terpaksa mengadakan kuliah tambahan untuk menerangkan dengan lebih terperinci.

- Adakah sekolah membuahkan hasil?

- Ya sememangnya. Terima kasih kepadanya, ramai orang terlibat dalam ujian bertulis, dan, secara purata, di hospital, semua orang mula lebih memahami apa itu autoujian, cara ia ditulis dan bagaimana ia dilancarkan. Beban pada jurutera automasi juga telah berkurangan: kami kini menerima lebih sedikit permintaan untuk bantuan menganalisis ujian, memandangkan penguji dan pembangun telah mula mengatasinya sendiri dalam hampir semua situasi. Nah, terdapat beberapa kelebihan dalaman untuk jabatan: kami memperoleh pengalaman dalam pembentangan dan kuliah, terima kasih kepada beberapa jurutera automasi telah berjaya membuat pembentangan di persidangan, dan juga menerima set video dan pembentangan yang hebat untuk pendatang baharu.

Bagi pihak saya sendiri, saya akan menambah bahawa komunikasi antara jabatan kami telah dipermudahkan ke tahap yang sangat mudah. Sebagai contoh, sekarang saya hampir tidak perlu memikirkan kes yang mana dan pada tahap atomicity yang mana untuk diautomasikan. Akibatnya, semua pihak yang berminat menjaga sepenuhnya liputan ujian, yang sentiasa berkembang. Tiada siapa yang menuntut sesuatu yang mustahil daripada orang lain.

Secara umum, kesan ke atas kerja pasukan pastinya positif. Mungkin rakan sekerja yang membaca artikel ini juga terfikir untuk melakukan sesuatu yang serupa? Nasihatnya akan mudah: adalah berbaloi jika ujian automatik menjadi keutamaan untuk anda. Seterusnya, kita akan bercakap tentang soalan yang lebih kompleks: bagaimana untuk mengatur semua ini dengan betul yang mungkin, supaya kos semua pihak adalah minimum dan output adalah maksimum.

Petua untuk mengatur

Sekolah itu berguna, tetapi, seperti yang diakui oleh Stas, terdapat beberapa kesulitan, kerana itu perlu untuk mengatur kuliah tambahan. Dan sebagai pelajar baru-baru ini yang membandingkan diri saya-dalam-kejahilan dan diri saya-sekarang saya merumuskan langkah-langkah berikut untuk mencipta, pada pendapat saya, cara yang ideal untuk mengajar penguji memahami ujian automatik.

Langkah 0. Cipta kamus

Sudah tentu, langkah ini diperlukan bukan sahaja untuk QA. Walau bagaimanapun, saya ingin menyatakannya secara eksplisit: pangkalan kod automasi mesti disimpan dalam bentuk yang boleh dibaca. Bahasa pengaturcaraan - tidak kurang bahasa, dan dari sini anda boleh mula menyelam.

Kembali ke sekolah: cara melatih penguji manual untuk menangani ujian automatik

Berikut ialah tangkapan skrin paparan tugas dengan nama elemen. Bayangkan anda sedang menguji paparan tugas sebagai kotak hitam dan tidak pernah melihat Selenium dalam hidup anda. Apakah fungsi kod ini?

Kembali ke sekolah: cara melatih penguji manual untuk menangani ujian automatik

(Spoiler - tugas dipadamkan melalui rehat bagi pihak pentadbir, dan kemudian kami melihat bahawa terdapat rekod ini dalam strim.)

Langkah ini sahaja mendekatkan bahasa QAA dan QA. Lebih mudah bagi pasukan automasi untuk menerangkan hasil larian; penguji manual perlu menghabiskan lebih sedikit usaha untuk mencipta kes: mereka boleh dibuat kurang terperinci. Namun, semua orang memahami antara satu sama lain. Kami menerima kemenangan sebelum latihan sebenar bermula.

Langkah 1. Ulangi frasa

Mari kita teruskan selari dengan bahasa. Apabila kita belajar bercakap sebagai kanak-kanak, kita tidak bermula dari etimologi dan semantik. Kami mengulangi "ibu", "beli mainan", tetapi jangan segera pergi ke akar Proto-Indo-Eropah perkataan ini. Jadi di sini: tidak ada gunanya menyelami kedalaman ciri teknikal autotest tanpa cuba menulis sesuatu yang berkesan.
Kedengarannya agak bertentangan dengan intuisi, tetapi ia berkesan.

Dalam pelajaran pertama, ia patut diberi asas tentang cara menulis autotest secara langsung. Kami membantu menyediakan persekitaran pembangunan (dalam kes saya, Intellij IDEA), terangkan peraturan bahasa minimum yang diperlukan untuk menulis kaedah lain dalam kelas sedia ada menggunakan langkah sedia ada. Kami menulis satu atau dua ujian dengan mereka dan memberi mereka kerja rumah, yang saya akan format seperti ini: cawangan bercabang dari tuan, tetapi beberapa ujian telah dikeluarkan daripadanya. Hanya tinggal penerangan mereka. Kami meminta penguji untuk memulihkan ujian ini (tentu saja bukan melalui show diff).

Akibatnya, orang yang mendengar dan melakukan segala-galanya akan dapat:

  1. belajar untuk bekerja dengan antara muka persekitaran pembangunan: mencipta cawangan, kekunci pintas, komit dan tolak;
  2. menguasai asas struktur bahasa dan kelas: di mana untuk memasukkan suntikan dan di mana untuk mengimport, mengapa anotasi diperlukan, dan jenis simbol yang terdapat di sana, selain langkah;
  3. memahami perbezaan antara tindakan, tunggu dan semak, di mana untuk menggunakan apa;
  4. perhatikan perbezaan antara autoujian dan pemeriksaan manual: dalam autoujian anda boleh menarik satu atau pengendali lain dan bukannya melakukan tindakan melalui antara muka. Sebagai contoh, hantar ulasan terus ke bahagian belakang dan bukannya membuka paparan tugas, memilih input, menaip teks dan mengklik butang Hantar;
  5. merangka soalan yang akan dijawab pada langkah seterusnya.

Perkara terakhir adalah sangat penting. Jawapan ini dengan mudah boleh diberikan lebih awal daripada masa, tetapi ia adalah prinsip pengajaran yang penting bahawa jawapan tanpa soalan yang dirumuskan tidak diingat dan tidak digunakan apabila akhirnya diperlukan.

Alangkah baiknya jika pada masa ini seorang jurutera automasi daripada pasukan QA memberikannya tugasan dengan menulis beberapa ujian dalam pertempuran dan membenarkannya menyerahkan diri kepada cawangannya.

Apa yang tidak boleh diberikan:

  1. pengetahuan yang lebih mendalam tentang kefungsian persekitaran pembangunan dan bahasa pengaturcaraan itu sendiri, yang hanya diperlukan apabila bekerja dengan cawangan secara bebas. Ia tidak akan diingati, anda perlu menerangkannya dua atau tiga kali, tetapi kami menghargai masa jurutera automasi, bukan? Contoh: menyelesaikan konflik, menambah fail ke git, mencipta kelas dari awal, bekerja dengan kebergantungan;
  2. semua yang berkaitan dengan xpath. Serius. Anda perlu membincangkannya secara berasingan, sekali dan sangat tertumpu.

Langkah 2. Melihat dengan lebih dekat tatabahasa

Mari kita ingat tangkapan skrin paparan tugas dari langkah #0. Kami mempunyai langkah yang dipanggil checkCommentWithTextExists. Penguji kami sudah memahami apa yang dilakukan oleh langkah ini dan kami boleh melihat ke dalam langkah dan menguraikannya sedikit.

Dan di dalam kita mempunyai yang berikut:

onCommentBlock(userName).comment(expectedText).should(displayed());

Di mana onCommentBlock berada

onCommonStreamPanel().commentBlock(userName);

Sekarang kita belajar untuk mengatakan bukan "beli mainan," tetapi "beli mainan dari kedai Detsky Mir, yang terletak di kabinet biru di rak ketiga dari atas." Adalah perlu untuk menjelaskan bahawa kita menunjuk kepada elemen secara berurutan, daripada elemen yang lebih besar (strim -> blok dengan ulasan daripada orang tertentu -> bahagian blok ini di mana teks yang ditentukan terletak).

Tidak, masih belum masanya untuk bercakap tentang xpath. Sebut sahaja secara ringkas bahawa semua arahan ini diterangkan oleh mereka dan warisan melalui mereka. Tetapi kita perlu bercakap tentang semua penjodoh dan pelayan ini; mereka berkaitan secara khusus dengan langkah ini dan perlu untuk memahami apa yang berlaku. Tetapi jangan terlalu membebankan: pelajar anda boleh mengkaji pernyataan yang lebih kompleks sendiri kemudian. Kemungkinan besar, sepatutnya, tungguSehingga, dipaparkan ();, wujud ();, tidak (); sepatutnya mencukupi.

Kerja rumah adalah jelas: cawangan di mana kandungan beberapa langkah yang diperlukan untuk beberapa ujian telah dialih keluar. Biarkan penguji memulihkannya dan jadikan larian menjadi hijau semula.

Selain itu, jika pasukan ujian bukan sahaja mempunyai ciri baharu dalam kerjanya, tetapi juga beberapa pembetulan pepijat, anda boleh memintanya untuk segera menulis ujian untuk pepijat ini dan melepaskannya. Kemungkinan besar, semua elemen telah diterangkan; hanya beberapa langkah mungkin hilang. Ini akan menjadi senaman yang sempurna.

Langkah 3. Rendaman penuh

Selengkap mungkin untuk penguji yang akan terus melaksanakan tugas langsungnya. Akhirnya, kita perlu bercakap tentang xpath.

Mula-mula, mari kita jelaskan bahawa semua onCommentBlock dan ulasan ini diterangkan oleh mereka.

Kembali ke sekolah: cara melatih penguji manual untuk menangani ujian automatik

Jumlah:

"//div[contains(@class, β€˜stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

Susunan cerita adalah sangat penting. Mula-mula, kami mengambil mana-mana xpath sedia ada dan menunjukkan cara tab elemen mengandungi satu dan hanya satu elemen. Seterusnya, kita akan bercakap tentang struktur: apabila anda perlu menggunakan WebElement, dan apabila anda perlu membuat fail berasingan untuk elemen baharu. Ini akan membolehkan anda memahami warisan dengan lebih baik.

Ia mesti dinyatakan dengan jelas bahawa satu elemen ialah keseluruhan paparan tugas, ia mengandungi elemen kanak-kanak - keseluruhan aliran, yang mengandungi elemen kanak-kanak - ulasan berasingan, dsb. Elemen kanak-kanak berada di dalam elemen induk pada halaman dan dalam struktur rangka kerja autotest.

Pada ketika ini, penonton sepatutnya memahami dengan jelas cara mereka diwarisi dan perkara yang boleh dimasukkan selepas titik di onCommentBlock. Pada ketika ini, kami menerangkan semua pengendali: /, //, ., [] dan seterusnya. Kami menambah pengetahuan tentang penggunaan ke dalam beban @class dan perkara lain yang perlu.

Kembali ke sekolah: cara melatih penguji manual untuk menangani ujian automatik

Pelajar harus memahami cara menterjemah xpath dengan cara ini. Untuk menyatukan - betul, kerja rumah. Kami memadamkan perihalan elemen, biarkan mereka memulihkan kerja ujian.

Mengapa laluan khusus ini?

Kita tidak seharusnya membebankan seseorang yang mempunyai pengetahuan yang kompleks, tetapi kita mesti menjelaskan semuanya sekaligus, dan ini adalah dilema yang sukar. Laluan ini akan membolehkan kita membuat pendengar bertanya dahulu dan tidak memahami sesuatu dan menjawabnya pada saat berikutnya. Jika anda bercakap tentang keseluruhan seni bina, maka pada masa topik langkah atau xpath dianalisis, bahagian yang paling penting daripadanya akan dilupakan kerana ketidakfahaman mereka.

Walau bagaimanapun, sesetengah daripada anda mungkin akan dapat berkongsi pengalaman anda tentang cara proses itu boleh dioptimumkan dengan lebih banyak lagi. Saya akan gembira membaca cadangan yang sama dalam komen!

Sumber: www.habr.com

Tambah komen