Utworzono skrypt w JavaScript, który jest wstrzykiwany do naszej aplikacji Ext JS podczas automatycznego testowania przeglądarki. Skrypt mierzy czas potrzebny do załadowania danych w naszych sieciach.Pomiar czasu ładowania strony przy użyciu JavaScript
W szczególności skrypt odpytuje każdą siatkę, sprawdza, czy istnieje pierwszy wiersz lub komunikat "brak danych", a gdy wszystkie sieci spełnią ten warunek, skrypt zapisuje wartość między Date.now() a wydajnością .timing.fetchStart i traktuje to jako czas załadowania strony.
Ten skrypt działa mniej więcej zgodnie z oczekiwaniami, jednak w porównaniu z czasem mierzonym przez człowieka (stoper Google ftw) czas zgłoszony w tym teście jest stale o około 300 milisekund dłuższy niż w przypadku pomiaru za pomocą stopera.
Moje pytania są następujące:
- Czy istnieje dziura w tym logiki, który mógłby prowadzić do błędnych wyników?
- Czy istnieją alternatywne i dokładne sposoby osiągnięcia tego pomiaru ?
Scenariusz jest następujący:
function loadPoll() {
var i, duration,
dataRow = '.firstRow', noDataRow = '.noData',
grids = ['.grid1', '.grid2', '.grid3','.grid4', 'grid5', 'grid6', 'grid7'];
for (i = 0; i < grids.length; ++i) {
var data = grids[i] + ' ' + dataRow,
noData = grids[i] + ' ' + noDataRow;
if (!(document.querySelector(data) || document.querySelector(noData))) {
window.setTimeout(loadPoll, 100);
return;
}
}
duration = Date.now() - performance.timing.fetchStart;
window.loadTime = duration;
}
loadPoll();
kilka uwag:
Chociaż zdaję sobie sprawę, że czas reakcji człowieka może być powolne, jestem pewien że niespójność 300 milisekund nie jest wprowadzany przez ludzki czynnik związany ze stoperem Google.
Patrząc na kod może się wydawać, że odpytywanie wielokrotności elementów może prowadzić do niespójności 300 ms, jednak gdy zmienić liczbę elementów są monitorowane od 7 do 1, nadal wydaje się być Nadwyżka 300 ms w czasie podanym w automatycznym teście .
Nasze testy automatyczne są wykonywane w ramach kontrolowanych przez Selen i kątomierz.
Z góry dziękuję, jeśli jesteście w stanie zapewnić jakikolwiek wgląd w to!
To pytanie jest otagowane [tag: node.js], ale pytanie zawiera kod, który używa 'window',' document.querySelector'. Usuwam tag. –