Neden hataları bildirmek için kullanıcılarınıza güvenmek, şimdiye kadar yapacağınız en saçma şeydir.

Mutsuz kullanıcılarınız varsa, nasıl bildiniz?

Hepimiz kodlamayı seviyoruz.

Kodlamayı düşündüğümüzde, genellikle kendimizi inşa ettiğimizi hayal ederiz.

Yapı özellikleri, yeni yenilikler, yeni işlevler ve kullanıcıların seveceği heyecan verici güncellemeler. Bu, daha sonra inşa edebileceğimiz şeyler hakkında bizi heyecanlandıran zihinsel tablo.

Ancak kafamızdaki romantik görüntüler çoğu zaman gerçeğe çevrilmez.

Yazılım geliştiriciler zamanlarının çoğunu bina dışındaki görevlere harcarlar. Toplantılara katılırlar, şartnameleri tartışırlar, planlar ve mevcut yasaları düzenlerler. Ve elbette, en sevdikleri etkinlik hataları düzeltmektir.

Henüz kod tabanında sorunları bulmayı seven bir geliştiriciyle tanışmadım. Ancak bu hayal kırıklığı muhtemelen hataları bulma ve çoğaltma işleminin uzun zaman almasından kaynaklanmaktadır.

Tarihsel olarak, yazılım geliştiriciler samanlıktaki iğneyi aramak zorunda kalmışlardır. Microsoft Word belgesinde yayınlanan kullanıcıların ekran görüntülerine güvenmek yerine yanıtları kendileri bulmak zorunda kaldılar.

Hepimiz oradaydık!

Hangi tarayıcıyı ve sürümünü kullanıyorsunuz? Hangi işletim sistemi? Bana tam olarak nereyi tıkladığını söyleyebilir misin? Sonra ne oldu? Daha önce hangi sayfadaydın? Bu ekrana nasıl başladınız?

Çok fazla soru, çok az sayıda (faydalı) cevap.

Bir hata ayıklama sonsuza kadar sürebilir!

Sorunları bildirmek için kullanıcılara güvenmek

Birçok yazılım geliştirme ekibi, uygulamaları ile ilgili sorunları bildirmek için hala kullanıcılara güveniyor.

Bu günlerde biraz çılgınca.

Tıpkı fast food restoran zincirleri gibi. Tepsileri ve çöp atma istasyonlarını sağlayarak müşterilerin kendi masalarını temizlemesini istemektedir. Restoranın yemekleri korkunç olabilirdi. Ancak müşteri masalarını sakince temizleyebilir, çöplerini bırakıp uzaklaştırabilirdi. Şikayet için zaman ayırmazlarsa, personel restorandan yeni çıkmış mutlu bir müşterinin olduğunu varsayar.

Ama asla geri dönmeyecekler.

Bazı geliştiriciler, uygulamalarını kullanırken kullanıcıların kendileri için harcamalarını beklemektedir. Ne de olsa, kimse sorun bildirmiyorsa, hiçbir hakkımız yok mu? Kullanıcılarını, yaşadıkları sorunları bildirmek üzere kullanıcılarına bağlamak sınırlayıcıdır. Tüm kullanıcı tabanınızı etkileyen toplam örneklerin yaklaşık% 1'ini göreceksiniz ve teknik ayrıntılar ince ve tutarsız olacaktır.

Geliştiriciler sorunu çözmek için daha fazla zaman harcayacak - küçük bilgi parçaları kullanarak - düzeltmek yerine. Eğer problemi bulabilirlerse.

Yazılımınız düşündüğünüz kadar iyi değil

Büyük bir çevrimiçi perakendeci için çalışan bir arkadaşımla konuşuyordum. Çevrimiçi sipariş sistemlerinde kimsenin bilmediği büyük bir problemi nasıl bulduğunu anlattı.

Birkaç gün süren araştırmalardan sonra sorunu tam olarak belirleyemediler. Bu noktada, uygulamalarındaki hataları tespit etmek ve teşhis etmek için özel bir araç denemeye karar verdiler.

