Belirli bir eylem için maksimum yürütme süresini belirten işlevsel olmayan gereksinimlerin olduğu bir projede , KG, gereksinimde hem donanım hem de yük belirtilen kesin yük altında kesin donanım kullanarak bu eylemin performansını özel bir makinede kontrol etmelidir.
Öte yandan, kaynak koddaki bazı hatalı değişiklikler performansı ciddi şekilde etkileyebilir. Erken bu olumsuz etki farkeden , önce kaynak kodu kaynak denetimi ulaşır ve QA departmanı tarafından doğrulandı, sorunu bildirmeden QA departmanı tarafından kaybedilen zaman açısından yararlı olacağı ve geliştirici tarafından daha sonra bunu birkaç hareketin tespit olabilir.
Bunu yapmak için iyi bir fikir mi:
Aynı eylemi yürütmek için harcanan zaman hakkında fikir sahibi olmak için birim testlerini² n kez,
C # özniteliği üzerinden sınama başına zaman aşımı kullanmak için
[TestMethod, Timeout(200)]
?
Bu yaklaşımla ilgili birkaç sorun bekliyorum:
Kavramsal olarak , birim testleri gerçekten bunun için değildir: bir kodun küçük bir kısmını test etmeleri beklenir, daha fazlası değil: ne fonksiyonel bir gereksinimin kontrolü, ne de entegrasyon testi veya performans testi.
Visual Studio'daki birim sınama zaman aşımı, başlatma ve temizlemenin bu sınamalar için mevcut olmadığını veya sonuçları etkilemeyecek kadar kısa olduğunu dikkate alarak ölçülmesi beklenenleri gerçekten ölçer mi?
Performansı bu şekilde ölçmek çirkin. Herhangi bir makinede donanım, yük vb. Bağımsız olarak bir karşılaştırma ölçütü çalıştırmak , bir veritabanı ürününün her zaman diğerinden daha hızlı olduğunu gösteren bir karşılaştırma ölçütü yapmak gibidir . Öte yandan, bu birim testlerin ne kesin sonuç ne de KG departmanı tarafından kullanılan bir şey olmasını beklemiyorum . Bu birim testleri, yalnızca beklenen performans hakkında genel bir fikir vermek ve esasen geliştiriciye son değişikliğinin performansı ciddi şekilde etkileyen bir şey kırdığı konusunda uyarmak için kullanılacaktır .
Teste Dayalı Geliştirme (TDD) bu testler için imkansızdır. İlk olarak, kod uygulamaya başlamadan önce nasıl başarısız olur?
Çok fazla performans testi, testleri çalıştırmak için gereken süreyi etkileyeceğinden, bu yaklaşım yalnızca kısa eylemlerle sınırlıdır.
Bu sorunları göz önünde bulundurarak, QA departmanının gerçek performans metrikleriyle birleştirilirse, bu tür birim testlerini kullanmayı ilginç buluyorum.
Yanlış mıyım? Bunun için birim testlerinin kullanılmasını tamamen kabul edilemez hale getiren başka problemler var mı?
Yanılıyorsam, kaynak kodu kaynak kontrolüne ulaşmadan ve KG departmanı tarafından doğrulanmadan önce, kaynak kodundaki bir değişikliğin performansı ciddi şekilde etkilediğini geliştiriciye uyarmanın doğru yolu nedir?
Unit Aslında, birim testlerinin yalnızca karşılaştırılabilir donanım performansına sahip geliştirici PC'lerde çalışması beklenir, bu da performans testinde asla başarısız olamayacak en hızlı makineler ile asla geçmeyi başaramayacak en yavaş makineler arasındaki boşluğu azaltır.
² Eylem olarak, çalıştırmak için birkaç milisaniye harcayan oldukça kısa bir kod parçası demek istiyorum.