GTAC 2015: Presentasi

Kata Pembuka

Nama Yvette (Google)

Keynote Pembuka

Jürgen Allgayer (Google)

Tantangan Uber untuk Lintas-Aplikasi/Pengujian Lintas-Perangkat

Apple Chow (Uber) dan Bian Jiang (Uber)

Link: Video, Slide

Segera setelah bergabung dengan Uber pada Maret 2015, kami menghadapi tantangan unik Uber saat menyelidiki alat pengujian UI untuk aplikasi seluler kami. Banyak pengujian kesehatan kami mengharuskan aplikasi penumpang dan aplikasi pengemudi kami untuk berkomunikasi/mengoordinasikan tindakan mereka satu sama lain untuk menyelesaikan skenario pengujian secara menyeluruh. Dalam pembahasan ini, kami akan mempresentasikan solusi tentang agnostik platform, yang disebut Octopus, dan mendiskusikan bagaimana solusi ini mengoordinasikan komunikasi di berbagai aplikasi yang berjalan di perangkat yang berbeda. Solusi ini dapat digunakan untuk setiap pengujian yang membutuhkan koordinasi/komunikasi di berbagai aplikasi atau perangkat (mis. game multi-pengguna, aplikasi pesan/komunikasi multi-pengguna, dll.)

Otomatisasi Pengujian dengan Bantuan Robot

Hans Kuosmanen (OptoFidelity) dan Natalia Leinonen (OptoFidelity)

Link: Video, Slide

OptoFidelity adalah perusahaan teknologi tinggi Finlandia dengan pengalaman selama 10 tahun dalam mengembangkan dan memberikan solusi otomatisasi pengujian R&D. Pembahasan ini akan mencakup pengalaman dan pandangan kami tentang metode pengujian tidak mengganggu yang akan digunakan dalam pengujian performa UI perangkat seluler. Tahukah Anda bahwa tim Chrome OS menggunakan solusi robot dari OptoFidelity untuk mengukur latensi menyeluruh pada perangkat Android dan ChromeOS?

Gergaji Juggling untuk Kesenangan dan Profit: Pelajaran yang Didapat dari Pengujian Integrasi Lintas Platform Seluler

Dan Giovannelli (Google)

Link: Video, Slide

Pengembangan seluler sulit dilakukan. Membuat infrastruktur pengujian itu sulit. Bekerja lintas platform itu sulit. Kombinasikan ketiganya dan Anda memiliki resep untuk bencana. Dalam pembahasan ini, Dan Giovannelli akan membagikan pengalamannya dalam mengerjakan project infrastruktur pengujian seluler lintas platform. Dia akan mendiskusikan hal-hal yang berjalan lancar, hal-hal yang berjalan salah (sangat) salah, dan apa yang dia inginkan sekarang dimulai. Datanglah untuk mendapatkan insight tentang mendesain alat seluler untuk engineer non-seluler, tetap cari tahu apa itu The Matrix dan cara mengalahkannya dalam gamenya sendiri.

Otomatisasi Pengujian Game Seluler Menggunakan Perangkat Nyata

Jouko Kaasila (Bitbar/Testdroid)

Link: Video, Slide

Game Seluler adalah kategori penghasil uang terbesar di app store saat ini, sehingga memastikan bahwa setiap versi dari setiap game di perangkat pengguna merupakan prioritas tinggi bagi setiap developer game. Terlepas dari pentingnya memvalidasi hal ini, hanya ada sedikit contoh atau framework untuk mengotomatiskan pengujian game seluler, yang memaksa developer game untuk memanfaatkan pengujian manual yang tidak diskalakan sejauh yang diperlukan perusahaan game untuk menjangkau pasar global mereka. Salah satu alasan utamanya adalah sifat game yang unik sebagai aplikasi seluler karena game tersebut mengakses layar secara langsung dan mengabaikan semua layanan UI yang disediakan oleh OS dan merender sebagian besar framework otomatisasi pengujian yang tidak berguna karena objek tradisional tidak diekspos.

