Bagaimana tugas tes menjadi perpustakaan produksi

Halo semuanya!

Hari ini saya akan menceritakan tentang bagaimana tugas tes untuk wawancara kerja menjadi perpustakaan Image Comparison . Ini adalah perpustakaan sumber terbuka, yang dihosting di GitHub.

logo

Sebelum saya mulai, izinkan saya memperkenalkan diri. Nama saya Roman. Saya seorang suami dan ayah. Saya seorang insinyur perangkat lunak di Epam Systems dengan 4 tahun pengalaman di bidang TI.

Ide utama dari topik ini adalah untuk mengatakan, bahwa menciptakan produk open-source itu tidak membuang waktu, tidak! Ini pengalaman yang luar biasa, yang berasal dari semua komunitas open-source. Ini adalah saat ketika Anda seorang pengembang, manajer proyek, manajer produk dalam satu kepala.

Ketika perpustakaan ini berkembang, saya telah bekerja dengan orang-orang dari lebih dari 10 negara (!!), seperti Amerika Serikat, Jerman, Tiongkok, India, Rusia, Ukraina, dll.

Mari kita beralih dari awal cerita ini ...

Tes tugas untuk wawancara kerja. Agustus 2017.


Pada awal Agustus 2017, saya melakukan wawancara di satu perusahaan IT, di mana langkah pertama adalah melakukan tugas tes.

Tugasnya adalah membuat program di Jawa yang membandingkan 2 gambar dengan ukuran yang sama dan menunjukkan perbedaan secara visual dengan menggambar persegi panjang. Persyaratan terperinci dapat ditemukan di sini .

Saya memutuskan untuk melakukan yang terbaik. Untuk tujuan ini, saya memutuskan untuk menyelenggarakan tugas pengujian saya di GitHub. Saya ingin membunuh dua burung dengan satu batu: memberikan solusi, yang sebagai sumber terbuka dan meneliti bagaimana GitHub bekerja.

Setelah beberapa waktu, saya menemukan Marketplace di GitHub, yang memiliki banyak layanan untuk digunakan dengan repositori GitHub. Untuk proyek open-source semuanya gratis. Ini pertama kalinya, di mana saya dapatkan bahwa open-source adalah komunitas terbaik.

Saya telah menambahkan layanan berikutnya:

  • Codacy - adalah layanan kualitas kode.
  • Travis CI - Alat Integrasi Berkelanjutan.
  • Baju - uji sejarah cakupan & statistik
  • BetterCodeHub - layanan kualitas kode.

Hasil dari layanan ini dapat ditambahkan ke README sebagai tongkang. Menurut pendapat saya, lebih menarik untuk membaca README.

Ketika tugas tes selesai, saya sudah mengirimnya dan menunggu umpan balik. Saya punya beberapa masalah, yang penting dan ditambahkan ke bagian MASALAH ke repositori.

Salah satunya - persegi panjang yang tumpang tindih ...
Persegi panjang dapat tumpang tindih dan dimasukkan satu-ke-satu. Perilaku ini menyebabkan beberapa sampah pada gambar yang dihasilkan. Efek yang diinginkan: menggabungkan persegi panjang yang termasuk persegi panjang satu ke satu.

Uji tugas sebagai Perpustakaan. Juli 2018


Setelah beberapa waktu, saya menjelajahi bahwa banyak orang mengunjungi perpustakaan saya di GitHub. Sungguh, saya tidak berpikir bahwa seseorang tertarik pada proyek pengujian saya.

Logo


Selanjutnya, saya menemukan bahwa seseorang mengusulkan logo. Itu adalah desainer grafis dee-y. Saya tidak di komunitas open-source sebelumnya dan proposal ini benar-benar aneh bagi saya. Mengapa seseorang ingin melakukannya secara gratis. Tetapi dia mengatakan kepada saya bahwa dia suka berkontribusi pada proyek-proyek sumber terbuka. Semacam tujuan hidup. Sangat menakjubkan.

Logo untuk proyek - itu ide yang keren dan saya menerimanya. Ada banyak pilihan.

Dari

gambar

