Testing in Webkit-EFL from 0% to 99% in 6 Months

Testing in Webkit-EFL from 0% to 99% in 6 Months

Testing in WebKit-EFL From 0% to 99% in 6 months Leandro Pereira ProFUSION Embedded Systems http://profusion.mobi February 04, 2012 WebKit WebKit I Good standards compliance I Comprised of WebCore, JavaScriptCore, one WebKit for each port WebKit I Heart of Epiphany, Chromium, Safari, Konqueror, and Eve I Comprised of WebCore, JavaScriptCore, one WebKit for each port WebKit I Heart of Epiphany, Chromium, Safari, Konqueror, and Eve I Good standards compliance , JavaScriptCore, one WebKit for each port WebKit I Heart of Epiphany, Chromium, Safari, Konqueror, and Eve I Good standards compliance I Comprised of WebCore , one WebKit for each port WebKit I Heart of Epiphany, Chromium, Safari, Konqueror, and Eve I Good standards compliance I Comprised of WebCore, JavaScriptCore WebKit I Heart of Epiphany, Chromium, Safari, Konqueror, and Eve I Good standards compliance I Comprised of WebCore, JavaScriptCore, one WebKit for each port WebKit I Heart of Epiphany, Chromium, Safari, Konqueror, and Eve I Good standards compliance I Comprised of WebCore, JavaScriptCore, one WebKit for each port, and WTF. I New feature ! new test I Over 9000 28000 tests I Some imported from other test suites (W3C, Mozilla, etc) I Some written by WebKit contributors I One of the reasons WebKit repo is so large (1.8GiB just for tests and expected results) I Most tests are port-independent I Test results are mostly port-dependent Testing in WebKit I Bug fixed ! new test I Over 9000 28000 tests I Some imported from other test suites (W3C, Mozilla, etc) I Some written by WebKit contributors I One of the reasons WebKit repo is so large (1.8GiB just for tests and expected results) I Most tests are port-independent I Test results are mostly port-dependent Testing in WebKit I Bug fixed ! new test I New feature ! new test I One of the reasons WebKit repo is so large (1.8GiB just for tests and expected results) I Most tests are port-independent I Test results are mostly port-dependent Testing in WebKit I Bug fixed ! new test I New feature ! new test I Over 9000 28000 tests I Some imported from other test suites (W3C, Mozilla, etc) I Some written by WebKit contributors I Test results are mostly port-dependent Testing in WebKit I Bug fixed ! new test I New feature ! new test I Over 9000 28000 tests I Some imported from other test suites (W3C, Mozilla, etc) I Some written by WebKit contributors I One of the reasons WebKit repo is so large (1.8GiB just for tests and expected results) I Most tests are port-independent Testing in WebKit I Bug fixed ! new test I New feature ! new test I Over 9000 28000 tests I Some imported from other test suites (W3C, Mozilla, etc) I Some written by WebKit contributors I One of the reasons WebKit repo is so large (1.8GiB just for tests and expected results) I Most tests are port-independent I Test results are mostly port-dependent I Historical name I Dumps the render tree I Dumps the textual representation I Dumps screenshots Testing tools DumpRenderTree (DRT) I Works just like an automated web browser; JavaScript: I Controls the output type I Injects keypresses I Tells when the test is done Testing tools DumpRenderTree (DRT) I Works just like an automated web browser; JavaScript: I Controls the output type I Injects keypresses I Tells when the test is done I Historical name I Dumps the render tree I Dumps the textual representation I Dumps screenshots Testing tools DumpRenderTree (DRT) Testing tools ImageDiff I Just like diff, but for images I Output is another image I Used to compare screenshots I Port-independent I Changed recently from a blob of Perl code to much nicer Python I New version is multiprocessing-aware, more resilient to crashing tests, and works better with flaky tests Testing tools run-webkit-tests I Runs DumpRenderTree I Compares output with eiter standard Unix diff or ImageDiff I If it's equal to the baseline, the test passes I Changed recently from a blob of Perl code to much nicer Python I New version is multiprocessing-aware, more resilient to crashing tests, and works better with flaky tests Testing tools run-webkit-tests I Runs DumpRenderTree I Compares output with eiter standard Unix diff or ImageDiff I If it's equal to the baseline, the test passes I Port-independent Testing tools run-webkit-tests I Runs DumpRenderTree I Compares output with eiter standard Unix diff or ImageDiff I If it's equal to the baseline, the test passes I Port-independent I Changed recently from a blob of Perl code to much nicer Python I New version is multiprocessing-aware, more resilient to crashing tests, and works better with flaky tests I Kind of cheating, but changes in behaviour are noticed I Hacky code, so not upstreamed Other tools Don't you love scripts? I find-drt-baselines.py I Compares output of EFL's DRT with other ports expected files I If blocks are the same, and their geometry is within a certain threshold, consider EFL's output correct Other tools Don't you love scripts? I find-drt-baselines.py I Compares output of EFL's DRT with other ports expected files I If blocks are the same, and their geometry is within a certain threshold, consider EFL's output correct I Kind of cheating, but changes in behaviour are noticed I Hacky code, so not upstreamed I But we don't implement everything... I ...so we have about 75% of coverage I Even then, to get to 99% of these was hard 75% I 75% of tests passes in WebKit-EFL using port-independent baselines I Even then, to get to 99% of these was hard 75% I 75% of tests passes in WebKit-EFL using port-independent baselines I But we don't implement everything... I ...so we have about 75% of coverage 75% I 75% of tests passes in WebKit-EFL using port-independent baselines I But we don't implement everything... I ...so we have about 75% of coverage I Even then, to get to 99% of these was hard Debugging WebKit is bad for the environment I Linking with debugging symbols takes a good while I Machine is pretty much useless while linking I gdb crashes At least there is icecc Amount of patches I In 6 months, around 100 patches were produced to implement DRT, ImageDiff and fix bugs I 60% of these were bug fixes I The rest were infrastructure changes and the tools themselves Milestones Period Milestone 1 month DumpRenderTree running 2 months 75% of tests passing 3 months 80% of tests passing 4 months 87% of tests passing 5 months 92% of tests passing 5.5 months 99% of tests passing 6 months EFL baselines upstreamed I Smart pointers are your friend. Except when they're not. I Don't trust your debugger. I But do trust Valgrind. I Don't try linking WebKit with debugging symbols on a Pandaboard. Unless you can spare around 20h to link. Set up a cross-compiler early. I Set up 32- and 64-bit machines early. I 4GB of RAM is not enough. Lessons learned I WebKit is a C++ library: don't code in C like you'd do on a PDP { even if others do the same. I Don't trust your debugger. I But do trust Valgrind. I Don't try linking WebKit with debugging symbols on a Pandaboard. Unless you can spare around 20h to link. Set up a cross-compiler early. I Set up 32- and 64-bit machines early. I 4GB of RAM is not enough. Lessons learned I WebKit is a C++ library: don't code in C like you'd do on a PDP { even if others do the same. I Smart pointers are your friend. Except when they're not. I But do trust Valgrind. I Don't try linking WebKit with debugging symbols on a Pandaboard. Unless you can spare around 20h to link. Set up a cross-compiler early. I Set up 32- and 64-bit machines early. I 4GB of RAM is not enough. Lessons learned I WebKit is a C++ library: don't code in C like you'd do on a PDP { even if others do the same. I Smart pointers are your friend. Except when they're not. I Don't trust your debugger. I Don't try linking WebKit with debugging symbols on a Pandaboard. Unless you can spare around 20h to link. Set up a cross-compiler early. I Set up 32- and 64-bit machines early. I 4GB of RAM is not enough. Lessons learned I WebKit is a C++ library: don't code in C like you'd do on a PDP { even if others do the same. I Smart pointers are your friend. Except when they're not. I Don't trust your debugger. I But do trust Valgrind. I Set up 32- and 64-bit machines early. I 4GB of RAM is not enough. Lessons learned I WebKit is a C++ library: don't code in C like you'd do on a PDP { even if others do the same. I Smart pointers are your friend. Except when they're not. I Don't trust your debugger. I But do trust Valgrind. I Don't try linking WebKit with debugging symbols on a Pandaboard. Unless you can spare around 20h to link. Set up a cross-compiler early. I 4GB of RAM is not enough. Lessons learned I WebKit is a C++ library: don't code in C like you'd do on a PDP { even if others do the same.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    40 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us