Untungnya, ada cara untuk menggunakan framework otomatisasi pengujian seluler standar guna mendorong otomatisasi pengujian pada perangkat seluler sungguhan untuk game, dengan menggunakan beberapa kreativitas dan library yang tersedia secara publik. Dalam presentasinya, Jouko Kaasila dari Testdroid akan membahas tiga pendekatan berbeda dengan contoh nyata dan beberapa kode contoh.

Cara Membuat Dumpling Sup Pengujian Komponen

Toni Chang (Google)

Link: Video, Slide

Orang yang menghabiskan terlalu banyak waktu untuk menstabilkan pengujian yang tidak stabil akan setuju bahwa kita perlu mengurai pengujian. Namun, sebagian developer merasa kesulitan dan tidak yakin caranya, sebagian lainnya mungkin ditantang oleh rekan tim yang yakin bahwa kita memerlukan pengujian E2E untuk memvalidasi semua skenario. Karena terkadang sulit untuk mendapatkan ide jika Anda tidak terbiasa melihat produk Anda dalam komponen, saya akan menggunakan contoh abstrak Pangsit Sup untuk mendemonstrasikan cara menguraikan bagian yang tampaknya tidak terpisahkan untuk komponen dan menerapkan pengujian pada komponen tersebut.

Saya akan menunjukkan kepada Anda perjalanan menyenangkan dalam menerjemahkan pengujian E2E menjadi pengujian komponen yang akan memberi Anda kepercayaan diri terhadap produk akhir. Semoga ini akan memberikan perspektif baru bagi Anda saat melihat produk Anda sendiri.

Otomatisasi Pengujian Chromecast

Brian Gogan (Google)

Link: Video, Slide

Internet telah menyebabkan pertumbuhan jumlah perangkat yang terhubung. Memvalidasi perilaku di berbagai perangkat interoperabilitas merupakan tantangan pengujian yang signifikan. Untuk menguji Chromecast, beberapa pendekatan dilakukan. Kami menjelaskan framework pengujian, infrastruktur lab, dan alat pengujian yang kami kembangkan untuk menghasilkan sinyal kualitas yang andal dari produk tersebut. Kami menjelaskan secara detail tantangan untuk menguji produk yang beroperasi di lingkungan dengan jaringan bising. Kami mengusulkan bahwa alat pengujian untuk perangkat seperti Chromecast masih baru dan menghadirkan peluang untuk inovasi dalam rekayasa pengujian software.

Menggunakan Robot untuk Pengujian Aplikasi Android

Dr.Shauvik Roy Choudhary (Georgia Tech/Checkdroid)

Link: Video, Slide

Robot software, seperti Monkey dapat digunakan untuk menguji aplikasi Android tanpa banyak upaya manual. Ada beberapa alat yang diusulkan dalam dunia akademis yang bertujuan untuk menghasilkan input pengujian secara otomatis untuk mendorong aplikasi android. Dalam pembahasan ini, saya akan memperkenalkan serangkaian alat pembuat input pengujian yang representatif dan mempresentasikan studi perbandingan untuk menyoroti kekuatan dan batasannya. Anda akan mempelajari internal alat ini dan cara menggunakannya untuk menguji aplikasi. Detail studi beserta penyiapan VM dengan alat tersedia di: http://bear.cc.gatech.edu/~shauvik/androtest/

Pengujian Anda Tidak Stabil

Alister Scott (Otomatis)

Link: Video, Slide

