Agile kavramı 2011 yılında telaffuz edilmeye başlandı ve son yıllarda DevOps kavramı da Agile’a eşlik etmeye başladı. Görevleri daha küçük parçalara bölmek, daha küçük fakat daha odaklı ürün geliştirme takımları oluşturmak, title kavramının değişmesi ve sürekli entegrasyon gibi pratikleri uygulayarak ülkemizde de birçok firma Agile ve Devops dönüşümü sürecine girdi.
Bu dönüşümün temelinde en güncel geliştirmenin, en son hazırlanan ürünün, mümkün olan en kısa zaman içerisinde müşterinin kullanımına sunma amacı yer alıyor. Proje bitiş tarihini daha yakına çekmekten bahsedilmiyor. Ancak Waterfall ve benzeri yazılım yaşam döngüsü süreçleri, yapıları itibariyle istenilen çevikliği sağlayamıyor. Bununla beraber yazılım geliştirme teknolojilerinin mevcut durumu ve pazar rekabeti de aradaki farkı açıyor.
Konuyu derinleştirebilmek için, Agile ve DevOps akışlarında testin nasıl konumlandığını inceleyelim. Aşağıda görünen klasik Waterfall akışı. Her şey sırayla, bir önceki aşamanın sona erdiği yerde başlıyor.
Waterfall
Agile, bir metodoloji ve iş yapış şeklinin ötesinde, kurumsal bir yazılım geliştirme kültürüdür. Birkaç kişiden daha fazla olmayan ürün geliştirme takımları oluşturarak ve hedeflenen işi parçalara ayırarak, her sprint sonunda anlam ifade eden ürünler çıkarılacak şekilde ilerleyen bir yazılım geliştirme sürecidir.
Agile
Waterfall’dan farklı olarak her bir sprint içerisinde, sprint içinde yapılacak işlere ilişkin test görevleri bulunuyor ve kodun canlı ortama alınması proje sonunda gerçekleşiyor.
Ayrıca Waterfall’dan farklı olarak Agile metodolojide test uzmanı, analist ve yazılımcı gibi ayrı görev tanımları yerine “Takım Üyesi” etiketi ile her katılımcının ürün geliştirme sürecinin her aşamasına dahil olması hedefleniyor.
DevOps süreci de temelde buna benzer ancak birkaç farklılık taşıyor. DevOps metodolojisi kullanılırken, Agile prensipleri daha da genişletilerek sistem, DBA, network kısımları da geliştirme sürecine alınır ve hizmet geliştirme yaklaşımı göz önünde bulundurulur. Otomasyon, DevOps süreçlerini bir arada tutan harçtır.
DevOps
Agile metodolojisinden farklı olarak, DevOps sürecinde hazırlanan ürünler, yapılan güncellemeler hiç gecikmeden hızlıca canlı ortama aktarılır. Sürekli takip, planlama, geliştirme test ve canlıya alma süreçleri işler. Buradaki geliştirme süreci “pipeline” olarak adlandırılır. Geliştirme faaliyetindeki süreçler, toollar üzerinden otomatik ilerletilir. Test de bu otomatik işleyen süreçlerden biridir.
Buradan hareketle şunu söyleyebiliriz; artık analistler analizi tamamlamak için iş birimleri ya da PO(Product Owner) ile bir araya gelmeyi beklemiyor, yazılımcılar kodlamaya geçmek için analizin tamamlanmasını beklemiyor, test uzmanları testlerine başlamak için kodlamanın tamamlanmasını beklemiyor. Herkes bir araya gelip, sonuca doğru ilerliyor. Akışta analiz, yazılım ve test görevleri mevcut ancak analist, yazılımcı ve test uzmanı bunlardan kendine uygun olanı almıyor, “takım üyeleri” her bir task için görev paylaşımı yapıyor.
Bu Noktada Test Uzmanından Beklenenler Nelerdir ?
Görüldüğü üzere yazılım geliştirme süreci içerisinde testin payı hala var. Hatta bu süreçler temelinde hataları engellemek üzerine kurulu olduğu için test vazgeçilemeyecek, es geçilemeyecek bir noktada. Bu da demek oluyor ki uzmanlığı test olan kişilere ihtiyaç devam edecek. Bununla birlikte uzmanlık alanı analiz ve yazılım geliştirme olan takım üyelerinin diğer rolleri paylaştığı gibi, test uzmanının da diğer rolleri paylaşması bekleniyor. Yani, test uzmanı sorumlu olduğu fonksiyonel testlerin yanı sıra analiz işlerine de destek olmalı, otomasyona alınacak test senaryolarını da otomatize etmelidir.
Bunların haricinde genellikle test uzmanları, diğer takım üyeleriyle karşılaştırıldığında test ettikleri sürecin tamamına daha hakimdir. Bu bakış açısı ile test uzmanları PO olmak için harika potansiyele sahiptir.