Daha önce hiç yazılım test etmediysen yapay zekayla geliştirdiğin uygulamayı nasıl test edersin
Bir QA geçmişin yokken yapay zekayla geliştirdiğin uygulamayı test etmeye dair pratik bir rehber. Nereye tıklayacağın, neyi bilerek bozacağın ve paylaşmaya yetecek kadar iyi olduğunu nasıl anlayacağın.
Yapay zekayla bir uygulama geliştirdin. Mutlu yolda çalışıyor — adını yazıyorsun, düğmeye tıklıyorsun, başarı ekranını görüyorsun. Şimdi ne olacak? Üç beta kullanıcına göndermeye hazır mı? Ekibine? Müşterilerine?
Bir yazılım geçmişin yoksa, test etmek “gerçek geliştiricilerin” yaptığı o şeylerden biri gibi gelir — framework’ler, doğrulamalar ve CI hatlarıyla. İyi haber: çoğu testin gerçekte yaptığı bu değil. Çoğu test, özellikle küçük ve yeni bir şey yayınlarken, niyetle etrafa tıklayan tek bir kişidir. Bunu sen yapabilirsin. Bu yazı, bunu bilerek yapmaya dair — böylece hataları kullanıcılarından önce bulursun.
Amaç, yapay zekayla geliştirdiğin uygulamayı bir profesyonel gibi test etmek değil. Gerçekten çalışmasını isteyen paranoyak bir arkadaş gibi test etmektir.
İki-liste numarası
Hiçbir şeye tıklamadan önce, boş bir belgeyle on dakika otur ve iki liste yaz.
Liste A — mutlu yollar. Bir kullanıcının bu uygulamayla yapması gereken üç ya da dört şey nedir? Tipik bir SaaS için bu şu olabilir: kaydol, ilk projeni oluştur, bir takım arkadaşı davet et, bir sonuç dışa aktar. Dizin tarzı bir uygulama için: ara, filtrele, bir kayda tıkla, kaydet. Sade bir dille, üç ya da dört gerçek akış.
Liste B — mutsuz yollar. Ya kullanıcı neredeyse doğru ama tam olarak değil bir şey yaparsa? E-postasını yazım hatasıyla yazar. Akışın ortasında geri düğmesine basar. İki sekme açar ve aynı şeyi ikisinde de düzenler. Boş bir form gönderir. Bir Word belgesinin içeriğini — biçimlendirmesiyle birlikte — bir metin alanına yapıştırır. Dizüstü bilgisayarı kapatıp on dakika sonra tekrar açar. Sistemde zaten var olan bir e-posta adresini kullanarak bir takım arkadaşı davet etmeye çalışır.
Mutlu-yol listesi, yapay zeka uygulama oluşturucunun optimize ettiği şeydir. Kodu yazarken yapay zekanın zihninde test ettiği şeydir. Mutsuz-yol listesi ise hataların yaşadığı yerdir, çünkü neredeyse hiç kimse — ne yapay zeka ne de promptları yazarkenki sen — bu durumları düşünmüyordu.
Gerçekten test ettiğinde, temellerin çalıştığını doğrulamak için önce Liste A’yı baştan sona geç. Sonra zamanının büyük kısmını Liste B’ye harca. Değer Liste B’dedir. Liste B aynı zamanda, işler ters gittiğinde uygulamanın gerçekte ne yapmasını istediğini öğrendiğin yerdir; bu da çoğu zaman yapay zeka oluşturucuyla netleştirici bir konuşmaya zorlar (“form yarım doldurulduğunda uyarmalı mı yoksa otomatik kaydetmeli mi?”).
Bilerek bozulacak üç şey
Listelerini yaptıktan sonra, işte yapay zekayla geliştirilen uygulamalardaki gerçek hataların çoğunu yakalayan üç kategori.
Boş ve garip girdiler. Formu hiçbir şey doldurmadan gönder. Tek bir alan doluyken gönder. 500 karakter uzunluğunda bir ad gönder. Emojili bir ad gönder. Bir ad bekleyen bir alana bir URL yapıştır. E-posta alanını “test” ile, “test@” ile, “test@example” ile, “a@b.co” adresiyle dene — meşru kısa e-postaları kabul ediyor mu? Yapay zeka uygulama oluşturucular sık sık doğrulama ekler, ama doğrulama iki yönde de yanlış olabilir — çok katı (gerçek kullanıcıları reddeder) ya da çok gevşek (çöpü kabul eder).
Geriye ve yana gitmek. Çoğu uygulama, onların içinden itaatkâr bir tur grubu gibi geçersen gayet iyi çalışır. Biri keşfetmeye başladığı anda bozulurlar. Geri düğmesine tıkla. Tekrar ileri tıkla. Bir akışın ortasında sayfayı yenile. Aynı sayfayı iki sekmede aç ve ikisinde de düzenle. Çıkış yap ve tekrar giriş yap. Bir “geri al” düğmen varsa, üst üste üç kez tıkla. Bunlar uç durumlar değil. İnsanlar yazılımı gerçekte böyle kullanır.
Sonrasındaki veri. Uygulamanın geliştirdiği şeyi geliştir. Bir proje, bir gönderi, bir kayıt, her ne ise. Sonra yarın geri gel. Hâlâ orada mı? Biçimlendirme hayatta kaldı mı? Onu düzenlersen, düzenleme kaydoluyor mu? Onu silersen, gerçekten gitti mi, yoksa yenileyince geri mi geliyor? Yapay zeka uygulama oluşturucular sık sık “oluştur” akışını mükemmel yapar ve oluşturduğun her şeyin kalıcı olması ve sonradan düzenlenebilir olması gerektiğini unutur.
”Yeterince iyi” neye benzer
Yapay zekayla geliştirdiğin uygulamayı asla mükemmele kadar test edemezsin. Yazılım fazla karışık ve zamanın fazla değerli. Soru “mükemmel mi” değil — “önüne koyacağım bir sonraki insan grubu için yeterince iyi mi”.
İşte ödünç alabileceğin kaba bir hiyerarşi.
Demo için yeterince iyi: mutlu yol çökmeden çalışıyor. Düğmeler gitmeleri gereken yere gidiyor. Hiçbir şeyi kesmeden bir ekran kaydı gösterebiliyorsun.
Dost kullanıcılar için yeterince iyi: mutsuz yollar veri kaybetmiyor. Formlar sessizce başarısız olmak yerine neyin yanlış olduğunu söylüyor. Sayfayı yenilemek bir şeyleri bozmuyor. Üç arkadaş, yardım için sana mesaj atmadan onu kullanabiliyor.
Ödeme yapan kullanıcılar için yeterince iyi: uygulama hiç tanımadığın kullanıcıları kaldırıyor. Onların tarayıcıları, verileri, alışkanlıkları. İşler bozulduğunda görmenin bir yolu var (temel hata takibi yeterli — süslü bir panele ihtiyacın yok). Zaten kullananları bozmadan düzeltip yeniden dağıtabiliyorsun.
Çoğu geliştirici “dost kullanıcılar” düzeyinde yayınlar ve sonra geri bildirim geldikçe yükseltir. Bu doğru. Hata, “demo için yeterince iyi”den doğrudan “ödeme yapan kullanıcılar için yeterince iyi”ye, ara adım olmadan atlamaya çalışmaktır. Dost kullanıcılar, gerçek kullanıcıların bulacağı şeyleri bulur — ama onlara kızmazlar. O boşluğu kullan.
Yapay zekadan senin için test etmesini ne zaman isteyebilirsin
Yapay zeka uygulama oluşturucun test konusunda yardım edebilir, ama ne istediğin konusunda spesifik olmalısın. “Testler ekle” kötü bir prompt’tur. Test gibi görünen ve muhtemelen geçen, ama önemsediğin hiçbir şeyi gerçekten kontrol etmeyen kod üretir. O otomatik üretilen testlerin çoğu, 1+1’in hâlâ 2 olduğunu doğrular.
Daha iyi bir prompt: “Az önce kayıt formunu boş bir e-posta alanıyla göndermeyi denedim ve çöktü. Bunun nerede ele alındığını bul ve çökme yerine dostça bir hata gösteren bir kontrol ekle.” Spesifik hata, spesifik düzeltme, spesifik sonuç. Yapay zeka bunda iyidir. “Uygulamamın hatasız olduğundan emin ol”da kötüdür, çünkü bu bir görev değil — bir dilek.
Yapay zeka oluşturucuların iyi olduğu diğer şey, hatanı yeniden oynatmaktır. Ne yaptığını, ne beklediğini ve ne olduğunu anlatırsan, oluşturucu genellikle kodu baştan sona izleyip bir düzeltme önerebilir. İhtiyacın olan disiplin, o üç şeyi açıkça yazma disiplinidir. Çoğu yeni başlayan hata raporu “çalışmıyor”un bir versiyonudur. Çoğu düzeltilebilir hata raporu “X’e tıkladım, Y bekledim, Z aldım”dır.
Test etmek sadece tıklamak değil, okumaktır
Son bir şey. Yapay zekayla geliştirdiğin uygulamadaki her kod satırını anlamak zorunda değilsin, onu iyi test etmek için. Ama en azından göz gezdirmelisin. Yapay zekanın az önce değiştirdiği dosyayı aç. Eklediği fonksiyonu oku. Her anahtar kelimenin ne anlama geldiğini bilmen gerekmez — fonksiyonun istediğin şeyi yapıyor gibi görünüp görünmediğini bilmen gerekir.
Yapay zekayla geliştirilen hataların çoğu “kod bozuk” değildir. “Kod, istediğinden biraz farklı bir şey yapıyor”dur. Bir alan yanlış yere kaydolur. Bir düğme bir şeyi günceller ama ilişkili şeyi güncellemez. Bir “sil” düğmesi silmek yerine gizler. Bunları, gerçekte ne geliştirildiğini okumadan yakalayamazsın.
Kodu, yazmak zorunda olduğun bir şey değil, denetleyebileceğin bir şey olarak ele al. Güvendiğin bir yapay zeka uygulaması ile sadece çalışmasını umduğun bir uygulama arasındaki fark budur.
Sade hali
Başka hiçbir şey hatırlamayacaksan: iki listeyi yaz, bilerek bir şeyleri boz ve hangi “yeterince iyi” düzeyinde yayınladığına karar ver. Yapay zekayla geliştirilen bir uygulamadaki çoğu hata ince değildir. Kimsenin yazma zahmetine girmediği mutsuz-yol listesinde otururlar.
Küçük bir ödev istersen: geliştirdiğin bir uygulamayı seç ve dört şey dene — boş bir form gönder, akışın ortasında yenile, bir kaydı düzenle ve yarın kontrol et ve bir arkadaşından sen izlemeden onu kullanmasını iste. Her ne bozulursa, gerçek hata listendir. Geri kalan her şey ertelemedir.