Bukan dari awal
Anda tahu banyak alat pengujian yang dapat:
- Dapatkan langkah-langkah dalam bahasa Gherkin langsung dari apa yang diminta pengguna?
- Apakah Anda ingin membuat instruksi video secara otomatis, dengan subtitle, Jack hitam dan Elena ?)
- Buat file * .fitur dalam bahasa Inggris di antarmuka Rumania, untuk pengguna yang berbicara bahasa Italia?
Ini tersedia dan jelas (dengan gambar) dalam artikel ini, jangan beralih ...
Entri
Artikel ini adalah tinjauan umum alat pengujian aplikasi 1C yang dibuat di perut OpenSource yang disebut otomatisasi vanessa . Proyek ini merupakan kelanjutan langsung dari proyek perilaku vanessa, yang dikenal luas di kalangan sempit (garpu dibuat pada versi 1.1.131). Ngomong-ngomong, ada garpu lain.
Konteks
Tidak akan baik untuk berpikir bahwa setiap pembaca artikel ini di habr tahu 1C, semua sama, menipu bukanlah pilihan. Oleh karena itu, saya tidak akan berani melanjutkan tanpa membentuk pemahaman pembaca tentang platform 1C dan kemampuannya yang digunakan dalam otomasi vanessa (selanjutnya disebut va atau Vanessa ).
Jadi, setelah menginstal platform 1C, Anda harus menjalankannya dalam mode Perusahaan atau dalam mode Konfigurasi .

Konfigurasi sedang dikembangkan di konfigurator, dan pengguna di perusahaan bekerja dengan konfigurasi ini: mereka membuat, mengedit, dan menyimpan semua jenis direktori dan dokumen seperti itu, sehingga mengisi database, dan kemudian menghasilkan laporan dan lagi: membuat, mengedit, dan menyimpan ... dan seterusnya dalam satu lingkaran. Namun, skenario yang biasa bagi pengembang untuk menggunakan platform, secara eksternal, tidak jauh berbeda dari pengguna:
mereka memulai konfigurasi yang diperlukan dalam mode konfigurator , dan kemudian dalam siklus β mengembangkan atau memodifikasi sesuatu β (kembali) mulai dari konfigurator 1C dalam mode perusahaan dan periksa dengan tangan mereka sendiri apakah mereka telah dikembangkan atau diselesaikan.
Situasi ini disimpan oleh fungsionalitas platform yang disebut Pengujian Otomatis , yang memungkinkan untuk merekam, mereproduksi, dan memverifikasi tindakan pengguna. Bagaimana fungsi ini mengubah skenario penggunaan oleh pengembang platform, kami akan mempertimbangkan contoh, TETAPI pertama tentang pemrosesan eksternal .
Objek konfigurasi yang diterapkan (alias Metadata , alias "Objek Konfigurasi" , dia adalah Ella Katznelbogen, dia adalah Valentina Paniyad )
menggambarkan area subjek dan nama-nama benda ini berbicara sendiri.

"Dokumen" mencerminkan transaksi bisnis, misalnya, penerimaan barang. "Direktori" diperlukan untuk memasukkan, misalnya, nama rekanan 1 kali dan kemudian memilihnya, dan tidak memasukkannya lagi setiap kali. Data disimpan di "Register" dan tabel virtual dibangun di atasnya untuk melakukan perhitungan yang rumit dan menghasilkan "Laporan" . Jadi kami sampai di Pemrosesan , dengan bantuan mereka, informasi basis data diproses (misalnya, sebulan ditutup dalam akuntansi atau berbagai pertukaran antara basis data informasi), tetapi kami tertarik pada kemungkinan mengunggahnya ke pemrosesan eksternal .

