Logger du alle de JavaScript fejl der forekommer på dit live website?

Tags:    javascript jquery

<< < 12 > >>
Logger du alle de JavaScript fejl der forekommer på dit live website?

Hvorfor?/Hvorfor ikke?





16 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 11 karma
Sorter efter stemmer Sorter efter dato
Hvor alvorlig en fejl i JavaScript er afhænger af den konkrete fejl og behøver bestemt ikke altid at være alvorlig.
Logning er en god vej fremad for at opdage fejl, og selvom man skriver unit tests, kan man ikke fange alle fejl...uanset hvad sæbekassen siger. Det er slet ikke meningen med unit tests.



Jeg synes det er en god ide både at have unittests OG gemme en fejllog. En unittest tester kun det som udvikleren har valgt at teste og kun med de testdata der er valgt. Der er også forskel på gode og dårlige unittests. Jeg har gennem tiden set rigtig mange elendige unittests som i praksis var værre end slet ikke at have unittests. Unittests tester ofte et modul i isolation og tester ikke integrationen mellem de forskellige moduler. Det skal andre typer tests klare, og det er netop ofte i disse integrationer at fejl opstår selvom man har en stor test suite.

Hvilke frameworks/libs bruger I til at teste javascript?

For at komme tilbage til spørgsmålet, så nej, det gør jeg typisk ikke. Men jeg burde få taget mig sammen til at gøre det. Det siger også noget om den generelle kvalitet af kodebasen og produktet.



@Saebekassebil
Jeg mener ikke andet med backlog at der også er kendte fejl i jQuery der ikke et løst.

Ja det her med at have et produkt er nyt for mig, jeg kan godt se at det virker temmligt reklame-agtigt at have den her diskussion når nu jeg selv har et produkt der logger fejlene. Jeg har programmeret virkelig seriøs JavaScript siden 2002 og elsker JavaScript, og har altid været uvildig. Jeg skal lige vænne mig til at folk pluselig ser anderledes på det jeg skriver når jeg har et produkt. Vi lavede Muscula fordi vi selv havde brug for det.

Vi fanger fejlene på flere måder. Syntaksfejl fanges med onerror eventen. Men vi fanger faktisk exceptions på siden også, altså runtime-fejl. Vi kan ofte få fat i callstack, og den event (fx click) der blev fyret da fejlen kom. Og nogle gang kan vi også tage et lille "Billede" af den knap der blev klikket på. Og så viser vi også den linje i JavaScript-koden der fejlede.



Nej.
Og fordi jeg ikke kan finde ud af det.
Kan man godt få gemt de javascript der sker i brugernes browsere ?
Og hvordan gør man så det ?



Fejl? Er det ikke det de bruger i den tredje verden hvor de endnu ikke har opfundet unit tests? :)



@scootergrisen
Vi er ved at udvikle et produkt der virker som google analytics hvis du kender det? Du skal bare indsætte et lille script på din side og så får du et dashboard hvor du kan se alle fejlene.
http://muscula.com
Hvis du vil rode med det selv er der en artikel om hvordan man kan logge nogle fejl her:
http://blog.inspired.no/javascript-error-logging-with-ajax-154/. Den logger dog ikke fejl på iPad/iPhone og Safari-browseren. Og det er ganske få informationer man får om fejlen. Men måske godt nok til nogle.

@Per Sikker Hansen
Ja, unittests er super gode.
Men medmindre du er skriver programmel til rumfærger for NASA, så har du mellem 50 og 0,1 fejl i din kode pr 1.000 linjer kode. Skrevet om mange steder, se fx http://amartester.blogspot.com/2007/04/bugs-per-lines-of-code.html
Og det er selvom du skriver unittests. Meldingen fra folk der rent faktisk logger JavaScript fejl på live websites er, at de bliver overrrasket over hvor mange fejl der rent faktisk forekommer.

En fejl i JavaScript er lige så alvorligt som et website der er nede. Du logger måske heller ikke fejl hvis din backend (asp.net, php, jsp, etc.) kaster en fejl? :)



Indlæg senest redigeret d. 09.10.2011 09:06 af Bruger #16810
@Allan

En fejl i JavaScript på klientsiden er netop det du sikrer dig imod med Unit Tests. jQuery, Prototype.js, Dojo og alle de andre store mobbedrenge sikrer deres frameworks vha. unit tests. Hvorfor skulle man så som programmør have brug for "live-logning" af sine fejl?

JavaScript er noget af det nemmeste at trace, så som sagt, en grundig unit test før et push, tager altså det hele for mig.

PS: Kan du forklarer nogle af de fordele ved dit "muscula" from for Exceptional, som jeg har hørt var nogenlunde de-facto standard inden for "live-logning" af errors.



Indlæg senest redigeret d. 09.10.2011 15:21 af Bruger #11328
@Saebekassebil
Ja unittests er gode og enhver programmør gør selvfølgelig alt hvad han/hun kan for at undgå at der er fejl. Men enhver god programmør ved også at der helt sikkert opstår fejl på trods af dette.
På serversiden logger næsten alle fejl der opstår i deres asp.net/php/jsp etc. Min pointe er at Javascript fejl kan være mindst lige så slemme som en backend fejl, så hvorfor vil du ignorere dem og ikke logge dem?
Javascript er forretningskritisk kode, det skal behandles med samme respekt som backend kode.
Meldingen fra folk der logger Javascript på live websites er at de bliver overraskede over hvor mange fejl de har, når de begynder at logge.

jQuery og de andre har også en backlog med fejl, på trods af deres unittests.

Ang. Exceptinal, så vil jeg ikke give dig ret i at det er de-facto, der er mange andre fejllogning frameworks på markedet. Fx Airbreak.
Jeg kunne skrive et meget langt indlæg om forskellene mellem vores muscula on de andre JavaScript fejlloggere. Men det var nu ikke meningen at dette skulle blive til en salgstale for Muscula. Her er et par få forskelle:
Muscula installeres ligesom google analytics, dvs. Du kopierer bare et script ind på din side, ligesom google analytics. Du skal altså ikke installere noget software på din webserver.
Muscula fanger også fejl på iPad, iPhone og Safari. Det er ellers kun proxino der gør det.
Muscula giver mange flere detaljer on fejlen.



Indlæg senest redigeret d. 09.10.2011 16:07 af Bruger #16810
Hvilken backlog?



Hvis du følger fx @cowboy på twitter vil du se at han ind imellem deler tweets om fejl han har fixet i jQuery. Der er jo også noget der hedder version 1.6.0, 1.6.1, 1.6.2 osv. Se http://bugs.jquery.com/report



<< < 12 > >>
t