Untuk

gambar

Terakhir

gambar

Itu adalah pertama kalinya saya berkomunikasi di komunitas open-source. Pengalaman baru, seorang kenalan baru.

Bug pertama dari komunitas


Setelah beberapa waktu saya menemukan masalah GitHub terbuka dengan bug. Itu adalah pengembang dari Cina.
Bugnya adalah tentang masalah dengan gambar besar. Dia menggunakan gambar besar dan punya StackOverflowError. Saya terkejut, bahwa seseorang menggunakan kode saya dan menemukan bug, apalagi, pengembang membuat masalah.

Itu adalah tantangan pertamaku. Tantang untuk memahami cara mengatasi bug ini.

Setelah beberapa waktu, insinyur otomatisasi QA dari Rusia mengusulkan solusi untuk bug ini, tetapi saya menolaknya karena Pull-Request tidak disiapkan sebagaimana mestinya. Itu salah saya, saya perlu melihat dan mencoba memahami solusinya. Itu bisa membantu saya menyelesaikannya lebih cepat.

Pada saat itu saya memiliki dua masalah besar, yang sangat penting.

Penggunaan Baris Perintah. Musim Gugur 2018


Tahap selanjutnya dalam pengembangan adalah bekerja dengan Renato Athaydes, dia adalah seorang pengembang perangkat lunak dari Stockholm, Swedia.

Dia mengusulkan perubahan dengan memungkinkan menggunakan perbandingan gambar sebagai CLI tradisional. Sangat menarik untuk didengar, bahwa seseorang ingin memperluas penggunaan perbandingan gambar dan membuka ceruk baru dalam pengembangan.

Renato menyelesaikan semua komentar, yang saya buat dan saya telah menambahkan rilis baru - v2.0. Saya mulai membuat rilis di repositori GitHub. Ini sangat berguna, karena alasan itu, saya dapat dengan cepat mendapatkan semua perubahan, yang ada di rilis spesifik, semua deskripsi rilis, siapa yang berkontribusi, dll.

Selanjutnya, Renato meminta saya untuk menambahkan perbandingan gambar ke Maven Central. Saya belum punya pengalaman dengan penerbitan perpustakaan ke Maven Central dan Renato senang menambahkan semua perubahan yang diperlukan untuk proyek untuk penerbitan. Penerbitan ke Maven Central memungkinkan penambahan perpustakaan sebagai ketergantungan tanpa masalah. Satu masalah besar adalah mempublikasikannya.

Tetapi sebelum diterbitkan, saya harus memperbaiki dua bug utama dalam sistem. Saya menghabiskan banyak waktu untuk memperbaikinya dan pada bulan April 2019 saya telah menambahkan rilis baru - v.2.0.2.

Penerbitan di Maven Central. April 2019


Untuk menerbitkan perpustakaan dengan benar, Anda harus berurusan dengan versi. Setelah meneliti masalah ini, saya mulai mematuhi skema berikut: MAJOR.MINOR.PATCH

dimana:

MAJOR - versi saat membuat perubahan API yang tidak kompatibel
MINOR - versi saat menambahkan fungsionalitas dengan cara yang kompatibel ke belakang
PATCH - versi saat membuat perbaikan bug yang kompatibel ke belakang.

Langkah selanjutnya adalah memahami cara mengkonfigurasi artifactId dan groupId.

Saya memperbarui semua paket saya:
dari ua.comparison.image
untuk com.github.romankh3.image.comparison

Itu membuat lebih dimengerti untuk pencarian di mana basis kode itu.
Dan hasilnya adalah rilis - v2.1.0.

Kontributor baru dari Swedia. Mei 2019


Saya telah menerima email, di mana konsultan independen dan kontraktor meminta saya untuk melihat kontribusi baru dari Mika. Ini adalah pengembang dari Swedia.

Dia mengatakan bahwa orang dengan penglihatan buruk memiliki masalah untuk melihat persegi panjang yang berbeda jika mereka terlalu kurus. Saya menyukai ide ini dan menambahkannya ke proyek.