Konfigurasi yang disediakan oleh 1C didukung (tidak mungkin untuk mengubahnya agar tidak kehilangan pembaruan otomatis), dan pemrosesan eksternal memungkinkan untuk melakukan berbagai manipulasi data tanpa menghapus dukungan, dan tentu saja - untuk menguji!
EkstensiSetelah rilis versi platform 8.3.10, menjadi mungkin, untuk tujuan pengujian, untuk digunakan, selain untuk pemrosesan eksternal, juga ekstensi (itu adalah tambalan).
Dengan tingkat penyederhanaan tertentu, dapat dikatakan bahwa secara teknis, pemrosesan eksternal 1C adalah file dengan ekstensi epf yang dapat Anda buka di konfigurator, Anda dapat membuat banyak formulir β menempatkan kontrol pada formulir dan memprogram beberapa fungsi dalam modul dari formulir ini. Pemrosesan eksternal juga memiliki modul "umum" (alias "Modul Objek" ) dan tata letak, TETAPI ini adalah cerita yang sama sekali berbeda, dan kami kembali ke pengujian.
Untuk menggunakan fungsionalitas Pengujian Otomatis , Anda harus menjalankan dua contoh perusahaan 1C, yang pertama dengan kunci manajer pengujian (/ TESTMANAGER), yang kedua dengan kunci klien uji (/ TESTCLIENT) dan membuat koneksi antara manajer pengujian dan klien. Dengan demikian, skenario penggunaan oleh pengembang platform menjadi ini:

Dari konfigurator, mulai 1C dalam mode perusahaan dengan kunci manajer pengujian β di perusahaan, buka va dan gunakan untuk meluncurkan instance lain
1C dalam mode perusahaan dengan kunci klien uji. Koneksi va antara manajer dan klien uji dibuat secara otomatis setelah klien uji dimulai. Klien pengujian dapat berupa klien tipis atau klien web.
Total: 1C menulis Selenium-nya, yang dibangun di dalam platform 1C: Enterprise. Dan Selenium dari 1C ini memiliki kelebihan. Misalnya, kontrol apa pun (kontrol alias) pada formulir selalu memiliki nama unik, yang dalam 99,99% kasus diketahui sebelumnya. Dengan demikian, tidak ada masalah dengan pelacak, dan untuk menemukan kontrol, cukup tulis:
= .(,,);
Perbaiki materi dengan contoh
Anda harus mengembangkan konfigurasi untuk memperhitungkan penjualan barang dengan pencetakan faktur.
Penampil yang penuh perhatian bisa memperhatikan desain
<>
dan Anda tidak salah, ya - Vanessa menggunakan dialek gherkin-nya, yang memiliki kondisi dan siklus. Saya pikir ide untuk menambahkan kondisi dan siklus ke gherkin lahir sesuatu seperti ini:
Beberapa anggota komunitas OpenSource mengkritik keputusan ini, tetapi jika kepercayaan dipercayai , mereka menyetujui hal berikut - "keterbacaan manusia" fitur tidak merusak fungsi ini, dan semua orang memutuskan apakah akan menggunakannya atau tidak.
Tentang turbo gherkin direncanakan artikel terpisah, tetap disini.
"BDD pada 1C" dan sedikit sejarah
va , seperti yang kita lihat sekarang, dilihat secara berbeda oleh penciptanya . Melakukan mentimun + selenium yang sama pada 1C diputuskan hanya setelah mereka menguji opsi yang paling jelas dan murah. Pada titik tertentu, menjadi jelas bahwa jika Anda menggunakan mentimun dan selenium, maka alat-alat ini harus diselesaikan untuk mendapatkan fungsionalitas yang diperlukan untuk menguji solusi bisnis aplikasi 1C. Penjajaran ini, dalam kerangka open source dan realitas dunia 1C, rumit dan memperpanjang pengembangan proyek pada waktunya. Akibatnya, diputuskan untuk melakukan hanya dengan platform 1C: Enterprise.
Misalnya, dengan penjualan barang, kami melihat cara kerja va , sekarang mari kita lihat bagaimana penerapannya.
Langkah periksa
Video "Pengujian" menunjukkan va , di mana file fitur (selanjutnya disebut sebagai fitur ) sudah diunggah dan pohon langkah terbentuk. Dengan mengklik tombol "Jalankan skrip" , pemrosesan setiap langkah dimulai, mis. panggil prosedur verifikasi langkah. Tentang di mana prosedur ini berada, saya akan menjelaskan dengan contoh.
Misalkan ada fitur dengan skrip:
: "" 10 "" 300 "" 3000
Untuk menerapkan verifikasi langkah-langkah skenario ini, Anda perlu mendapatkan pemrosesan eksternal yang sesuai dengan fitur. Dalam va, ini dilakukan secara otomatis, dengan tombol yang sesuai.

