Google'de Test Otomasyonu Nasıl Yapılıyor?

Hepimizin internetle tanışmasından sonra belkide en çok kullandığı Google test nasıl yapılıyor hiç merak ettiniz mi? 2012 yılında katıldığım "Google ölçeğinde test" isimli bir sunumda benim de merak ettiğim bir çokta aydınlanmış oldu. Bu sayede test organizasyonun ve teste verilen önemin hangi boyutlara gelmiş olduğunu gözlemlemiş oldum. Bu yazımda önemli gördüğüm bazı noktaları aktarmak istiyorum.

Öncelikle "Google ölçeğindenin" ne anlama geldiğini anlamak gerekir. Bir yılda çalıştırdıkları toplam test case sayısı yaklaşık olarak 100x10^9 başka bir söyleşle bir yılda yaklaşık olarak 14.000 yılda çalıştıralabilecek kadar test case çalıştırılıyor. Peki bunu nasıl becerebiliyorlar? Bu başarı ancak test otomasyonu ve sürekli bütünleştirme (continious integration) ile gerçekleştirilebilir. Her test otomasyon altına alınamadığı için bazı testleri manuel olarak gerçekleştiriliyor. Burada aslında yazılımcı sadece yazılım işinden sorumlıu değildir aynı zamanda test işindende sorumludur. Google'ye göre yazılımcı = code + test, test uzmanı = quality enabler. Bu sistem içerisinde çok az test uzmanı vardır. Varolan test uzmanları projelere atanır ve bir test danışmanı gibi çalışarak yapılan testlerin kalitesini kontrol eder, bu yüzden kalite sağlayıcı olarak isimlendirilmişlerdir. Aşağıdaki görsellerden anlaşılacağı gibi test uzmanı sayısı çok azdır ve danışmanlık rolünde görev yaparlar.

Google Test ve Geliştirici Birlikteliği

 Yazılımcı kod yazılmasından, fonksiyonel testler ve ayrıca entegrasyon testlerinden ve yazılan kodun kod tabanına eklenmesinden ve dolaysıyla sürekli bütünleştirmenin sonuçlarını değerlendirmesinden sorumlu demiştik. Bunların başarılması için ise herşeyin otomasyon altına alınması gibi bir hedefleri var yani sadece test caselerin değil aynı zamanda geliştirme ortamından test ortamına aktıralmasında sorumlu işleri, test datalarının oluşturulmasında, test sonuçlarının değerlendirilmesinde gibi yapılması gereken aktiviteleride otomasyon altına almayı amaçlamışlar. Bir diğer önemli yenilik ise sürekli olarak kod-kapsamını (code coverage) arttırarak, sürümlerin canlıya çıkmadan önceki aday sürümlerin (release candidate) oranını azaltmışlar, yine amaçlanan sürüm başına aday sürüm sayısını ikinin altına çekmek (release candidate < 2). Alttaki görselden görüleceği üzere code coverage sürekli arttırmak bir hedef bunu herkes tarafından görünür kılarak bilinçlendirme sağlanmaktadır. Burada renkler kod kapsamının oransal olarak büyüklüğünü, kutuların boyutları ise kod kapsamına alınan satır sayısının miktarını belirtmektedir.

Google Code-Coverage

 Bir diğer yenilik ise tuvalette test (test on toilet) kavramıyla tuvalette bile testlere devam edilebiliyor olmasıdır. Yani tuvaletlere yerletirlen ekranlar ile testlere devam edilebiliyor ve test kapsamları buralardan online olarak görüntülenebiliyor. Yaklaşık olarak 3.000 tuvaletin olduğu dşünülürse yine test başarısı adına önemli bir gelişme yaşanmış olur. Alttaki görselde burada aktaramadığım bilgilerin özetini bulabilirsiniz. Umarım Türkiye'de de kalite konusunda bu tür yaklaşımlar yer bulur ve daha kaliteli ürün çıkarabiliriz.
Testİstanbul 2012 - Google Sunumu Özet

Comments

Popular posts from this blog

Selenium Error "Element is not currently interactable and may not be manipulated"

Change Default Timeout and Wait Time of Capybara

Page-Object Pattern for Selenium Test Automation with Python

Performance Testing on CI: Locust is running on Jenkins

How to Set Shared Preferences in Espresso Test for Kotlin and Java