際際滷

際際滷Share a Scribd company logo
Mad Computer Science
Testing COBOL With RSpec
Guy Royse
royseg@nationwide.com
@guyroyse
About Me
Guy Royse
Development Competency Lead
Application Development Center

LikesTDD, Pairing, Polyglot
Programming, Pi単a Coladas, Walks in
the Rain
Dislikes Coding
Alone, Complexity, Being Confused for
Hagrid
2
COBOL
Java
Ruby
TDD
RSpec
3
4
About COBOL

5
Completely
Obsolete
Business
Oriented
Language
6
**

** No affiliation with GEICO is intended or implied. All rights reserved.
Look both ways before crossing the street. Vote early and vote often.
7
8
9
A Simple Application
The Data

The Code

Contact
Validator

Contact

Phone

Address

Phone
Validator

Address
Validator

10
Java Data Implementation
public class Contact {
private String name;
private Phone home;
private Phone cell;
private Address address;
public String getName() {
return name
};
public void setName(String name) {
this.name = name;
}

/* etc. */
}
11
COBOL Data Implementation
01

CONTACT.
05 NAME
05 HOME-PHONE.
10 HOME-AREA-CODE
10 HOME-EXCHANGE
10 HOME-PHONE-NUMBER
05 CELL-PHONE.
10 CELL-AREA-CODE
10 CELL-EXCHANGE
10 CELL-PHONE-NUMBER
05 ADDRESS.
10 STREET
10 CITY
10 STATE
10 ZIP-CODE

PIC X(30).

PIC 9(3).
PIC 9(3).
PIC 9(4).
PIC 9(3).
PIC 9(3).
PIC 9(4).
PIC
PIC
PIC
PIC

X(30).
X(20).
X(2).
X(5).
12
Java Code Implementation
public class ContactValidator {
private PhoneValidatorphoneValidator;
private AddressValidatoraddressValidator;
public void validate(Contact contact) {
validateName(contact.getName);
phoneValidator.validate(contact.getHome());
phoneValidator.validate(contact.getCell());
addressValidator.validate(contact.getAddress());
}
private void validateName(String name) {
/* validates name */
}
}

13
COBOL Code Implementation
IDENTIFICATION DIVISION.
PROGRAM-ID. CONTACT-VALIDATOR.

PROCEDURE DIVISION USING CONTACT.
MAIN.
CALL PHONE-VALIDATOR USING HOME-PHONE.
CALL PHONE-VALIDATOR USING CELL-PHONE.
CALL ADDRESS-VALIDATOR USING ADDRESS.
PERFORM VALIDATE-NAME.
GOBACK
VALIDATE-NAME.
* VALIDATE NAME
14
15
16
Eternity
Ruby

COBOL
command.txt

input.txt

contact
spec.rb

ETERNITY
.CBL

eternity.rb

CONTACT
.CBL

output.txt

17
18
Image Credits
http://www.flickr.com/photos/justin_case/1525042316
http://www.flickr.com/photos/cbmd/2475626473
http://www.flickr.com/photos/kc-bike/2398970429
http://www.flickr.com/photos/7603557@N08/454618030
http://www.flickr.com/photos/pennuja/5386712834
http://www.flickr.com/photos/blackeycove/3997170938

19

More Related Content

Mad Computer Science: Testing COBOL with RSpec

Editor's Notes

  • #4: Show of hands!
  • #6: When I was tasked with testing COBOL I did some Googling to find out a little bit about it. First I wanted to know how it got its name
  • #7: and who uses it
  • #8: and what it is like
  • #9: These are all kinda unfairit's a tool, a heavy toolIt's old and rusty-there is a lot of itBut
  • #10: it's actually more modern than we think.
  • #16: If they are the same architecture, then I can test them using the same techniques i.eTDD
  • #17: If they are the same architecture, then I can test them using the same techniques i.eTDD
  • #18: Why Ruby - lot of file IO, easy in Ruby - ruby has good testing frameworks - get some people out of their comfort zone - irony