Akibatnya, direktori step_definitions
akan dibuat di direktori yang sama dengan fitur, dan pemrosesan eksternal akan dibuat di dalamnya, dengan nama yang sama dengan fitur.
..\.feature ..\step_definitions\.epf
Langkah prosedur verifikasi akan ditempatkan di modul formulir pemrosesan.

Selanjutnya, ketika memuat fitur, va akan mencari dan membuat serial proses eksternal untuk mengetahui prosedur untuk memeriksa langkah mana di dalamnya (proses eksternal) diimplementasikan. Prosedur berikut bertanggung jawab untuk ini:

Urutan pencarian untuk memverifikasi langkah-langkah ini adalah sebagai berikut:
1. , feature 2. , , 3. ,

Jika skrip ditambahkan / dihapus / diubah, pemrosesan eksternal dari fitur yang sesuai dapat diisi ulang dengan tombol yang sama "Buat dan perbarui template pemrosesan".
Setelah menerapkan pemeriksaan langkah sekali, ini dapat digunakan dalam fitur lain ( penggunaan kembali langkah-langkah ). Sebenarnya, dalam hal ini, dalam modul formulir pemrosesan eksternal, kita melihat dua prosedur verifikasi skrip dalam tiga langkah.
Beberapa langkah dari udara dan WYCIWYG
Sedikit tentang pengujian Fungsionalitas Otomatis dari platform 1C. Biarkan saya mengingatkan Anda, Pengujian otomatis memungkinkan Anda untuk merekam, memutar, dan memverifikasi tindakan pengguna yang direproduksi. Faktanya, itu semua klien pengujian dan manajer pengujian yang sama , hanya di sisi klien catatan log tindakan pengguna dihidupkan.

Akibatnya, kami memiliki file xml dengan deskripsi tindakan pengguna:
<?xml version="1.0" encoding="UTF-8"?> <uilog xmlns:d1p1="http://v8.1c.ru/8.3/uilog"> <ClientApplicationWindow isMain="true"> <CommandInterface> <CommandInterfaceGroup title=" "> <CommandInterfaceButton title=" "> <click/> </CommandInterfaceButton> </CommandInterfaceGroup> </CommandInterface> </ClientApplicationWindow> <ClientApplicationWindow caption=" "> <Form title=" "> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=" ()"> <Form title=" ()"> <FormTable name="" title=""> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> <FormField name="" title=""> <closeDropList/> <executeChoiceFromDropList presentation=""/> </FormField> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=""> <Form title=""> <FormTable name="" title=""> <gotoRow direction="down"> <Field title="" cellText="000000001"/> <Field title="" cellText=""/> </gotoRow> <choose/> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=" () *"> <Form title=" () *"> <FormTable name="" title=""> <endEditRow cancel="false"/> </FormTable> <FormGroup name="" title=" "> <FormButton name="" title=" "> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> </uilog>
Sulit untuk mengatakan apakah ide untuk membuat fungsi mengubah aksi pengguna menjadi langkah skrip terletak di permukaan, TETAPI yang pertama menebak dan mengimplementasikan ide ini adalah Leonid Pautov ( pr-mex ). Jumlah pekerjaan yang dilakukan dapat diperkirakan berdasarkan isi dan ukuran perpustakaan , karena selain menerjemahkan tindakan pengguna yang masuk ke gherkin, perlu untuk menerapkan prosedur dan prosedur pelaksanaan untuk memeriksa langkah-langkah.
Jadi, untuk mendapatkan skrip siap pakai "kehabisan udara" sudah cukup untuk memungkinkan perekaman tindakan pengguna di manajer pengujian.

