I have googled many times but still not understand clearly about interface testing in software testing, who can explain this , many thanks?
You have some choices here. You can go with formal definitions like the ISTQB definition, or you can treat the definitions the way your organization handles them. Software testing is a field where definitions tend to vary depending on the understanding of the team and how they work.
That said, in my experience interface testing can be one of two things:
- A type of integration test that focuses on the interface between components/systems.
- A test of a defined interface into a component or system. This is usually the kind of interface testing I've done (I've also seen this called API testing).
Integration testing is generally what it says on the box: testing integrated components or systems to exercise the interactions between them and flush out any bugs. I've also seen integration testing used to describe testing interactions between the application in test and third party systems (where this could also be considered API testing of the AIT's use of the third party API).
As always, I tend not to focus on the official definitions because in my experience the official definitions are often modified in the field by the needs of the application in test and the testers working with it.
I take a look into the ISTQB glossary and found this two definitions:
interface testing: An integration test type that is concerned with testing the interfaces between components or systems.
integration testing: Testing performed to expose defects in the interfaces and in the interactions between integrated components or systems. See also component integration testing, system integration testing.
After some research I also found this:
- Integration tests means hardware and software tests. The whole system.
- Interface tests do only check the software components like data transfers between the applications / modules.
When thinking of interface testing, u need to stop thinking of interface as GUI, but think as a point of interaction btwn objects. So when we say interface testing we mean are the objects able to interact without any problem. Remember it start with unit test, then component testing then integration testing that leads to system. Interface testing thus is part of integration testing as you are integrating the components together, seeing whether the components can interface/communicate with each other until its integrated to a system.
The major difference, (I see) is interface testing can be done in isolation whereas integration testing requires at least 2 entities to interact.
"Interface" is a very vague and broad term and can mean multiple things on many levels.
Interface Testing: In general, I would define it as a testing at the boundary where an entity interacts with the outer world.That entity may be from unit to system level.It can be a method,component,service or even an etire system.
Example: GUI of an web application, 3rd party Web services Public APIs.
Integration Testing: On the other hand it happens at that boundary level where 2 entities interact with each other.It covers and validates those interaction scenarios(without testing the internals of those entities in isolation.
Again those entities can be from small components to entire systems.
Example: 2 modules of an application,Web services calls in Web Application.
Interface testing: means to check the connectivity between the modules or components.or to check the communication established between the objects.