31 Aralık 2020

Agile Projelerde Test Otomasyonu

Agile projelerle birlikte manuel test yaklaşımının kodlama aşamasının en sonunda ya da mevcut sürecin en son aşamasında yapılması anlayışından çıkılıp testin projenin başlangıcından sonuna kadar yürütülmesi gerektiği ve testin her aşamada yapılması gerektiği anlayışı hakim olmuştur.

Agile projelerle birlikte manuel test yaklaşımının kodlama aşamasının en sonunda ya da mevcut sürecin en son aşamasında yapılması anlayışından çıkılıp testin projenin başlangıcından sonuna kadar yürütülmesi gerektiği ve testin her aşamada yapılması gerektiği anlayışı hakim olmuştur. 

Agile projelerle birlikte test otomasyonu yaklaşımı da değişiklik göstermiştir. Manuel test tamamlandıktan veya kritik, blocker hata kalmadığı durumda geliştirilmesi yerine proje başlangıcından itibaren uygulanması ve böylelikle agile daki hızlı değişimlere adapte olunması sağlanmıştır.

Agile Projelerde Test Otomasyonunun Faydaları

Test otomasyonu hız, performans, güvenilirlik, tekrar kullanılabilirlik gibi faydalar sağlar. Test otomasyonu bilinen GUI otomasyonuna ek olarak API otomasyonu olarak da uygulanırsa eğer GUI testlerinden önce API de bulunan hatalar giderilebilir. Ayrıca unit test kapsamında bulunamayan hatalar otomatize edilmiş integration testlerinde saptanabilir.

Test Otomasyonu Ne Zaman Uygulanmalı?

Agile projelerde hangi testlerin otomatize edileceği belirlenmelidir. Tek seferlik tasklar, exploratory(keşif) ve edge case testler otomatize edilmemelidir. 

Ne zaman uygulanmalı?

  • Eğer tek bir test case sürekli tekrarlanıyorsa, 

  • Manuel test uzun sürüyor ve zaman alıyorsa, 

  • Aynı test suite farklı user setler ile koşulabiliyorsa, 

  • Release için kısa bir süre varsa ve zaman birinci öncelik ise, 

  • Testlerin farklı browser ve environment larda koşulması gerekiyorsa testler otomatize edilebilir.

https://cdn2.hubspot.net/hubfs/2912187/Integrating%20test%20automation%20in%20a%20sprint%2002.jpg

Şekil 1. Test otomasyonunun sprint e dahil edilmesi

Agile projelerde testçiler sprint süresi içerisinde testleri tamamlayabilmekte, sprint içerisindeki gereksinimlerin ve geliştirmelerin sürekli değişmesine adapte olmakta ve değişiklikler için sprint içerisinde regresyon testlerini gerçekleştirmede zorluk yaşayabilmektedirler. Şekil 1 de de görüldüğü üzere eğer bir sonraki sprint içerisinde bir önceki sprint otomatize edilirse ve sprint başlangıcında bu otomasyon testleri çalıştırılırsa regresyon daha kısa sürede yapılabilmektedir. Hazırlanan Test otomasyon scriptleri Devops ve CI/CD süreçlerine dahil edilerek belirlenmiş olan zamanlarda sürekli çalıştırıldığı yazılımın stabil olup olmadığı düzenli olarak kontrol edilebilmekte ve hatalar erken aşamalarda tespit edilip düzeltilebilmektedir.

Başarılı Bir Test Otomasyonu İçin Gerekenler: 

  1. Test otomasyonunda seçilecek tool seçimi önemlidir. Projede yapılacak olan test ihtiyacını karşılayacak(ui,api, fonk, regresyon, load, performance) toolların seçilmeli ve farklı environment testlerini kapsayacak şekilde tasarlanmalıdır.

  2. Test otomasyonunda kullanılacak datalar oluşturulmalıdır.

  3. Farklı testler için farklı test suite ler oluşturulmalıdır. (smoke, regresyon...)

  4. Test otomasyon framework ü dizayn edilmeli, tekrar kullanılabilir scriptler oluşturulmalı; böylelikle test kodlarının bakımı(maintenance) kolaylaştırılmalıdır.

  5. Sprintlerde test automation backlog u oluşturulmalıdır. Bu backlog un kapsamında yeni feature lar ve var olan feature ların geliştirilmesi yer almalıdır. Tanımlanmış olan bu itemlara story point verilmeli ve kişilere atanmalıdırlar. Spint başlangıçlarında bu backlog itemlar sprint içerisine alınmalıdır.

  6. Test otomasyonu kabul kriterleri belirlenmiş olmalıdır.(Test suite lerin CI ile entegre edilmesi, sonuçların mail ile gönderilmesi, test hatalarında hataya ilişkin ekran görüntüsü ve logların kaydedilmesi ve mail ile gönderilmesi ya da test tracking toollarında otomatik olarak bug ların oluşturulması gibi.)

  7. Test otomasyonu için ayrı bir test ortamı oluşturulmuş olmalıdır. 

  8. Kodlar lokalde tutulmamalıdır. Kodlar versiyon kontrol sistemlerinde (Git,bitbucket) ayrı bir repoda tutulmalıdır. 

  9. Projede birden fazla çalışan test mühendisi için pull request yapısı oluşturulmalı ve kontrolden geçmeyen kodların master a merge lenmesi engellenmelidir.(Code review) 

  10. Otomasyon kodları merkezi bir CI ortamına kurulmalı(Ör: Jenkins) ve otomasyon kodları merkezi bir ortamdan çalıştırılmalıdır. Böylelikle kişi bağımlılığı ortadan kaldırılacaktır. Bu sayede sadece test mühendisleri değil agile takımda yer alan herhangi biri otomasyon kodlarını istediği zaman çalıştırabilecektir. 

Gamze YILMAZER