Pengujian yang tidak stabil adalah bugg dari seorang engineer pengujian otomatis; karena seseorang (mungkin Alister) pernah berkata “kegilaan menjalankan pengujian yang sama berulang kali dan mendapatkan hasil yang berbeda”. Pengujian yang tidak stabil tidak menyebabkan keputusasaan, tetapi mungkin tidak ada yang sama dengan uji yang tidak stabil atau tidak stabil, mungkin kita perlu melihat masalah ini melalui lensa yang berbeda. Kita harus meluangkan lebih banyak waktu untuk membuat sistem yang lebih deterministik dan lebih dapat diuji dibandingkan menghabiskan waktu untuk membuat pengujian yang tangguh dan persisten. Alister akan membagikan beberapa contoh kapan kegagalan pengujian menyembunyikan masalah nyata di bawah sistem, dan cara untuk mengatasi kegagalan pengujian dengan membuat sistem yang lebih baik.

Pengujian Visual Otomatis Skala Besar

Adam Carmi (Aplikasi)

Link: Video, Slide

Pengujian visual otomatis adalah tren baru yang muncul di komunitas pengembangan / pengujian. Dalam pembahasan ini, Anda akan mempelajari pengertian pengujian visual dan alasan pengujian tersebut harus diotomatiskan. Kita akan mempelajari beberapa tantangan teknologi yang terlibat dengan otomatisasi pengujian visual dan menunjukkan bagaimana alat modern mengatasinya. Kami akan mendemonstrasikan teknologi canggih yang memungkinkan menjalankan pengujian visual lintas browser dan lintas perangkat, serta memberikan tips penting agar berhasil menjalankan pengujian visual skala besar.

Pengujian Regresi Handsoff

Karin Lundberg (Twitter) dan Puneet Khanduri (Twitter)

Link: Video, Slide

Tim Anda baru saja menyelesaikan pemfaktoran ulang besar pada layanan dan semua pengujian unit serta integrasi Anda lulus. Bagus! Namun, Anda belum selesai. Sekarang Anda perlu memastikan bahwa Anda tidak merusak apa pun dan tidak ada bug mengintai yang belum Anda tangkap. Saatnya menggunakan Diffy.

Tidak seperti alat yang memastikan bahwa kode Anda terdengar bagus, seperti pengujian unit atau integrasi, Diffy membandingkan perilaku layanan yang dimodifikasi dengan menerapkan instance layanan baru dan layanan lama Anda secara berdampingan, merutekan permintaan contoh ke setiap layanan, membandingkan respons, dan mengembalikan regresi apa pun yang muncul dari perbandingan tersebut.

Selain itu, kami baru saja membuat alat open source dan dengan cepat menjadi salah satu yang paling populer di antara project open source Twitter.

Pengujian Aksesibilitas Otomatis untuk Aplikasi Android

Casey Burkhardt (Google)

Link: Video, Slide

Pembahasan ini akan memperkenalkan kemampuan aksesibilitas inti di platform Android dan mengilustrasikan beberapa masalah umum developer terkait aksesibilitas. Anda akan mempelajari Android Accessibility Test Framework baru dan integrasinya ke dalam framework pengujian Espresso dan Robolectric. Terakhir, Anda akan mempelajari betapa mudahnya menambahkan pemeriksaan aksesibilitas otomatis ke pengujian project Android yang ada.

Pengambilan Sampel Data Statistik

Celal Ziftci (Google) dan Ben Greenberg (siswa pascasarjana MIT)

Link: Video, Slide

Sudah menjadi praktik umum untuk menggunakan sampel data produksi dalam pengujian. Contohnya adalah:

  • Uji Kelayakan: Mengirimkan sampel data produksi ke sistem Anda untuk melihat apakah ada masalah.
  • Pengujian A/B: Mengambil data produksi dalam jumlah besar, menjalankannya melalui versi sistem saat ini dan yang baru, dan membedakan output untuk pemeriksaan.

Untuk mendapatkan sampel data produksi, tim biasanya menggunakan solusi ad-hoc, seperti:

  • Melihat distribusi kolom tertentu secara manual (mis. kolom numerik),
  • Memilih sampel yang sepenuhnya acak

