Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a workable approach to use test-driven development (TDD) in a COBOL application?

Tags:

Has anyone come across any workable approaches to implementing test-driven development (and potentially behavior-driven development) in/for COBOL applications?

An ideal solution would enable both unit and integration testing of both transactional (CICS) and batch-mode COBOL code, sitting atop the usual combination of DB2 databases and various fixed width datasets.

I've seen http://sites.google.com/site/cobolunit/, and it looks interesting. Has anyone seen this working in anger? Did it work? What were the gotchas?

Just to get your creative juices flowing, some 'requirements' for an ideal approach:

  • Must allow an integration test to exercise an entire COBOL program.
  • Must allow tests to self-certify their results (i.e. make assertions a la xUnit)
  • Must support both batch mode and CICS COBOL.
  • Should allow a unit test to exercise individual paragraphs within a COBOL program by manipulating working storage before/after invoking the code under test.
  • Should provide an ability to automatically execute a series of tests (suite) and report on the overall result.
  • Should support the use of test data fixtures that are set up before a test and torn down afterwards.
  • Should cleanly separate test from production code.
  • Should offer a typical test to production code ratio of circa 1:1 (i.e., writing tests shouldn't multiply the amount of code written by so much that the overall cost of maintenance goes up instead of down)
  • Should not require COBOL developers to learn another programming language, unless this conflicts directly with the above requirement.
  • Could support code coverage reporting.
  • Could encourage that adoption of different design patterns within the code itself in order to make code easier to test.

Comments welcome on the validity/appropriateness of the above requirements.

Just a reminder that what I'm looking for here is good practical advice on the best way of achieving these kinds of things - I'm not necessarily expecting a pre-packaged solution. I'd be happy with an example of where someone has successfully used TDD in COBOL, together with some guidance and gotchas on what works and what doesn't.

like image 286
Paul Russell Avatar asked Mar 31 '11 16:03

Paul Russell


People also ask

Why TDD is not usually used?

This means the following problems in such a TDD approach: More test code than the implementation code. Not easy to design tests before the implementation is done. Implementation refactoring breaks existing tests.

Which of the following is a test driven development TDD approach?

Test-Driven Development starts with designing and developing tests for every small functionality of an application. TDD framework instructs developers to write new code only if an automated test has failed. This avoids duplication of code. The TDD full form is Test-driven development.

Is TDD a good approach?

The evolution of Agile development has introduced many pragmatic practices for delivering quality software at high speed. Test-Driven Development (TDD) is one such practice that is now recognized as an efficient approach that drives positive results.

Which two techniques are used in test strategy in TDD?

Testing Techniques in Agile Software Development TDD, BDD and AMDD are the techniques in software testing that can be applied to any methodology. TDD is Test-Driven Development. The unit tests are written first, then a code is written to make the tests pass.


1 Answers

Maybe check out QA Hiperstation. It could cost a lot though (just like every other mainframe product).

It only used it briefly a long time ago, so I cannot claim to be an expert. I used it to run and verify a battery of regression tests in a COBOL/CICS/DB2/MQ-SERIES type environment and found it to be quite effective and flexible.

I would say this could be one of the pieces of your puzzle, but certainly not the whole thing.

like image 188
NealB Avatar answered Oct 05 '22 02:10

NealB