SlideShare uma empresa Scribd logo
1 de 19
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

Mais conteúdo relacionado

Semelhante a Mad Computer Science: Testing COBOL with RSpec

Semelhante a Mad Computer Science: Testing COBOL with RSpec (11)

A Robust Open-source GEDCOM Parser
A Robust Open-source GEDCOM ParserA Robust Open-source GEDCOM Parser
A Robust Open-source GEDCOM Parser
 
SETCON'18 - Yauheni Pakala - .NET Embedding
SETCON'18 - Yauheni Pakala - .NET Embedding SETCON'18 - Yauheni Pakala - .NET Embedding
SETCON'18 - Yauheni Pakala - .NET Embedding
 
RR2 CV
RR2 CVRR2 CV
RR2 CV
 
GOTO Paris | @see Gopher
GOTO Paris | @see GopherGOTO Paris | @see Gopher
GOTO Paris | @see Gopher
 
Groovy Domain Specific Languages - SpringOne2GX 2012
Groovy Domain Specific Languages - SpringOne2GX 2012Groovy Domain Specific Languages - SpringOne2GX 2012
Groovy Domain Specific Languages - SpringOne2GX 2012
 
TDD CrashCourse Part2: TDD
TDD CrashCourse Part2: TDDTDD CrashCourse Part2: TDD
TDD CrashCourse Part2: TDD
 
GC_RESUME_2015
GC_RESUME_2015GC_RESUME_2015
GC_RESUME_2015
 
Intel_Wayne
Intel_WayneIntel_Wayne
Intel_Wayne
 
Secure pl-sql-coding
Secure pl-sql-codingSecure pl-sql-coding
Secure pl-sql-coding
 
Test Driven Development Part 2
Test Driven Development Part 2Test Driven Development Part 2
Test Driven Development Part 2
 
Write Once, Run Everywhere
Write Once, Run EverywhereWrite Once, Run Everywhere
Write Once, Run Everywhere
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Mad Computer Science: Testing COBOL with RSpec

Notas do Editor

  1. Show of hands!
  2. 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…
  3. …and who uses it…
  4. …and what it is like…
  5. These are all kinda unfair…it's a tool, a heavy toolIt's old and rusty-there is a lot of itBut…
  6. …it's actually more modern than we think.
  7. If they are the same architecture, then I can test them using the same techniques i.eTDD
  8. If they are the same architecture, then I can test them using the same techniques i.eTDD
  9. Why Ruby - lot of file IO, easy in Ruby - ruby has good testing frameworks - get some people out of their comfort zone - irony