Namun, pendekatan ini memiliki kelemahan serius: Pendekatan ini dapat melewatkan peristiwa langka (misalnya kasus ekstrem), yang meningkatkan risiko bug yang tidak tertangkap dalam produksi. Untuk mengurangi risiko ini, tim memilih sampel yang sangat besar. Namun, dengan sampel yang sangat besar, akan ada lebih banyak kelemahan:

  • Peristiwa langka masih bisa terlewatkan,
  • Runtime pengujian sangat meningkat,
  • Perbedaan terlalu besar untuk dipahami manusia, dan ada banyak pengulangan.

Dalam pembahasan ini, kami mengusulkan teknik pengambilan sampel data statistik baru ke "smartly" memilih sampel "bagus" dari data produksi yang:

  • Menjamin peristiwa langka tidak akan terlewatkan,
  • Meminimalkan ukuran sampel yang dipilih dengan menghilangkan duplikat.

Teknik kami menangkap kasus langka/terbatas, mempertahankan ukuran sampel seminimal mungkin, dan secara implisit mengurangi beban manual dalam melihat output/perbedaan pengujian pada developer. Ini juga mendukung eksekusi paralel (misalnya MapReduce) sehingga data dalam jumlah besar dapat diproses dalam jangka waktu yang singkat untuk memilih sampel.

Infrastruktur Otomatisasi Nest

Usman Abdullah (Nest), Giulia Guidi (Nest) dan Sam Gordon (Nest)

Link: Video, Slide

Visi Nest untuk Thoughtful Home melibatkan perangkat cerdas dan saling terhubung yang bekerja sama untuk membuat rumah Anda lebih aman, lebih hemat energi, dan lebih sadar. Pembahasan ini akan berfokus pada infrastruktur otomatisasi dan alat pengujian yang dibuat untuk membantu mewujudkan visi tersebut. Berbagai tim di Nest telah mengerjakan sistem lintas platform dan khusus perangkat/fitur untuk pengujian dan analisis regresi otomatis. Dengan menggunakan contoh spesifik dari pengujian produk di dunia nyata, kita akan membahas hardware lintas produk dalam infrastruktur pengujian loop dan alat analisis regresi daya, beserta set alat khusus deteksi kamera dan gerakan.

Generator Peristiwa

Roussi Roussev (Splunk)

Link: Video, Slide

Diskusi ini mencakup pengalaman kami dalam mengembangkan dan menggunakan generator peristiwa software di Splunk. Terinspirasi oleh fisika partikel di mana generator peristiwa sangat diperlukan dalam memahami dunia fisik tanpa menjalankan mesin eksperimental yang besar, generator log telah meningkatkan cara kami menguji berbagai integrasi kami dengan software pihak ketiga modern dan lama. Pembahasan ini mencakup fungsi dasar dan tantangan dalam menghasilkan log yang realistis.

Sintesis Pengujian Multi-thread

Murali Krishna Ramanathan (Institut Sains India, Bangalore)

Link: Video, Slide

Error serentak yang sama di library multithread yang muncul karena sinkronisasi yang salah atau tidak memadai sering kali sulit ditentukan dengan tepat menggunakan teknik statis saja. Di sisi lain, efektivitas pendeteksi dinamis sangat bergantung pada rangkaian pengujian multi-thread yang eksekusinya dapat digunakan untuk mengidentifikasi dan memicu bug serentak, termasuk data race, deadlock, dan pelanggaran atomik. Biasanya, pengujian multi-thread tersebut perlu memanggil kombinasi metode tertentu dengan objek yang terlibat dalam pemanggilan yang dibagikan dengan tepat untuk menampilkan bug. Tanpa pengetahuan sebelumnya tentang bug, konstruksi pengujian tersebut dapat menjadi tantangan.

Dalam pembahasan ini, saya akan mempresentasikan teknik yang ringan dan skalabel untuk mensintesis pengujian untuk mendeteksi pelanggaran keamanan thread. Mengingat library multi-thread dan rangkaian pengujian berurutan, saya akan mendeskripsikan analisis yang sepenuhnya otomatis yang memeriksa trace eksekusi berurutan, dan menghasilkan program klien serentak sebagai penggerak objek bersama melalui panggilan metode library ke status yang kondusif untuk memicu bug serentak. Hasil eksperimen di berbagai library Java yang teruji dengan baik menunjukkan efektivitas pendekatan kami dalam mengungkap banyak bug yang kompleks.