Di klien pengujian, mereproduksi tindakan pengguna, misalnya, fungsionalitas yang perlu diperbaiki atau kesalahan yang perlu diperbaiki. Nah, selesaikan rekaman aksi pengguna. Ini mengimplementasikan pendekatan pengembangan tes "WYCIWYG" (Apa yang Anda klik adalah apa yang Anda dapatkan).

Langkah-langkah, misalnya, memeriksa hasil tindakan pengguna dalam skrip dapat ditambahkan dari perpustakaan.

Detail langkah-langkah dan skenario ekspor
Sayangnya, pada kenyataannya, skrip terdiri dari banyak langkah, lebih dari pada tangkapan layar berikut.

Setidaknya ada dua opsi untuk memfasilitasi persepsi skenario semacam itu.
Pertama, dengan bantuan tabulasi, βgerakkanβ langkah-langkah yang perlu dikelompokkan dan beri mereka judul mnemonik.

Kedua, buat naskahnya ringkas dan serbaguna dan ekspor. Saya pikir saya tidak bisa menggambarkan fungsi ini lebih baik daripada Elena di video "Menggunakan tag pohon dan langkah-langkah dari udara" dan "Mengirim parameter ke skrip" .
Data video ( 1 , 2 ) juga dibuat dari skrip di Gherkin dan menggunakan mesin "AutoVideoInstructions" dikonversi ke format mp4 dalam satu klik.
Ya, Vanessa dapat membuat video tentang cara kerja Vanessa )
AutoVideo
Instruksi video otomatis adalah topik dari artikel yang terpisah (ini dia ), saya hanya bisa mengatakan sedikit latar belakang.
Momen persiapan basis informasi, reproduksi tindakan pengguna, dan verifikasi tindakan ini, mis. eksekusi skrip
instruksi yang cukup jelas jika Anda memperlambat langkah.

Menyimpan pengguna untuk menonton eksekusi skrip (dari mana humor polisi ini berasal?) Bukan pilihan, tetapi penulis tidak berhenti menerapkan fungsi membuat file html dengan langkah-langkah dan tangkapan layar yang sesuai. Dia tidak terhenti oleh fakta bahwa ketika memutar kembali tindakan pengguna, kursor mouse tidak ditampilkan dan tidak ada cara untuk memilih area arbitrer pada formulir, jadi dia menulis utilitas yang sesuai. Selanjutnya, atas permintaan pengguna, akting suara ditambahkan ( Elena ), yang dengan pekerjaan utama pada pembentukan video dengan subtitle dan latar belakang musik asli, menghasilkan jumlah pekerjaan yang layak, tetapi instruksi auto-video ada di sana. Saat ini, petunjuk video otomatis dioptimalkan secara signifikan, dalam hal sinkronisasi akting suara dan tindakan pada video.
Beberapa statistik yang membosankan
va mendukung:
- Versi 1C: Platform perusahaan mulai dari 8.3.6 dan lebih tinggi (disarankan untuk menggunakan platform 8.3.10 dan lebih tinggi).
- Dikelola dan sebagai bentuk "normal" (konfigurasi yang diuji mungkin dalam mode kompatibilitas 8.2 atau lebih tinggi).
- Mode Panggilan Asinkron.
Agar dapat bekerja dengan benar di "kebun binatang" seperti itu , va harus belajar untuk menguji dirinya sendiri. Laporan swauji terlihat seperti ini:


