Search code examples
validationunit-testingintegration-testingacceptance-testingsystem-testing

Order of Operations for System Testing?


I was taking an exam yesterday, and I noticed they asked in which order the following occur (and I'll put the order I deemed it to be here):

  1. Unit Testing (Always write your unit tests first!)
  2. Integration Testing (After you have some code and it works with other code / systems)
  3. Validation Testing (Keep your data in a consistent state and make sure no bad data is input)
  4. User / Acceptance Testing (It's all about the users otherwise why are we building a system in the first place?)

Is this about right?

Personally I think load-testing or database tuning oughta be in there at the end, but it wasn't on the test.


Solution

  • This question doesn't make a whole lot of sense.

    For one thing, different people have different definitions of pretty much every kind of testing you have mentioned. For example, in Extreme Programming (XP) Acceptance Tests (while being derived from User Stories) have nothing to do with User Testing, or User Acceptance Testing (UAT). Using the XP definition, Acceptance Testing refers to automated tests that run on a build agent before code makes it anywhere near a user. User Acceptance Testing (UAT) on the other hand, is typically a manual process that happens after a proposed final version has been created and deployed to a UAT environment.

    As pointed out in the comments already, Validation Testing is not a common concept with a widely accepted definition. Integration testing also means different things to different people. To some, it is testing that different processes/applications work together (in a UAT environment, for example). For others, it is simply automated tests that involve more that one class i.e. not Unit Tests.

    Also, what do you mean by "order"? Do you mean the order in which the tests are written, or the order in which they are run before releasing code to the wild and/or production environment?

    In any case, the question is largely irrelevant in the real world because different processes work for different teams. For example, I myself would always write an Acceptance Test before any Unit Tests. Following a test first approach, you always write a Unit Test before modifying a class, yes? So why wouldn't you write an Acceptance Test before modifying the whole system?

    If "Acceptance Testing" means anything close to the XP definition of acceptance testing, then I don't think it makes sense for this to come last.

    This sounds like the kind of "exam question" that only makes sense in the context of the course that you took before the exam. Without all that information (particularly the definitions of each kind of testing) it is very difficult to provide a useful answer to this question.