Friday 15 January 2016

Integration Testing, what is it, and why does it require special attention?


So the other day James Bach posted on hi blog about what is Integration Testing. It's a very interesting read, with some great comments, and its got me thinking, which I would guess is the idea behind such things.
Now I'm by no means an expert in testing, being relatively new, and almost entirely self taught. I thought about what James was asking, what is integration testing and attempted to break out what I needed to think about to attempt to answer this question.
My first thought was integration testing is, very basically:
Testing communication between two or more units?
but this leads to the following questions:
Communication?
Units?
Between?
But still doesn't answer why integration testing is needed, it lead to further questions:
What's special now that couldn't be seen before?
What is integrated, is it outside the system?
Can integration be within a system or only between different systems?
So far I have far more questions than I do answers, so let's attempt to answer some of them.

Communication:
The passing of information from one source to another
But this implies that we'd be testing is only intentional integration, and never unintentional integration. This tells me that the word communication needs to be changed in my overly simple starting statement.

Units:
A collection of functions or parts that operate as a whole. I know this is not quite right, and I can feel the itch in my mind that tells me i'm missing a key point here. I'm not referring to the Unit definition in Unit testing, more the concept of a completed whole, a thing that can exist and operate on its own. But can it? why integrate it, if it's self contained, so it has dependences that are outside of itself. Again we go down the deliberate integration route. So we are talking about two or more self contained units that can in some way influence the state, or behaviour of one or more, Would the xbox's notorious red ring of death fall under integration testing? Where heat is affecting the circuitry inside the console.

Between:
So I'm thinking that something, let's call it energy, is passed from one of the units to another (or more), either deliberately or coincidentally.

So why can't this be testing independently, why does the integration need to be present for the testing to uncover something. Shallowly, because the behaviour/impact can only been seen once the units are integrated, as it is triggered by the units being in the state? of integration
So what are we looking for in this? An alteration in the state of the unit once it is in a state of integration, as defined by changing data/speed/temperature/operation/function?

So what do I know so far, mainly that I don't have a clear idea of this, I am not able define with any clarity, and thus explain precisely what I understand by integration testing, I could shallowly answer, with regurgitation of answers from texts or lectures, so if i look to bloom's taxonomy

 I am only in the bottom box of remembering 
I'm able to describe what I have learnt, but nothing further, I am working towards understanding, I can begin to infer, and summarise, I can discuss


So I have begun the journey, I now understand that this is where I am, and can work towards progressing.

How about you, how well can you explain what Integration testing is?

I highly recommend reading both Jame's initial post and all the comments with his responses, it makes for a real stimulation read.

No comments:

Post a Comment