4

I am a sole developer working for an organisation that has no testing strategy.

I am trying to integrate a crime system developed by a vendor with an external application I developed. The external application allows an end user to send an instruction to the crime system to delete the crime.

The crime system was developed by an external organisation and they have written stored procedures to actually execute the deletion, which I can call from my application.

The crime system is complex i.e. it has a custody element, a crime element, an intelligence element etc.

Whenever there is an upgrade to the crime system the stored procedures have to be retested and there are always many issues. My approach is as follows:

  1. Test custody
  2. Report custody issue 1
  3. New release by vendor
  4. Report custody issue n
  5. New release by vendor. All tests pass.
  6. Test crime
  7. Report crime issue n
  8. New release by vendor. All tests pass.
  9. Report intelligence issue n
  10. New release by vendor. All tests pass.
  11. Testing complete. Goes live.

The vendor has asked me to do all testing at once in future. In my experience this does not work very well with this vendor because new issues are often introduced, which affect testing to do in future i.e. a custody change affects the crime element/intelligence element.

Should I be testing everything and then submitting all of my findings?

7
  • 6
    Tell the vendor they need to be doing some testing of their own before they provide you with new releases. It sounds like they're passing the testing burden onto you and then pushing back when they find your testing methodology inconvenient. I call that laziness. Commented Feb 3, 2016 at 21:29
  • 1
    Has the vendor considered testing? Are there other vendors who do? Are they cheaper than another vendor who does considering you are contracted to do all their testing?
    – djechlin
    Commented Feb 3, 2016 at 21:30
  • 1
    "trying to integrate a crime system" That sounds like fun. Commented Feb 4, 2016 at 0:46
  • 1
    The question title is misleading - it seems you have a testing strategy (you sketched it actually), and your supplier wants you to change it. Please (!) consider to change the title to something like "How to organize acceptance tests".
    – Doc Brown
    Commented Feb 4, 2016 at 7:34
  • OP, there are two categories of testing (in this particular context). Their tests, and yours. If they haven't even attempted to resolve their bugs due to lack of testing strategy, that's piss poor business on their part. That said, your testing could be considered as user-acceptance testing. It's fine for you to test first, but don't feel any obligation to cater for the incompetency of a technical team of developers who are suppose to have already sorted it. Commented Feb 4, 2016 at 11:12

2 Answers 2

8

If company A develops a individual software component for company B, part of the contract is typically that B defines or develops a list of acceptance tests, and B will only pay A if the test do not show any issues. That is perfectly fine.

However, if some of the tests fail, B must report them to A, and A gets a chance to add corrections. And since every correction has a certain risk of breaking things which already worked before, B will have to repeat all of the tests again. So I understand your question as how to make this process most effective for both of you.

The first thing you should try is to automate as many of the acceptance tests as possible. Since you have to repeat the tests over and over again, it should be obvious why. Running the test suite with all tests at once should produce a big log file you can send to the vendor. Of course, the log may show some consecutive faults, but that should be the vendors concern, not yours. The more feedback you can give them in one cycle, the more bugs they can fix in the next release. Hence, what the vendor told you sounds sensible to me, if that is the situation.

However, things become more complicated if you cannot automate all of the tests, and the testing procedure needs a lot of manual effort. Maybe the whole process will take some days, and not just a few minutes. You wrote you have to integrate the component with an "external application" of yours, so I can imagine even if you have automated tests, you may have to check manually that a test failure is not caused by a bug in your application.

Now, if you already know for sure that if part X of the component fails, part Y will also fail, because Y depends heavily on X, then it will not make much sense to start any laborious tests on Y before X runs smooth. Thus it will obviously be more effective for you to give feedback about part X to the vendor and request a bugfix, before you start with the tests of part Y.

In such a situation, the best advice I can give you is to find an agreement with the vendor where you explicitly name the parts X1, X2, X3, ... you are going to test first, and tell the vendor that only if those tests are passed, you start testing parts Y1, Y2, Y3, ... If the vendor behaves reasonable and knows about the dependencies in his component, I guess you can find a consensus about this.

2
  • Thanks for your answer +1. Thanks also for modifying the question title. I agree with your modification - it makes it clearer.
    – w0051977
    Commented Feb 4, 2016 at 21:38
  • Fantastic name by the way. Back to the Future is one of my favourites.
    – w0051977
    Commented Feb 4, 2016 at 21:40
6

Wow! They're contracting you to do their testing for them.

The best solution is to implement an SLA that gets you out of this relationship. Your contract should penalize them financially for bugs you discover that impede integration of their product.

I really don't have anything to add on what is "best practice" when working within some relationship where they're managing you and you also pay them. Send them bug reports by carrier pigeons, maybe they'll put you on performance review.

Obviously finding a new vendor is an option I could consider. Or in-house the solution, considering you already are in-housing the QA team anyway.

8
  • I don't work for this external company. They are a supplier to the company I work for.
    – w0051977
    Commented Feb 3, 2016 at 21:50
  • 2
    @w0051977 sounds a lot like you work for them to me!
    – djechlin
    Commented Feb 3, 2016 at 22:30
  • Thanks for the answer. Would you recommend testing everything before reporting bugs?
    – w0051977
    Commented Feb 3, 2016 at 22:32
  • 1
    @w0051977 To repeat my answer, I think you're putting the cart before the horse. Why are you testing everything to find their bugs at all? That's their job. Get them to do their job. Raise it with your manager or whoever owns the contract and rethink its financial terms. etc.
    – djechlin
    Commented Feb 3, 2016 at 23:09
  • 2
    The OP should clarify this, but if the vendor of that other system has developed the "crime system" as an individual contract work, acceptance tests can only be made by the customer. In fact, having the acceptance tests not failing may be a precondition before the supplier gets paid.
    – Doc Brown
    Commented Feb 4, 2016 at 6:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.