The project is nearing completion. Test start time. What methods are possible at the end of the development cycle?
Suppose one project joins the end of a development cycle. The project was handed over to many teams and was general free for everyone, without any tests being carried out all the time. The rest of this team is unaware of testing (shame!) And unit testing each method seems impracticable at the moment.
Aside from usability testing, what would be the recommended product testing strategy at this time? Generally, is this the point at which you are stuck with manual point and expected output / actual output?
I usually take a bottom-up approach to testing, but I think you want to go top-down in this case. Test out the largest components you can wrap with unit tests and see how they fail. These failures should indicate which subcomponents need their own tests. When that is done, you will have a rather patchy test suite, but this is a start.
a source to share
If you have the budget for this, get a test automation kit. HP / Mercury QuickTest is the leader in this space, but it is very expensive. The idea is that you write test cases such as macros, driving your GUI through use cases. You fill in the inputs on the form (web, .net, swing, almost any GUI), the engine learns the names of the form elements. Then you can check the expected result in the GUI and in the db. You can then hook up a table or table of various test inputs, including invalid cases where it should fail, and run it through hundreds of scripts if you like. After the tests are recorded, you can also edit the generated scripts to customize them. He builds a neat report for you, at the end of which you can see for sure,which failed.
There are also several cheap and free GUI automation test suites that do much the same thing, but with fewer features. In general, the more expensive the kit, the less manual tuning is required. Check out this list: http://www.testingfaqs.org/t-gui.html
a source to share
Aside from usability testing, what would be the recommended product testing strategy at this time?
I would recommend reviewing the code by someone / people who know (or can develop) a functional product specification.
An extreme purist way would be to say that since it was "shared free for everyone without any testing" so none of this can be trusted: no testing existed, no code, no developers, no development process, no management, nothing about project. Also, testing does not improve the quality of the software (quality must be built in, part of the development process). The only way to get a quality product is to create a quality product; this product did not have quality in its build and therefore needs to be rebuilt:
- Treat existing source code as prototype or documentation for discard
- Build the new product separately, optionally containing suitable snippets (if any) of the old source code.
But checking the code (and fixing defects found when checking the code) can be faster. This will be in addition to functional testing.
Whether you want to not only test it, but spend extra time developing automated tests, depends on whether you want to keep the software (that is, in the future, change it in some way and then retest).
You will also need:
- Or:
- Knowledge of functional specification (and non-functional specification)
- Developers and / or QA users with a key
- Or:
- Small simple product
- Patient forgiving end users
- Continuous technical support after product delivery.
a source to share
One technique that I incorporate into my development practice when entering a project at this time in the lifecycle is to add unit tests as defects are discovered (by QA or end users). You won't get full code coverage of your existing codebase, but at least that way, future development can be guided and documented with tests. Also you need to be sure your tests are not working before working on the implementation. If you write a test and it doesn't get interrupted, the test is faulty.
Also, as new features are added to the system, run those that have tests to test at least those subsystems. As new systems interact with existing ones, try adding tests around old boundary layers and work your way up over time. While these tests will not be Unit tests, these integration tests are better than nothing.
Refactoring is another target for testing. Refactoring without tests is like walking a tight rope without a net. Can you get to the other side successfully, but is the risk worth the reward?
a source to share