Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Gökçe Tuncay ve diğer konuşmacıların sunduğu bir eğitim sunumudur. Gökçe, dot net'li valoperlikten QE (Quality Engineer) olarak geçiş yapmış, konuşmacılar arasında Gözçen, Selento ve bir computer science mezunu da bulunmaktadır.
- Video, test verisi yönetimi ve otomasyon konularını kapsamlı şekilde ele almaktadır. İçerik, test atası kavramı, test senaryoları, dağıtık sistemlerde veri toplama yöntemleri, Scala test framework'ü kullanımı ve veri üretimi teknikleri üzerine odaklanmaktadır. Uçak bileti rezervasyon sistemi örneği üzerinden test senaryoları, login, uçuş arama, rezervasyon ve iptal süreçleri için test case örnekleri sunulmaktadır.
- Sunumda ayrıca production database dump'ları, subset'ler ve sentetik veri üretimi yöntemleri karşılaştırılarak avantaj ve dezavantajları açıklanmaktadır. Selenium kullanarak web testleri yazma, DSL (Domain Specific Language) kullanımı ve test sonrası veriyi silme gibi pratik bilgiler de paylaşılmaktadır. Video, test yazarken basitlik ve anlaşılırlık önemi vurgulanarak sonlanmaktadır.
- 00:06Sunucunun Kendini Tanıtması
- Sunucu Gökçe Tuncay, yaklaşık yedi sene kadar .NET valoperliği yaptığını ve daha sonra QE (Quality Engineer) olarak geçtiğini belirtiyor.
- Developer olarak test yapmakla QE olarak test yapmanın tamamen farklı olduğunu, birinin yazılımın çalışmasını dileyerek, diğerinin ise çalışmamasını dileyerek test yaptığını vurguluyor.
- Sunumda hem manuel hem de otomasyon test konularını kapsayacağını belirtiyor.
- 01:20Test Data'nın Önemi
- Test data, test case'leri çalıştırmak ve oluşturmak için gerekli olan tüm veriyi sağlayacak data bütünlüğüdür.
- Test datasını mümkün olabildiğince erken oluşturmak çok önemlidir ve formatı önemli değildir.
- Test atasını hazırlamak ve test case'leri çalıştırmak, test yapan kişinin (tester) sorumluluğudur, bu da test yapanlarla developer'ları farklı tutan bir özellik.
- 03:26Test Atasının İçeriği
- Test atası için en azından yedi maddeyi göz önünde bulundurmak gerekir: no data, valid dataset, illegal data format, scripting, boundary condition dataset ve performans testleri için yüklü derecede data.
- No data testi, bir ekrana enter tuşuna basarak accessibility'yi ve validasyon hatalarını test etmeyi içerir.
- Valid dataset testi, normal bir aksiyonu kabul ederken, illegal data format testi scripting, SQL injection gibi güvenlik testlerini içerir.
- 05:33Test Senaryoları ve Corner Case'ler
- Sunucu, bir uçak bileti alma sürecindeki olası senaryoları (login, uçuş arama, rezervasyon, ödeme, iptal) gösteriyor.
- Her senaryo içinde testler bulunur ve bunların testlerini bize belirleyen genellikle test datanın kendisidir.
- Corner case'ler, normal düşünülmemiş test durumlarıdır ve test datası kullanılarak kolayca belirlenebilir.
- 09:48Uçak Bileti Satış Sistemleri ve Test Senaryoları
- Uçak bileti satışında "step bir yüzer story" adı verilen bir senaryo vardır; kullanıcı önce gelir etiketini ve boot yapar, sonra uçar gider uç uçağa.
- Sistemde kullanıcı ismi ve şifre gerekir, geçmiş tarih seçimi veya checkbox ile müdahale edilebilir.
- Payment ile ilgili senaryolar vardır; fake credit kartı geçilebilir, 3D secure doğrulaması geçilebilir veya entegrasyon problemi yaşanabilir.
- 11:23Aktarmalı Uçuşlar ve Ödeme Süreci
- Aktarmalı uçuşlarda (multi-stop) öncelikle bir uçuş sepete atılır, sonra ikinci booking yapılır.
- Aktarmalı uçuşlar iki satırda gösterilir, bekleme süresi ve durak bilgisi verilir.
- Genellikle ödeme sayfası üçüncü adımda çıkar ve tek bir ödeme yapılır.
- 12:23Bilet Satışı ve Koltuk Dağıtımı
- Bilet satışı sırasında görevli koltuklar açılmış olabilir veya dolu koltuklara dans atılmış olabilir.
- Bilet satışında distribution (dağıtım) stratejisi kullanılır; satıcı risk alarak daha fazla bilet satabilir.
- Algoritma kullanılarak en hızlı çözüm bulunur, Monte Carlo gibi yöntemler tercih edilir.
- 13:37Aynı Saniyede Bilet Alma Senaryosu
- Aynı saniyede aynı koltuğa iki kişi tıklayabilir, bu durumda database'e atma süresi önemli olur.
- Master'da beş dakikada yüzbinlerce bilet satılabilir ve aynı anda tıklama olabilir.
- Sistem aynı anda tıklanan kullanıcıları kuyruğa sokar ve sırayla işlem yapar.
- 15:24Kullanıcı Deneyimi ve Hata Mesajları
- Kullanıcıya hata mesajları verilir; "böyle bir uçuş bulunamadı" veya "rezerve edildi" gibi.
- Kullanıcı bekleme süresi sonunda "şimdi ödeme yapabilirsin" mesajı alabilir.
- Hepsiburada gibi platformlar, kullanıcıya sepetteki ürünün son bir tane kaldığını bildirerek engel olmaya çalışır.
- 17:05Test Senaryoları ve Veri Yönetimi
- Login senaryosunda dört test case düşünülebilir: hiçbir şey girmeden login'e basma, yanlış credential'lar girmek, sınır koşullarını test etmek ve doğru credential'larla giriş yapma.
- Uçuş arama senaryosunda valid ve invalid data setleri test edilir; örneğin İstanbul'dan İstanbul'a uçuş arama.
- Bilet rezervasyonunda promosyon kodu gibi illegal data test edilir, örneğin 100.000 karakter girildiğinde sistemin nasıl tepki vereceği.
- 19:47Gerçek Dünya Veri Yönetimi
- İlk iş deneyiminde küçük bir e-ticaret sitesinde tüm veriler şirket içinde yönetiliyordu.
- Gerçek dünyada veriler çok sayıda yerden gelir, bazen yanlış veya bozuk veriler olur.
- Distributed system'de veri yönetimi ve test datası oluşturma karmaşık olabilir.
- 21:48Çoklu API Kaynağından Veri Toplama
- Sony'de sekiz ayrı API kaynağından veri toplanıyor; imajlar, ürün bilgileri, gösterim zamanı ve sayfalar farklı kaynaklardan geliyor.
- Her bir API kaynağı için test ortamının mevcut olması gerekiyor ki end-to-end testleri başarıyla tamamlanabilsin.
- Sistem ayağa kalktıktan sonra gelen verinin beklenen veri olup olmadığı kontrol edilmeli ve her kaynak için bir iletişim noktası olması öneriliyor.
- 23:25API Kaynaklarıyla Çalışma Zorlukları
- Sekiz ayrı uygulamayı tek tek öğrenmek zor olduğundan, en çok kullanılan bir iki tanesini adapte olup öğrenmek ve diğerleri için kaynaklardaki iletişim noktalarına ihtiyaç duyuluyor.
- Kaynakların veritabanlarına genellikle erişim ve kontrol imkanı olmadığı için, veri oluşturma ve güncelleme işlemleri için iletişim noktalarına başvurulması gerekiyor.
- Dağıtık sistemlerde güvenlik sorunları, proxy/gateway zorlukları, veritabanında kontrol ve erişim olmaması ve hassas verilerin paylaşımının istenmemesi gibi problemler yaşanıyor.
- 25:15Test Verisi Üretim Yöntemleri
- En kolay test verisi üretme yöntemi üretim ortamından dump alıp test verisi olarak kullanmaktır.
- Alternatif olarak sentetik test verisi üretilmesi daha güvenli bir yöntem olabilir.
- Üretim dump'ının ciddi volümlü olması durumunda, test ortamının bu kadar veriyi kaldıramayacağı veya yavaşlık sorunu yaşanabileceği için özel subset çıkarmak daha iyi bir yöntem olabilir.
- 26:34Otomatik Veri Üretim Araçları
- Otomatik test veri üretimi araçları kullanılabilmekte ve bunlar kolay ve verimli çalışmaktadır.
- Örneğin "Generate Data" sitesi gibi araçlar, kullanıcı dostu arayüzler sunarak veri setlerini özelleştirmeye imkan tanır.
- Bu araçlar genellikle stres testi ve yük testi yaparken daha çok işe yarar, normal testlerde ise spesifik verilere daha fazla ihtiyaç vardır.
- 30:18Otomatik Test Verisi Üretimi
- Amazon Web Service ve sürekli entegrasyon araçları gibi tüm süreçleri otomatikleştirmek için test verisini de otomatikleştirmek faydalıdır.
- Scala test kullanılarak sayfalar suitler olarak bölünmüş ve her suit için özel veri setleri oluşturulabilmektedir.
- Her test suiti içinde anlık olarak veri üretilip, test tamamlandıktan sonra silinebilmektedir.
- 34:15Test Verisi Oluşturma ve Scala Test
- Veri tabanına yazılan format JSON veya XML olabilir, bu ihtiyaçlara göre değişebilir.
- Test verisi oluşturulurken DSL (Domain Specific Language) kullanılır ve template içeriği test tweetinden çağrılır.
- SQL kullanırken parametrik scriptler kullanılabilir, ancak MongoDB kullanıldığında genellikle JSON formatı tercih edilir.
- 35:41Selenium ve Scala Test Kullanımı
- Test çalıştırıldığında log'da "test success" yazısı görünür ve Selenium kullanılarak aynı işlemler gerçekleştirilir.
- Testlerde homepage açılıp açılmadığı, modüllerin varlığı ve kategori butonlarının sayısı gibi doğrulamalar yapılır.
- Scala test, Selenium'un matcher'larını kullanır ve temelde aynı işlevsellikte olmasına rağmen daha okunabilir bir dili sunar.
- 41:08DSL ve Fonksiyonel Testler
- DSL (Domain Specific Language) kullanılarak yazılım ekibiyle daha kolay çalışılabilir ve daha kapsamlı testler oluşturulabilir.
- Test yazarken en önemli şey basitlik olmalı; ilk bakışta ne iş yaptığını anlamalı, veriyi nasıl kullandığını ve nereden çektiğini bilmelisiniz.
- Framework'de "icon list konteyner" gibi isimlendirmeler kullanılarak testler basitleştirilmiştir.
- 42:40Test Verisi Oluşturma Yöntemleri
- Production dump kullanmak en kolay yöntemdir ancak testler çalışırken uzun sürebilir ve büyük hacimli datalarla çalışmak zor olabilir.
- Sentetik veri üretmek en güvenli yöntemdir; sıfır risk, beklenen sonuçları bilmek ve testleri hızlı çalıştırmak avantajları vardır.
- Sentetik veri üretmek için veritabanı şemasına hakim olmak ve relation'ları bilmek gerekir, bu da zaman alıcı bir süreçtir.
- 46:07Veritabanı Test Verisi Yönetimi
- Production veritabanından subset alıp kullanmak en verimli yöntemdir çünkü büyük veri hacminden kurtulmuş olursunuz.
- Subset yönteminin avantajı daha az veri kullanmak, dezavantajı ise veritabanı konusunda kabiliyet gerektirmesidir.
- Veritabanı ilişkilerine dikkat edilmelidir, örneğin ürüne bağlı sipariş, siparişe bağlı fatura gibi ilişkileri bozmadan veri silinmelidir.
- 47:26Production Veritabanı Kullanmanın Dezavantajları
- Production dump'ları güncel tutulmazsa testler eskide çalışır ve güncel senaryolar yakalanamaz.
- Production dump'ları güncellemek maliyet gerektirir ve bazı testler başarısız olabilir, bu durumda testlerin düzeltilmesi gerekir.
- Her türlü veri yönetimi bir beceri seti ve zaman yatırımı gerektirir.
- 48:18Veri Yönetimi Stratejileri
- Şirket olarak sentetik veri yaratmak güvenilirliği ve birden fazla API'den veri çekme kolaylığı için tercih edilmiştir.
- Verilerin güncel olması ve herkesin kendi makinesinde lokal bir kopyası olması önerilir.
- Production dump almak için bir DB admin veya devops takımından iletişim kurmak veya kendi yetkiniz olması gerekir.
- 50:24Veri Güncellemesi ve Bakımı
- Production değiştiğinde verilerin güncellenmesi önemlidir.
- Seed data ile çalışıp güncel takip edebilir veya production dump'ı düzenli olarak güncelleyebilirsiniz.
- Verilerin güncel kalması bakım açısından kritiktir.
- 50:58Topluluk Soru ve Cevap
- Katılımcılar arasında sentetik veri veya test verisi kullananlar sorgulanmıştır.
- Bazı katılımcılar güncel production verisini kullanırken, bazıları sentetik veri yaratmaktadır.
- Production'da bir hata çıktığında aynı senaryoyu tekrar yaratmak için manuel veri yaratımı yapılmaktadır.