Mengaktifkan Eksperimen Streaming di Netflix

Minal Mishra (Netflix)

Link: Video, Slide

69+ juta pengalaman streaming pengguna adalah hal yang sangat penting bagi Netflix. Untuk meningkatkan hal ini dengan cepat, kami memindahkan algoritme streaming adaptif ke lapisan JavaScript. Hal ini menimbulkan tantangan unik karena sering merilis software JavaScript klien yang berdampak langsung pada pengalaman streaming konsumen. Dengan meminjam paradigma continuous delivery, yang telah digunakan secara luas dan berhasil diterapkan untuk aplikasi layanan, kami menggunakannya untuk menghentikan risiko selama siklus proses check in dan sering mengirimkan update. Dalam pembahasan ini, kami akan menjelaskan komponen utama dari paradigma ini untuk mengaktifkan update software. Kita akan mempelajari prosedur peluncuran alat dan klien JavaScript untuk membandingkan kondisi dengan versi saat ini secara akurat. Kami juga akan membagikan tantangan yang dihadapi dalam proses ini.

Membuat Simulasi Internet

Yabin Kang (LinkedIn)

Link: Video, Slide

Membuat internet, berbicara tentang sistem tiruan baru di Linkedin yang membantu meniru semua traffic keluar untuk pengujian integrasi tingkat layanan, juga akan sedikit membahas ringkasan strategi Pembuatan Status Tertaut. Bagikan pengetahuan dan hal yang kami pelajari kepada semua orang.

Pengujian efektif Penerima Stasiun Pemantau GPS

Andrew Knodt (Lockheed Martin)

Link: Video, Slide

Stasiun pemantauan GPS yang ada yang digunakan oleh Angkatan Udara menjadi sulit dipelihara dan sedang berusaha untuk menggantinya dengan pendekatan GPU yang Ditentukan Radio yang Ditentukan Software (SDR). Ringkasan tantangan pengujian unik dari penerima GPS khusus ini beserta pemeriksaan terhadap beberapa pendekatan pengujian akan ditampilkan. Meskipun berfokus pada aplikasi GPS, pendekatan pengujian ini dapat dengan mudah diterapkan pada upaya SDR level produksi lainnya.

Otomatisasi pada Perangkat Wearable

Anurag Routroy (Intel)

Link: Video, Slide

Seiring dengan meningkatnya penggunaan teknologi wearable di perangkat pribadi dan bisnis, semua perusahaan yang memiliki ruang kosong di pasar Android telah mengalihkan fokus mereka pada teknologi mendatang ini. Dengan demikian, membuat aplikasi dengan dukungan wearable, yang juga meningkatkan upaya untuk menguji aplikasi mereka di perangkat wearable. Oleh karena itu, otomatisasi pada perangkat wearable menjadi penting untuk mengurangi upaya pengujian dan meningkatkan efisiensi.

Pengujian Integrasi dan CI Terpadu (Docker/Vagrant)

Maxim Guenis (Supersonik)

Link: Video, Slide

Developer kesulitan setiap hari untuk menyiapkan lingkungan pengembangan lokal yang berfungsi saat mengembangkan, men-debug, dan melalui siklus integrasi berkelanjutan.Kita dapat mengatasi hal ini dengan mengintegrasikan docker dan gelandangan untuk digunakan dengan alat CI. Kombinasi ini memungkinkan untuk mengontrol aplikasi di level stack pada mesin pengembangan, sekaligus dapat menggunakan stack yang sama dalam pengujian integrasi. Dalam pembahasan ini, kita akan membahas:

  • Penggunaan Docker dalam pengujian integrasi CI
  • Kontrol stack, bukan satu docker atau aplikasi.
  • Kontrol versi pengembangan dan lingkungan pengujian, yang mudah didistribusikan dengan git dan alat docker.
  • Dukungan yang lancar untuk menjalankan Docker di Mac dan jendela.

