Difference between revisions of "Website:Testing And Profiling"

From WormBaseWiki
Jump to navigationJump to search
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
* Unit testing
+
 
* System Testing
+
 
 +
 
 +
''This document describes testing and monitoring of the web application.''
 +
 
 +
= Unit Testing =
 +
please go to [http://wiki.wormbase.org/index.php/Unit_Testing Unit Testing]
 +
 
 +
= System Testing =
 
* Validation (HTML/CSS/XML)
 
* Validation (HTML/CSS/XML)
 
* Security
 
* Security
Line 7: Line 14:
 
* Browser compatability
 
* Browser compatability
 
* Performance and stress testing
 
* Performance and stress testing
 +
 +
 +
= Profiling the Web Application =
 +
 +
Debugging notes:
 +
* RESTClient for Firefox
 +
* Poster for Firefox
 +
* Testing from the command line
 +
** http://stackoverflow.com/questions/1087185/http-testing-tool-easily-send-post-get-put
 +
 +
 +
== Profiling Czar duties ==
 +
* Explore profiling options and discuss
 +
** Built-in server and Catalyst::Stats
 +
** -d profilers: Devel::NYTProf
 +
* Add dynamically configurable profiling
 +
* Identify and report bottlenecks
 +
* Develop caching mechanism of ajax-requested widgets
 +
 +
== Using Devel::NYTProf ==
 +
 +
=== Profiling under the development server ===
 +
 +
$ cd website/
 +
$ perl -d:NYTProf script/wormbase_server.pl
 +
 +
Use Apache's '''ab''' tool to simulate requests (-n) and concurrency (-c):
 +
$ ab -n 1000 -c 5 http://localhost:3000/path/to/a/slow/page  // Need to use 127.0.0.1 on Mac OS
 +
$ GET http://localhost:3000/quit
 +
$ nytprofhtml --file website/nytprof.out --out ~/nytprof --deletee
 +
 +
Unfortunately, '''ab''' can only request a single URL at a time.
 +
 +
=== Profiling under FastCGI ===
 +
 +
And here's how to profile a specific page running under Apache/FastCGI:
 +
 +
As a socket server (assuming that apache is configured as described in the [[Website:Deployment|deployment]] documentation, listening on port 8000.
 +
cd website/
 +
perl -d:NYTProf script/wormbase_fastcgi.pl \
 +
  -l /tmp/wormbase.sock -n 5 -p /tmp/wormbase.pid
 +
 +
In a separate shell...
 +
 +
$ ab -n 1000 -c 5 http://127.0.0.1:8000/path/to/a/slow/page
 +
$ GET http://127.0.0.1:8000/quit
 +
$ nytprofhtml --file /usr/local/wormbase/website/nytprof.out --out ~/nytprof --delete
  
  
 
[[Category:Developer documentation]]
 
[[Category:Developer documentation]]
 +
[[Category:QA (Web Dev)]]

Latest revision as of 18:38, 18 June 2014


This document describes testing and monitoring of the web application.

Unit Testing

please go to Unit Testing

System Testing

  • Validation (HTML/CSS/XML)
  • Security
  • Accessibility
  • Usability
  • Browser compatability
  • Performance and stress testing


Profiling the Web Application

Debugging notes:


Profiling Czar duties

  • Explore profiling options and discuss
    • Built-in server and Catalyst::Stats
    • -d profilers: Devel::NYTProf
  • Add dynamically configurable profiling
  • Identify and report bottlenecks
  • Develop caching mechanism of ajax-requested widgets

Using Devel::NYTProf

Profiling under the development server

$ cd website/
$ perl -d:NYTProf script/wormbase_server.pl

Use Apache's ab tool to simulate requests (-n) and concurrency (-c):

$ ab -n 1000 -c 5 http://localhost:3000/path/to/a/slow/page   // Need to use 127.0.0.1 on Mac OS
$ GET http://localhost:3000/quit
$ nytprofhtml --file website/nytprof.out --out ~/nytprof --deletee

Unfortunately, ab can only request a single URL at a time.

Profiling under FastCGI

And here's how to profile a specific page running under Apache/FastCGI:

As a socket server (assuming that apache is configured as described in the deployment documentation, listening on port 8000.

cd website/
perl -d:NYTProf script/wormbase_fastcgi.pl \
  -l /tmp/wormbase.sock -n 5 -p /tmp/wormbase.pid

In a separate shell...

$ ab -n 1000 -c 5 http://127.0.0.1:8000/path/to/a/slow/page
$ GET http://127.0.0.1:8000/quit
$ nytprofhtml --file /usr/local/wormbase/website/nytprof.out --out ~/nytprof --delete