Skrip untuk pengujian "mandiri" berada di repositori yang sama.
Perpustakaan langkah
Paket va termasuk pustaka Gherkin tentang langkah-langkah standar, yang memungkinkan Anda untuk menyelesaikan tugas pengujian otomatis sehari-hari, seperti bekerja dengan antarmuka aplikasi (tombol, bidang, tabel, dll.), Bekerja dengan file, OS, dll. Saat ini, lebih dari 400 langkah.
Lokalisasi
Antarmuka va dilokalkan dalam 20 bahasa:
RU, am, az, bg, et, fr, ka, de, en, hu, it, lv, lt, mn, pl, ro, sl, es, sv, tr, vi.
Lokalisasi va dapat dibagi menjadi 3 komponen:
- Antarmuka (mekanisme standar sinonim dari 1C: Platform perusahaan digunakan).
- Pesan untuk pengguna (alih-alih panggilan ke () tata letak dengan terjemahan pesan digunakan).
- Terjemahan langkah-langkah Gherkin dari perpustakaan standar va . Yaitu alih-alih menerapkan langkah "Dan saya mengklik tombol 'NameKnopki'" di setiap bahasa, "pemetaan" digunakan lagi pada langkah yang sesuai dari Gherkin, yang sudah diterapkan dalam bahasa Rusia.
Dalam bahasa Inggris, langkah ini adalah
And I click 'ButtonName' button
Oleh karena itu, sekarang pengguna berbahasa Inggris dapat menulis skrip pada va dalam bahasa Inggris. Semua langkah dari perpustakaan standar diterjemahkan oleh man. Hasilnya mungkin terlihat seperti ini .
Adalah logis bahwa untuk mendukung lokalisasi seperti itu, kami harus mengimplementasikan alat tambahan untuk bekerja dengan tata letak (tata letak adalah sesuatu seperti tabel excel) untuk memasukkan / menghapus nilai, menyortir baris, dll. langsung di sumbernya (file xml).
"TDD dalam 1C", pengujian prosedur dan fungsi (unit test)
Dengan va, Anda dapat menguji "perilaku" prosedur dan fungsi. Cukup menulis skrip serupa:

Jika pembaca memiliki minat, maka topik ini dapat diungkapkan secara lebih rinci di artikel mendatang.
Opsi pengiriman
Awalnya, proyek hanya dikirim dalam bentuk satu set file epf, yang dapat dirakit dari sumber di github , atau mengunduh rilis siap. Mulai dari versi 1.2.009, va juga disediakan sebagai satu file epf, yang mencakup semua perpustakaan, plugin, paket pelokalan, modul perakitan video, dll. Jadi untuk berbicara - semuanya dalam satu.
Versi kerangka ini disebut vanessa-automation-single . Ini sangat cocok untuk para pengguna yang tidak berencana untuk memodifikasi va , tetapi hanya akan menggunakannya. Juga, opsi pengiriman ini sangat cocok untuk dimasukkan dalam konfigurasi atau ekstensi lain (manfaat dari lisensi proyek FreeBSD memungkinkan ini).
Atas ke bawah dan dari bawah ke atas
Terlepas dari kenyataan bahwa alat ini awalnya dirancang untuk menerapkan metodologi BDD (yaitu, ketika skrip ditulis dari atas ke bawah, yaitu berdasarkan persyaratan tingkat atas dari pelanggan), praktik penggunaan telah menunjukkan bahwa skrip juga dapat ditulis dari bawah ke atas. Kasus khas adalah ketika sudah ada konfigurasi yang sudah jadi, dan Anda hanya perlu menutupinya dengan tes tanpa khawatir tentang metodologi.
Akhlak
Saya harap pembaca telah mengembangkan (kata kunci "dibentuk") gagasan va sebagai alat pengujian yang serius. Melihat analog asing di awal, sekarang va melampaui mereka, menurut pendapat saya. Perpanjangan fungsi bekerja dengan gherkin, memungkinkan (dijanjikan, tetapi tidak diimplementasikan sebelum turbo gherkin) untuk melibatkan analis dan pengembang serta penguji dalam proses pengembangan. Saya akan menjelaskan bahwa analis menulis skrip lintas-tingkat, tingkat atas β pengembang merinci skrip ini menggunakan skrip ekspor juga, dan ia hampir tidak menulis apa pun kecuali kode (semua langkah UI yang diperlukan sudah ada di perpustakaan) β tester menambahkan skrip untuk memeriksa dari βsudut berbedaβ fungsionalitas dan semua ini - dalam satu fitur-file , kawan kawan!

PS
Mengenai hal ini, izinkan saya menyimpulkan artikel ulasan ini.
Mendukung proyek dengan kata / suka / kritik yang baik (obrolan proyek di Gitter ada di sini ), penulis selalu senang.
Terima kasih atas perhatian anda!
Referensi