4. The case study tells us that: “Testing appeared to be non-existent – developers tested their own code but not part of an integrated testing strategy”.
Why is this flagged as a problem? What would be a more effective way of testing within a development environment?
Why is this flagged as a problem?
Answer(Hoang Tuan Long)
The problem here is that the developers only tested their own code and did not apply integration testing. They did unit testing on the individual module they were working on which is fine, but they completely failed when not even locally integrating all of those individual modules to test as a group or as the whole system.
A typical software project consists of multiple software modules, coded by different programmers. Integration testing focuses on checking data communication amongst these modules. So, the biggest defect of system modules experiencing unit testing but not integration testing is that we only know the single module works on its own but we don’t know if all modules work well and error-free with each other.
For example, assume that we have a bank simulation application which already has 2 different modules: Current Balance and Transfer. Each module woks fine separately. However, when it comes to the integration of Current Balance module to Transfer, the whole thing might not work at all. You may have 1000 dollars displayed nicely in Current Balance module, you navigate to the Transfer module to transfer 500 dollar to another account. Now you navigate back to the Current Balance module expecting that the latest balance should be 500 by now but actually it is not. The money is already transferred and updated into the database but somehow it does not show right away in the Current Balance module and maybe with a page refresh the new balance is now correctly shown. That's the error we need to fix and that's why we need integrated testing strategy.
What would be a more effective way of testing within a development environment?
Answer(Vuong Tan)
The more effective way of testing would be Agile testing. Agile testing is a software testing practice that is dependent on Agile principles. In Agile development, testing is not a separate stage, it is integrated into the development; so it is the integral part of core software development and participates through out coding process. An Agile team must have Testers. Testing occurs continuously in real time, so testers must always be there in the team working, testing the system, and collaborating actively with the development team to notify them of any identified issues by documentation. Testing and coding are done incrementally and iteratively, building up each feature until it provides enough value to release to the complete final product.
Advantages of agile testing would be:
· Better communication:
Since testers and developers work on the same team, they can more easily communicate with each other. Also, Testing requirements are discussed and refined as a team allowing the whole team to better address the business/technical aspects of the requirement.
Since testers and developers work on the same team, they can more easily communicate with each other. Also, Testing requirements are discussed and refined as a team allowing the whole team to better address the business/technical aspects of the requirement.
· Defects are easy to fix:
Because the testers work with the developers on the same team, they are able to give almost immediate feedback which lets the developer fix the bug while the code is still fresh in his mind.
Because the testers work with the developers on the same team, they are able to give almost immediate feedback which lets the developer fix the bug while the code is still fresh in his mind.
· Flexible to requirement changes:
Changes to requirement means changes to test cases. However, agile limit the development team to short sprints letting the team focus on completing a small set of features. The contents of the next sprint, however, are entirely up for discuss. That includes adding new, unplanned features and modifying already existing ones if that is what is best. So the whole system is very flexible for testing.
Changes to requirement means changes to test cases. However, agile limit the development team to short sprints letting the team focus on completing a small set of features. The contents of the next sprint, however, are entirely up for discuss. That includes adding new, unplanned features and modifying already existing ones if that is what is best. So the whole system is very flexible for testing.
Không có nhận xét nào:
Đăng nhận xét