A systematic capture and replay strategy for testing complex gui based java applications