Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The Agile Way: Integration Testing vs Functional Testing or both? [closed]

Tags:

tdd

testing

scrum

I work in an office which has been doing Agile for a while now. We use Scrum for project management and mix in the engineering practices of XP. It works well and we are constantly learning lessons and refining our process.

I would like to tell you about our usual practices for testing and get feedback on how this could be improved:

TDD: First Line of Defense We are quite religious about unit testing and I would say our developers are also experienced enough to write comprehensive tests and always isolate the SUT with mocks.

Integration Tests For our use, integration tests are basically the same as the unit tests just without using the mocks. This tends to catch a few issues which slipped through the unit tests. These tests tend to be difficult to read as they usually involve a lot or work in the before_each and after_each sections of the spec framework as the system has to often reach a certain state in order for the tests to be meaningful.

Functional Testing We usually do this in a structured, but manual fashion. We have played with Selenium and Windmill, which are cool, but for us at least not quite there yet.

I would like to hear how anyone else is doing things. Do you think that if Integration Tests or Functional Testing are being done well enough the other can be disregarded?

like image 473
ChrisInCambo Avatar asked Feb 17 '09 08:02

ChrisInCambo


People also ask

What is the difference between integration testing and functional testing?

Functional testing is performed to validate all functionalities of an application, while integration testing is performed to validate the interaction across modules and verify that they work well when compiled.

What is integration testing in agile?

Integration testing is one of the agile methodologies of software testing where individual components or units of code are tested to validate interactions among different software system modules. In this process, these system components are either tested as a single group or organized iteratively.

What is difference between integration testing and system integration testing?

System testing is a testing level in which tests are performed to know if a complete build aligns with functional and nonfunctional requirements made for it. In contrast, Integration testing is a testing stage where two or more software units are joined and tested simultaneously.

What is the difference between integration and end to end testing?

End to End: A helper robot that behaves like a user to click around the app and verify that it functions correctly. Sometimes called "functional testing" or e2e. Integration: Verify that several units work together in harmony. Unit: Verify that individual, isolated parts work as expected.


1 Answers

Unit, integration and functional testing, though exercising the same code, are attacking it from different perspectives. It's those perspectives that make the difference, if you were to drop one type of testing then something could work its way in from that angle.

Also, unit testing isn't really about testing your code, especially if you are practising TDD. The process of TDD helps you design your code better, you just get the added bonus of a suite of tests at the end of it.

You haven't mentioned whether you have a continuous integration server running. I would strongly recommend setting one up (Hudson is easy to set up). Then you can have your integration and functional tests run against every check in of the code.

like image 154
Garry Shutler Avatar answered Sep 20 '22 07:09

Garry Shutler