Menghilangkan Bit Pengujian yang Tidak Berguna

Patrick Lam (University of Waterloo)

Link: Video, Slide

Spesialisasi teknik analisis statis pada rangkaian pengujian memberikan hasil yang menarik. Sebelumnya, kita telah mempelajari bahwa sebagian besar pengujian adalah kode garis lurus sederhana, yaitu urutan pernyataan penyiapan yang diikuti dengan payload yang terdiri dari pernyataan. Kami menunjukkan bagaimana analisis statis dapat mengidentifikasi pernyataan penyiapan yang tidak berguna, sehingga developer dapat menyederhanakan dan mempercepat kasus pengujian mereka.

Cakupan Tidak Sangat Terkait dengan Efektivitas Test Suite

Laura Inozemtseva (Universitas Waterloo)

Link: Video, Slide

Cakupan rangkaian pengujian sering digunakan sebagai proxy untuk kemampuannya mendeteksi kesalahan. Namun, penelitian sebelumnya yang menyelidiki korelasi antara cakupan kode dan efektivitas rangkaian pengujian telah gagal mencapai konsensus tentang sifat dan kekuatan hubungan antara karakteristik rangkaian pengujian ini. Selain itu, banyak studi dilakukan dengan program kecil atau sintetis, sehingga tidak jelas apakah hasilnya menggeneralisasi program yang lebih besar, dan beberapa studi tidak memperhitungkan pengaruh peran ukuran rangkaian pengujian. Kami telah memperluas studi ini dengan mengevaluasi hubungan antara ukuran rangkaian pengujian, cakupan, dan efektivitas untuk program Java yang realistis. Studi kami adalah yang terbesar hingga saat ini dalam literatur. Kami mengukur cakupan pernyataan, cakupan keputusan, dan cakupan kondisi yang dimodifikasi dari suite ini serta menggunakan pengujian mutasi untuk mengevaluasi keefektifan deteksi kesalahannya. Kami menemukan bahwa ada korelasi yang rendah hingga sedang antara cakupan dan efektivitas ketika jumlah kasus pengujian dalam suite dikontrol. Selain itu, kami menemukan bahwa bentuk cakupan yang lebih kuat tidak memberikan insight yang lebih baik tentang efektivitas suite.

Backend Palsu dengan RpcReplay

Matt Garrett (Google)

Link: Video, Slide

Menjaga pengujian tetap cepat dan stabil sangat penting. Hal ini sulit dilakukan jika server bergantung pada banyak backend. Developer harus memilih antara pengujian yang panjang dan tidak stabil, atau menulis dan mempertahankan implementasi palsu. Sebagai gantinya, pengujian dapat dijalankan menggunakan traffic yang direkam dari backend tersebut. Ini memberikan yang terbaik dari keduanya, memungkinkan developer untuk menguji dengan cepat terhadap backend nyata.

Lab Otomatisasi Pengujian ChromeOS

Simran Basi (Google) dan Chris Sosa (Google)

Link: Video, Slide

ChromeOS saat ini mengirimkan 60+ Chromebook/kotak berbeda yang menjalankan software mereka sendiri. Di lapangan, pelanggan mendapatkan sistem baru setiap 6 minggu. Hal ini tidak akan terwujud tanpa pemeriksaan sistem Continuous Integration yang andal dari 200+ developer kami. Dalam pembahasan ini, kami menjelaskan keseluruhan arsitektur dengan penekanan khusus pada lab otomatisasi pengujian kami. Selain itu, kami juga membahas Moblab (singkatan dari lab seluler) dan seluruh infrastruktur otomatisasi pengujian yang berjalan dari satu chromebox. Sistem ini digunakan oleh banyak partner kami sehingga mereka juga dapat menjalankan pengujian dengan cara kami.