Buldukları şey endişe verici idi.

Araç, sekiz sunucudan birinin hafızasının tükendiğini ve hata attığını tespit etti. Bu, kullanıcının ödeme akışının tamamen durmasına kadar taşmasına neden oldu.

Her sekiz kullanıcı ödeme oturumundan biri kırıldı.

Bu sorunu bulmak ve düzeltmek, ayda 20.000 $ 'lık satışlarda hemen artmaya neden oldu! Satın alma sürecinde insanlar artık sorun yaşamıyorlardı.

5.000'in üzerinde kullanıcıyı etkilediğini tahmin ettiler - ancak bu konuda yalnızca iki destek bileti aldılar.

Her ne kadar takım sorunu bulmaktan mutlu olsa da, aynı zamanda çok büyük bir hayal kırıklığı yaşandı. Tanımlanamayan bir hata büyük olasılıkla 100.000 $ 'ın üzerinde kazanılmamış gelirle sonuçlandı.

Hatalar oluştuğunda kendini e-postayla göndermek aptalca bir fikir

Kod giriş günlüklerinizde meydana gelen canlı yayın akışlarını izleyerek oturabilirsiniz. Ve siz uyurken bunu yapmak için sıcak bir vücut kiralayabilirsiniz. Veya, işlenmeyen bir istisna olduğunda kendinize e-posta gönderebilirsiniz - harika bir fikir gibi görünüyor!

Yapana kadar.

Bunu ayarladıysanız, şöyle görünebilir:

public void TryProcessLineNumber (int satırNumarası)
{
    Deneyin
    {
        ProcessLineNumber (LineNumber);
    }
    yakalamak (İstisna)
    {
        LetMyselfKnowViaEmail ("Bir şeyler ters gitti:" + ex.Message);
    }
}

Ancak yaratabileceği sorunlara dikkat edin.

E-posta gönderme hataları daha küçük yan projeler ve kişisel projeler için uygun olabilir. Fakat bunun dışında genişlediğinizde, işler karışmaya başlar. Çok, çok dağınık:

  • Teşhis detayları sınırlıdır
  • Bildirim kurallarını belirlemek zor ve işler gürültülü olmaya başladı
  • Sonsuz bir döngüde yakalanan bir istisna, bir gecede gelen kutunuza 50.000 e-posta gönderebilir
  • Hataların öncelik seviyesi veya etki görünürlüğü yoktur ve hepsi eşit görünür
  • Yüzden fazla e-postaya ulaştıktan sonra, onları okumaktan vazgeçersiniz

Kendi hatalarınızı e-posta ile göndermeye başladıktan kısa bir süre sonra, onları görmezden gelin. Ya da onları bir klasöre filtrelersiniz, çünkü çok fazla gürültü var ve sinyal yok.

Doğru hata örneğini arayan binlerce e-posta yoluyla gezinmeye başladınız.

Daha akıllı bir şeye ihtiyacımız var.

ELMAH - istisnalarınızı günlüğe kaydetme

ELMAH (Hata Günlüğü Modülleri ve İşleyicileri), tamamen takılabilir olan uygulama genelinde bir hata günlüğü tesisidir. Yeniden derleme veya yeniden dağıtım gerekmeden çalışan bir ASP.NET web uygulamasına veya hatta bir makinedeki tüm ASP.NET web uygulamalarına dinamik olarak eklenebilir.

ELMAH, her programlama dilini ve platformunu desteklememektedir. Bir sorunun kök nedenini ortaya çıkarırken işlevselliği oldukça sınırlı olduğundan, genellikle daha küçük projeler için kullanılır. Aynı zamanda bugünlerde aktif olarak aktif değil, ama en azından bir şey ve ücretsiz.

Elmah hata günlüğü

