Peter Drucker, “Ölçemeyeceğiniz şeyi rehberlik edemezsin,” dedi. Bu, yazılımın geliştirilmesi için de geçerli olmalıdır. Öyleyse metrik değerleri belirtelim ve her şey yoluna girecek. Tamamen?
Özel bir örnek: Test kapsamı. Bu, testlerden ne kadar kod geçeceğinin bir ölçüsüdür. Geçmeyen kod testleri bile doğrulamıyor. Daha yüksek bir test kapsamı daha iyidir ve kod tarafından daha fazla kontrol edildiğini gösterir.
Test kapsamı ölçmek için yeterince kolaydır. Peki, belirli bir minimum değerin basit spesifikasyonundan daha belirgin ne olabilir? Bunu bir projede zaten yapan herkes buna göre iyi bir test kapsamı alacaktır. Bu nedenle daha dikkatli bir bakış, genellikle karmaşık kodu ve hatayı incelemek yerine banal kodun test edildiğini gösterir. Veya kodun sağladığı sonuçlar doğruluk için doğrulanmamıştır.
Sayaç: Amaç mı yoksa bilgi mi?
Arkasında birisinin bana belirli bir noktada açıkladığı genel bir ilke var. Belirli bir hedef değerin belirtildiği bir metrik aslında hassas bilgiler sağlar. Testlerin kapsamı için bu, gerçekte kodun iyi test edilmediğini gösterdiği anlamına gelir. Yüksek test kapsamı bir hedef haline gelirse, önemli ölçüde kaybeder. Çünkü şimdi projeye katılanlar, çok fazla çaba olmadan metrik için mümkün olan yüksek bir değer elde etmeye çalışacaklar. Bu, kodu gerçekleştiren, ancak önemsiz durumları araştıran veya kodun sonuçlarını kontrol etmeyen testler oluşturur. Yüksek test kapsamı, testlerin kalitesi hakkında fazla bir şey söylemez. Yüksek test kapsamına rağmen, kod iyi test edilmemiştir.
Bu aynı zamanda bir zamanlar duyduğum bir teklife uyum sağlar: “İyi bir yönetici sayılarına ulaşır – ve şirket iflas etmezse”. Verilen hedefe, diğer sonuçlara bakılmaksızın elde edilir.
Metrikler = Bilgi Azaltma
Bence metrikler bu nedenle bilgileri azaltmak için kullanılmalıdır. Yazılım sistemleri karmaşıktır. Tüm sistemi anlayabilseydim, metrikler gerekli olmazdı. Yazılım bunun için genellikle çok karmaşıktır. Ardından, sorunların nerede olabileceğini öğrenmek ve bunları ortadan kaldırmak için metrikleri kullanın. Düşük deneme kapsamı bir sorunu gösterebilir veya göstermeyebilir. Banal kodlu düşük deneme kapsamı, iyi bilinen bir odak noktasından çok daha az kötüdür.
Sonunda, bir projenin amacı yüksek kaliteli bir test kapsamı değildir. Testler sadece gerekli kaliteye ulaşmanın ve kodun kalitesine odaklanmanın bir yoludur. Ancak, kullanıcı bunu fark etmez. Testin kapsamı için bir hedef, belirli bir hedefin belirli bir tür başarısına odaklanır. Belki bir tür hedef daha iyidir.
()
Özel bir örnek: Test kapsamı. Bu, testlerden ne kadar kod geçeceğinin bir ölçüsüdür. Geçmeyen kod testleri bile doğrulamıyor. Daha yüksek bir test kapsamı daha iyidir ve kod tarafından daha fazla kontrol edildiğini gösterir.
Test kapsamı ölçmek için yeterince kolaydır. Peki, belirli bir minimum değerin basit spesifikasyonundan daha belirgin ne olabilir? Bunu bir projede zaten yapan herkes buna göre iyi bir test kapsamı alacaktır. Bu nedenle daha dikkatli bir bakış, genellikle karmaşık kodu ve hatayı incelemek yerine banal kodun test edildiğini gösterir. Veya kodun sağladığı sonuçlar doğruluk için doğrulanmamıştır.
Sayaç: Amaç mı yoksa bilgi mi?
Arkasında birisinin bana belirli bir noktada açıkladığı genel bir ilke var. Belirli bir hedef değerin belirtildiği bir metrik aslında hassas bilgiler sağlar. Testlerin kapsamı için bu, gerçekte kodun iyi test edilmediğini gösterdiği anlamına gelir. Yüksek test kapsamı bir hedef haline gelirse, önemli ölçüde kaybeder. Çünkü şimdi projeye katılanlar, çok fazla çaba olmadan metrik için mümkün olan yüksek bir değer elde etmeye çalışacaklar. Bu, kodu gerçekleştiren, ancak önemsiz durumları araştıran veya kodun sonuçlarını kontrol etmeyen testler oluşturur. Yüksek test kapsamı, testlerin kalitesi hakkında fazla bir şey söylemez. Yüksek test kapsamına rağmen, kod iyi test edilmemiştir.
Bu aynı zamanda bir zamanlar duyduğum bir teklife uyum sağlar: “İyi bir yönetici sayılarına ulaşır – ve şirket iflas etmezse”. Verilen hedefe, diğer sonuçlara bakılmaksızın elde edilir.
Metrikler = Bilgi Azaltma
Bence metrikler bu nedenle bilgileri azaltmak için kullanılmalıdır. Yazılım sistemleri karmaşıktır. Tüm sistemi anlayabilseydim, metrikler gerekli olmazdı. Yazılım bunun için genellikle çok karmaşıktır. Ardından, sorunların nerede olabileceğini öğrenmek ve bunları ortadan kaldırmak için metrikleri kullanın. Düşük deneme kapsamı bir sorunu gösterebilir veya göstermeyebilir. Banal kodlu düşük deneme kapsamı, iyi bilinen bir odak noktasından çok daha az kötüdür.
Sonunda, bir projenin amacı yüksek kaliteli bir test kapsamı değildir. Testler sadece gerekli kaliteye ulaşmanın ve kodun kalitesine odaklanmanın bir yoludur. Ancak, kullanıcı bunu fark etmez. Testin kapsamı için bir hedef, belirli bir hedefin belirli bir tür başarısına odaklanır. Belki bir tür hedef daha iyidir.
()