Dengan perubahan ini, saya telah menambahkan kontribusi yang dibuat oleh teman saya, yang ingin berlatih menggunakan aliran GitHub.

Sebagai hasilnya, saya telah merilis versi baru v2.2.0.

Langkah baru perpustakaan. Mei 2019


Saya mendapat masalah dari TobseF dari Karlsruhe, Jerman. Dia ingin menggunakan perbandingan gambar sebagai perpustakaan untuk tes. Tetapi dia menginginkan lebih banyak fungsi.

Pada saat itu, perpustakaan memiliki metode utama compareImages () yang mengembalikan gambar baru sebagai hasilnya.

TobseF mengusulkan untuk memperbarui nilai pengembalian metode compareImages () untuk mengembalikan objek ComparisonResult dengan gambar dalam perbandingan, ComparisonState (pertandingan, missmatch, sizemissmatch). Ini akan membantu untuk digunakan dalam tes.

Juga, dia mengusulkan untuk menambahkan beberapa opsi konfigurasi, yang akan membantunya.

Saya menyukai proposisi ini, tetapi perubahan tidak kompatibel dan dihapus bagian dari basis kode, yang saya ingin tetap seperti itu. Itu sebabnya saya menolak perubahan.

Namun demikian, saya memutuskan untuk mengimplementasikannya sendiri. Itu adalah ide bagus untuk meningkatkan perbandingan gambar.

Juga, Mika mengusulkan perubahan baru - menambahkan area, yang dapat diabaikan dalam perbandingan. Ini membantu untuk pengujian juga. Itu sebabnya perubahan ini ditambahkan juga.

Akibatnya, v3.0.0 telah dirilis.

Versi 3.0.0 menjadi pustaka nyata, yang dapat bermanfaat bagi pengembang. Saya sangat hebat, perbandingan gambar tumbuh.

Menggunakan dalam produksi. Juni 2019


Pada awal Juni, saya menerima email dari seorang insinyur QA otomatisasi, yang memiliki beberapa pertanyaan tentang perbandingan gambar. Dia mengatakan, bahwa dia ingin menggunakannya dalam tes QA otomatisasi untuk produksi.

Tes produksi! Saya sangat senang mendengarnya. Itu bukan proyek hewan peliharaan di GitHub, itu adalah produksi nyata. Hebat! Saya menggambarkan semua yang saya bisa.

Dia mengatakan, perbandingan gambar adalah satu-satunya perpustakaan yang dia temukan, yang dapat membandingkan dua gambar dengan area yang dikecualikan. Tetapi fungsi area yang dikecualikan tidak berfungsi seperti yang diinginkannya.

Kami telah bekerja bersama selama dua bulan untuk membuat perbandingan gambar lebih baik.

Akibatnya, itu rilis v3.1.1.

Pencarian ceruk. Juli 2019


Saya mengerti bahwa perbandingan gambar dapat bermanfaat bagi insinyur QA otomasi untuk menggunakannya dalam pengujian.

Itu sebabnya saya menemukan aqa-forum, di mana saya menerbitkan artikel tentang perbandingan gambar. Saya mendapat umpan balik yang bermanfaat dan merilis v3.2.0 dan v3.3.0.

Tolong, jika Anda tahu forum lain, di mana dapat ditampilkan perbandingan gambar - tulis di komentar. Ini akan membantu perbandingan gambar menjadi lebih baik dari sebelumnya.

Selanjutnya, saya menemukan repositori GitHub, yang berisi tautan berguna ke perpustakaan dan menambahkan perbandingan gambar dengan mereka.

Sekarang November 2019


Perbandingan gambar memiliki 60 awal, 33 garpu, 10 penggunaan pada Github sebagai ketergantungan.
Saya pikir ini adalah hasil yang bagus dari komunitas open-source yang membantu saya membawa perpustakaan baru.

Ini jauh dan saya percaya ini hanya permulaan.

Saya ingin mengucapkan terima kasih kepada semua kontributor, yang membangun perbandingan gambar dengan saya.

Terima kasih sudah membaca.

Salam,
Romawi

Source: https://habr.com/ru/post/id475482/


All Articles