ELMAH, temel olarak .NET web uygulamaları için bir NuGet paketidir. Bir veya daha fazla web sitesinde meydana gelen her istisnayı seçtiğiniz depolamaya kaydeder. Diğer kayıt çerçevelerinin aksine, ELMAH en basit haliyle yapılandırıldığında otomatik olarak her istisnada oturum açar. Elbette, özel hataları günlüğe kaydetmek için kullanabileceğiniz bir API vardır. Ancak çoğu insan sadece otomatik kısmı kullanır. Bu derste sadece temel kısımlara odaklanacağız.

İşte nasıl başlayacağınızla ilgili harika bir öğretici.

Özel hata ve kilitlenme raporlama araçları

Uygulamalarınızdaki hataları ve çökmeleri ele alma konusunda ciddiyseniz, özel bir hata izleme aracı kullanın. Uygulama kodunuza bir sağlayıcı ekleyerek kullanıcılarınızı otomatik olarak etkileyen sorunları tespit eder ve tanılar.

Birkaç kod satırı - hepsi bu.

Bunun gibi bir araç kullanmak şunları yapmanızı sağlar:

  • Gürültülü istisnaları ortadan kaldırın ve kullanıcıları etkilemek gibi önemli konulara odaklanın
  • E-posta, Slack veya HipChat ile yapılandırılabilir bildirimler ayarlama
  • Birden fazla dili ve platformu izlemek için bir araç kullanın
  • Benzer hatalar için hata gruplandırmasından yararlanın
  • Tüm ekibini hataların ve çözümlerinin üstünde tut
Raygun gibi özel bir hata izleme yazılımı kullanın

Bunun gibi araçlar, tartıştığımız diğer programlar gibi ucuz ya da ücretsiz değildir, ancak zamanınıza hangi fiyatı koyarsınız? Ücretsiz bir çözüm kullandığınızı söyleyin. Sonra bir hatayı yeniden oluşturmaya çalışırken üç saat boyunca kodlamayı bırakmanız gerekir. Bu aslında çok düşük bir yatırım getirisidir.

Hızlı hareket etmek ve kullanıcılara yeni işlevsellik sunmak isteyen ekipler, bu tür profesyonel çözümlerin her kuruşa değeceğini söylüyorlar. Geliştiricilerin onarım hatalarını harcadıkları zamanı azaltabilir ve kodlama ve iyileştirmelere geri dönmelerini sağlayabilirler.

Kodunuzun mükemmel olduğunu ve kullanıcıların herhangi bir sorunu olmadığını düşünüyorsanız, Raygun gibi bir araç takın. Ne bulduğuna şaşıracaksın.

Proaktif bir yaklaşım benimseyin ve ödülleri toplayın

Yazılım sorunlarımızı otomatik olarak düzeltmek için hepimiz teknolojiyi seviyoruz. Maalesef, kendini iyileştirme ve kendini tanıma yazılımlarından bir süre uzak olduğumuzu düşünüyorum.

Hata ve çökme çözünürlüğünü kolaylaştırmak için hata izleme çözümlerini geliştirici iş akışlarına da ekleyebilirsiniz. Ancak veriler çoğu zaman diğer sistemlerde bağlamdan kirli ve ayrıştırılır.

Hata izlemenin geleceği, tüm ekiplerin - ön uç, arka uç, yönetim veya destek - kullanıcılarının karşılaştıkları her problemde tam bir görünürlük elde etmesini sağlar. Ve sonra hemen çözmek için yeteneği var.

Bu, sürekli teslimat ve dağıtım alanındaki yaklaşmakta olan eğilimleri de kapsamaktadır. Sorunu belirledikten dakikalar içinde düzeltmeleri uygulayabilir ve üretime gönderebilirsiniz. Bir sonraki ana dağıtımdan önce haftalar beklemeniz gerekmez.

Kendi uygulamalarınızdaki hataları ve çökmeleri ele alırken odağınızı ekibinize yerleştirin. Kullanıcılarınızdan önce sorunları keşfedin ve hataları bildirmek için bunlara güvenmeyin.

Çünkü yapmayacaklar.