Arquillian Extension for Performance-, Load-, Stresstests


#1

Hi there,

I am currently working on my master thesis which involves creating an Arquillian Extension for UI-Performancetests and BackEnd-Load- or Stresstests.

The main idea:
The tester uses the annotations

@UserCount(x)
@IterationCount(y)
@TimeDisplaced(z)

to declare that his/her method should be done in a certain way. The UserCount defines how many instances of the tests should be run in parallel ( or: How many users should be imitated). The TimeDisplaced would be 0 if the users run in parallel, but if you want some time between the start of each user you could say how many seconds shall pass. This whole run would be a scenario. Since non-functional tests often have some kind of error in their result I want to do multiple iterations and get the mean result at the end. The IterationCount would give the number of iterations.

This could be seen as the UI-Performancetest-Part of the extension. On the other side, I want to record RAM usage of our wildfly, the time of each used method in the backend and the size of the database.
This would enable the tester to specify in which part(s) of the tested programme the problems ly.

I already started coding an extension using the SPI. But I got some problems:

  • How may I create multiple browsers dynamically?
  • How could I clone/copy/share/… the testmethod in a way that is threadsafe?
  • Could I create another container in which the tests would run so that I could measure the RAM usage of that container and compare it with the usage of the wildfly? or do I even need a DeployableContainer?

Any help/ ideas would be much appreciated :hugs:


Guide on How To write an Arquillian Extension