SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence...

22
SASUnit – Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through Unit Tests Chuck Castillo

Transcript of SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence...

Page 1: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

SASUnit – Confidence in Coverage

Handling Edge Cases and Ensuring Code Quality & Adaptability Through Unit Tests

Chuck Castillo

Page 2: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Introduction

• What is SAS Unit?

• Adaptability (changing your code)

• Extensibility (adding to your code)

• Versatility (handling dirty data)

• SASUnit – The Report

• Questions? Answers!

Page 3: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

What is SASUnit?

• SASUnit is a collection of programs and macros that are used to execute your code and verify the results

• Verifies the results by inspecting datasets, macrovariables, the log file…

• Compares “actual” results to the “expected” results

• Generates a report with results (in .html format, .xml format)

Page 4: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

What is SASUnit?

Input SAS code Output

Normal Process Flow

Page 5: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

What is SASUnit?

Input SAS code Output

Test Case Input

Test Case Output

Expected Output

Report

SASUnit Test Case Process Flow

Page 6: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Adaptability

Grades

Students

Classes

Page 7: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Adaptability

• SASUnit allows you to modify your code while ensuring the output doesn’t change.• Dealing with new requirements

• Need to speed up performance

Page 8: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Adaptability

Page 9: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Adaptability

Page 10: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Adaptability

Page 11: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Adaptability

Page 12: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Extensibility

• SASUnit allows for testing inputs and outputs of one-or more steps in a process.

• Test as much or as little as you want: macrovariables, table attributes, table values…

Page 13: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Extensibility

Page 14: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Extensibility

Page 15: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Extensibility

Page 16: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Versatility

• Easy to manage expected data. Need to know how to handle outliers.

• Writing unit tests forces you to consider edge cases• Missing values, unexpected formats, case sensitivity

• Allows you to be proactive in providing troubleshooting tools (e.g. log messages, error tables)

Page 17: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Versatility

Student_Districts

Page 18: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Versatility

Page 19: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Versatility

Page 20: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

SASUnit – The Report

• Viewing Results• Navigate to test logs, test code, unit under test

• Manual (report) assertion

• Compare tables – lots of options

• More…

Page 21: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Resources

• SASUnit - https://sourceforge.net/projects/sasunit/

• Unit Testing - http://martinfowler.com/bliki/UnitTest.html

• Test Driven Development - https://en.wikipedia.org/wiki/Test-driven_development

Page 22: SASUnit Confidence in Coverage - Sas Institute Group Presentations/TASS... · SASUnit –Confidence in Coverage Handling Edge Cases and Ensuring Code Quality & Adaptability Through

Questions? Answers!

• (Insert amusing clipart here)

[email protected]