2. Bölüm: Vasilii, Münih'te (Mayıs 2019)
Önceki bölümler
Güvenilir olmayan testler, Chrome'da yaygın olarak karşılaşılan bir sorundur. Onlar diğer geliştiricilerin üretkenliğini etkileyebilir ve zaman içinde devre dışı bırakılabilir. Testlerin devre dışı bırakılması, test kapsamının daralmasına neden olur.
Önceliklendirme Aşaması
Dizinlerin SAHİPLERİ, güvenilir olmayan testlerini düzeltmekten sorumludur. Güvenilir olmayan bir testle ilgili bir hata aldıysanız birkaç dakika neler yanlış gittiğine dair yorum yazın. Eski bir gevşek testiniz varsa Sorunun ne olduğu anlaşılamadı. Testi tekrar etkinleştirmeyi deneyin. Başka bir bileşende sorun olduğu açıkça belliyse hatayı en kısa sürede yeniden atayın. Bileşenin sahipleri arızayı daha iyi değerlendirmelidir.
Hata Ayıklama Aşaması
Bir dizi komut satırı işareti
güvenilir olmayan testler var. Örneğin, --enable-pixel-output-in-tests
gerçek tarayıcının kullanıcı arayüzünü oluşturur.
Hata ayıklayıcı, sapmaları ortadan kaldırırsa yedek araçlara sahip olun. İnsanların
olması mümkündür. Bu durumda
ifadeleri veya base::debug::StackTrace
yararlı olabilir.
Üretim hataları dışında EXPECT__*
hatalarının yaygın nedenlerini unutmayın
kod:
- Yanlış beklentiler (ör. güvenli sayfa HTTPS anlamına gelir; bunun yerine bir yerel ana makine olabilir).
- Uygun etkinliği beklemeyen testlerden kaynaklanan yarış koşulları.
[Uygulamayı test etmeyin][uygulamayı değil], davranışı test edin.
// It takes 2 round trips between the UI and the background thread to complete.
SyncWithTheStore();
SyncWithTheStore();
CheckTheStore();
Bu iki gidiş dönüş gelecekte üçe değişebileceği için testte sorun olabilir. Ancak yalnızca mağaza durumu önemlidir. Bunun yerine, mağaza.
Aşağıdakiler gibi yaygın kalıplara dikkat edin:
Submit TestPasswordForm(); // Wait until things settle down. RunLoop().RunUntilIdle(); CheckCredentialPromptVisible();
Tarayıcı testinden alınan yukarıdaki gibi bir snippet neredeyse kesinlikle yanlıştır. Farklı süreçlerde ve farklı süreçlerde gerçekleşmesi gereken birçok olay ileti dizileri.
Aşağıdaki düzeltme doğru bir çözümdür:
SubmitTestPasswordForm(); WaitUntilCredentialPromptVisible();
Yukarıdaki düzeltme,
WaitUntilCredentialPromptVisible()
, kullanıcı arayüzünü gerçekten kontrol etmiyor.
Tarayıcı testleri harici kullanıcı arayüzü etkinliklerine bağlı olmamalıdır (ör. "odak kaybedildi")
veya "pencere ön plan oldu" gibi bir ifade kullanabilirsiniz. İstemin
yalnızca tarayıcı penceresi etkin olduğunda görünür. Böyle bir uygulama
seçeneğini kullanarak ancak gerçek zaman aralığını kontrol etmek testin güvenilir olmamasına neden olur.
Onarım Sonrası Aşaması
Test düzeltildikten sonra yerel olarak yüzlerce kez çalıştırın. Bir göz atmayı unutmayın: Sadelik Portalı.