There will be officially 8 man-hours for a software engineer. How can we accommodate all test execution in limited? Answer is may not be possible. There are many techniques to utilize these 8 hours in smart way.
- Code coverage. This will ensure that the code written by developer is completely tested. But 100% code coverage does not mean that product is bugs free
- Every changes done by software engineers should be tested and receive feedback from automation suit
- Regular automated builds, which includes unit testing, delivering snapshot version to maven repository
- Regular auto deployment. This will take latest artifact from maven repository and deploy into user test environment.
- Regular execution of regression suit using automation.
- Feedback of test results to team
Providing feedback for each action to the team is important. But taking action point on each feedback is most important. Its true that once we have automation in place, we will get lots of feedback from automation tools. Like this build is failed, The code is broke, following tests are failed, unable to locate dependency artifact in maven repository. etc. But its team responsibility to go through each feedback and act on it in time.
The most challenge for testers is how can we say that product is good enough to ship into the market. There are many theories and analysis to conclude on this. But these conclusions are changing day by day. I would not say that current conclusion is not good but I would rather say that we are good enough to explore better conclusion than present. This attitude of improvement bought software engineering up-to this stage.
Tester spend lots of time in building test environment, deploying application and then testing. I can even say that in some situation they spend more time in building test environment and deployment than execution. Following are the general actions performed by testers.
But how can we use our computers and software to work on our behalf in remaining 16 hours in a day? well this is nice idea! Right? we can perform most of the actions mentioned in the above paragraphs using automation tools. We can build, deploy and test application using automation tools. If we have whole test automation suite which does following actions on nightly.
- Build the project
- Run unit tests
- Create artifact
- Release into repository (e.g.: Maven)
- Deploy artifact from repository to test environment
- Run tests on it
- provide feedback to team
Following sections will explain about the above topics in detail.
Build Automation:
Apache Ant and Apache Maven are most popular tools to build Java project. The biggest advantage of Maven over Ant is , Maven building is system independent. User can build Java project on any machine without setting dependency artifacts and class-path more>>