There are many unit/integration testing techniques. I would like to know how these techniques are implemented in real world? How testing procedures take place in different companies? What kind of tools are used usually?
xUnit testing frameworks exist for nearly every programming language. I have used those for Java, .NET, ActionScript, PhP, Objective-C, ... As well, the BDD framework is now implemented against a lot of languages including Java, Ruby, PhP, and .NET.
Many companies using Java will use build tools such as Maven that will build the system and run all the unit tests. The Maven framework is designed to work with any language and in a business situation, I have used it with Java and ActionScript.
If you really want to know what happens in practice, then find one of the mailing lists on testing and talk tot he practitioners.
Unit testing focuses on the modules or units that can be executed independently, however, integration test highly deals with the interfaces of those and interaction between the units and modules. In real world (most of the software development companies) use their own tools (they built the tools according to their organizational standards). Unit testing tools can be available easily in the market such as Junit. But, integration testing depends on what you developed and how (what quality standards you use, etc). Basicly if you create your product with full documentation using a CASE tool such as EA, RR, you would use these tools also for integration and acceptance tests.
Why do I have to generate new tools? Can't I use soemthing like JUnit or a BDD tool to test the interaction between two objects? Yes, they were designed as unit testing tools but as soon as I use more than one object, am I not doing some form of integration testing?
What about tools like Selenium that are designed to work through the user interface? Can I not use these to automate integration tests?
Sure, I might need to write some code to ensure the database is in the write state but this is often a case of setting up an SQL script to load and unload the data.
I have been experimenting with PHP testing using PHPUnit, behat (BDD tool) and mink (BDD through the browser). It seems to me that I could do both unit and integration testing with this tool set.
Yes, of course you can use them for objects, what for huge number of modules with huge sizes. In my opinion, existing generic tools are more proper for tesing of short term, compact sized and platform dependent projects, I think they may be useful for verification (and white box), but I am not sure about validation testing. Moreover, If we consider about medium or big sized projects containing potentially reusable units, and if they have a platform independent structure (not ready yet for execution) or the source code includes more one prog.language, a simple tool may not be suffient to test it, and you may need to have a more sophisticated tool. About Selenium, (if I am wrong please correct me because I have never used it for platform independent module testing), I know it is quite relevant to test code ready Web applications.
As a result, as I stated in my previous message, many CASE tools can be used for testing, however the selection depends on your expectations, and of course your organizational purposes. Sometimes, a company (especially which produces bespoke programs or concentrates on a single sector) prefers to generate its own tool (as well as mine).
There are many tools for unit or integration testing. This tools are design to perform testing. But researcher like us are working on improvement of different testing technique or introduce new technique. But the problem is, usually we do this theoretically, implementation of techniques are difficult but this is require for journal papers. If we go for implementation it means we are making a tool. is it necessary for a researcher to implement their idea?