SlideShare a Scribd company logo
utPLSQL v3
Ultimate Unit Testing framework for Oracle
Jacek Gębal
twitter: @GebalJacek
mail: jgebal@gmail.com
blog: oraclethoughts.com
Principal Data Engineer Developer
@Fidelity Investments - Ireland
co-author of: utPLSQL v3
Plan
● Oracle Database testing tools
● utPLSQL v3
● Rules of unit testing
● Test Driven Development with utPLSQL
● Testing data
● Test run options
● Suites
● utPLSQL - SQL Developer extension
● utPLSQL-cli - running tests from command line
● CI/CD integration
Steven Feuerstein
1999
PLUTO
PL/Unit
ruby-plsql-spec
DBFit
Oracle Database Unit Testing market
Market expectations
The team
● Jacek Gębal
● Pavel Kaplya
● Robert Love
● David Pyke
● Vinicius Avellar
● Samuel Nitsche
● Philipp Salvisberg
Why utPLSQL v3 ? ● free
● open source
● pure PL/SQL
● Tested on 11gR2 - 12cR2
● IDE independent
● database independent
● CI/CD oriented
● modular and extendable
Properties of
Unit Tests
● Fast
● Isolated
● Repeatable
● Self-verifying
● Thorough & Timely
https://github.com/.../F.I.R.S.T-Principles-of-Unit-Testing
https://pragprog.com/.../2012-01/unit-tests-are-first
The Unit Test
also needs to be
● Simple
● Automated
● Testing one behavior
● Living documentation
● Developer’s responsibility
Delivering software that is:
● Safe to change
● Maintainable
● Can be tested and delivered iteratively
Why should I
care ?
What to test in
database ?
● Behavior
○ Logic
○ in / out structure
○ State (?)
● Avoid
○ under-testing
○ over-testing
○ meaningless tests
○ flaky tests
○ aiming for metrics (coverage/test count)
Test Driven Development
● write a test
● make it fail
● keep it simple
● tests are examples
● tests become
documentation
● get to green fast
● take baby steps
● stuck?
undo and start over
● write only enough
code to pass the test
● remove duplication
(in code and tests)
● rename and clean up
● run tests and stay green
● change implementation,
not behavior
● improve structure
in small steps
RED GREEN
REFACTOR
With TDD you get:
● Fast feedback loop
● Visible progress
● Code is tested before it exists
● Accomplishment
with every new test
Test Driven Development
with utPLSQL v3
● suite structure
● annotations
● expectation syntax
● running tests
● failure and error messages
demo
Summary
Annotation syntax:
--%name( parameter[s] )
Example:
--%suite(description)
--%test(description)
Expectation examples:
ut.expect( 1 ).to_( equal( 1 ) );
ut.expect( ‘Chuck’ ).to_equal( ‘Chuck’ );
Running tests:
exec ut.run();
Annotations
Package:
● --%suite(<description>)
● --%suitepath(<path>)
● --%rollback(auto/manual)
● --%disabled
Test procedure:
● --%test(<description>)
● --%throws(<error_No>[,...])
● --%beforetest(<proc_name>)
● --%aftertest(<proc_name>)
● --%rollback(auto/manual)
● --%disabled
Procedure:
● --%beforeall, --%afterall
● --%beforeeach, --%aftereach
Expectations & matchers
● be_null
● be_true
● be_greater_than( expected )
● be_less_than( expected )
● equal( expected )
● be_like( mask [, escape_char] )
ut.expect( actual ).to_( matcher(param[, param...]) );
ut.expect( actual ).not_to( matcher(param[, param...]) );
● be_not_null
● be_false
● be_greater_or_equal( expected )
● be_less_or_equal( expected )
● be_between( lower, upper )
● match( pattern [, modifiers] )
● be_empty ● have_count( count )
Matchers:
Equality rules in tests
ut.expect( 100 ).to_equal( ‘100’ );
ut.expect( ‘abcdef’ ).to_equal( to_clob( ‘abcdef’ ) );
ut.expect( systimestamp ).to_equal( current_timestamp );
ut.expect( sysdate ).to_equal( ‘20-MAR-2018’ );
When it comes to unit testing ...
Data types matter!
Supported data-types
● clob, blob
● timestamp (with (local) timezone)
● interval (day to second / year to month)
● cursor
● object, nested table, varray type
● number (integer)
● varchar2 (char / varchar)
● date
● boolean
Testing data
● data setup / cleanup
● cursor data comparison
● automatic rollback
● selective comparison
demo
--%suite(Demo suite)
--%beforeall
procedure data_setup_before_all;
--%beforeeach
procedure thing_to_do_before_each_test;
--%test(Does a thing)
procedure test_the_thing;
--%test(Does stuff)
--%beforetest(setup_before_stuff)
--%aftertest(cleanup_after_stuff)
procedure test_stuff;
procedure setup_before_stuff;
procedure cleanup_after_stuff;
--%afterall
procedure cleanup_after_all_is_done;
data_setup_before_all
thing_to_do_before_each_test
test_the_thing
thing_to_do_before_each_test
setup_before_stuff
test_stuff
cleanup_after_stuff
cleanup_after_all_is_done
savepoint before_suite
Order of execution
savepoint before_test
rollback to before_suite
rollback to before_test
savepoint before_test
rollback to before_test
& test isolation
Organizing tests
● suites hierarchy with suitepath
● parent, siblings, ancestors
● shared beforeall / afterall
● suites isolation / setup scope
demo
package test_add_room_content as
--%suite(Add content to a room)
--%suitepath(org.utplsql.demo.test_rooms)
package test_remove_rooms_by_name as
--%suite(Remove rooms by name)
--%suitepath(org.utplsql.demo.test_rooms)
package test_rooms as
--%suite
--%suitepath(org.utplsql.demo)
package test_betwnstr as
--%suite(description)
savepoint
rollback to savepoint
Suite hierarchy test run
utplsql
test_betwnstr
test_rooms
test_add_room_content test_remove_rooms_by_name
org
demo
savepoint
rollback to savepoint
savepoint
rollback to savepoint
Test run options
● default options
● single schema
● single package
● single test
● suite
● multiple schema
● specifying reporter
demo
utPLSQL - SQL Developer extension
demo
utplsql-cli
● Windows/Linux/Mac
● real-time reporting
● multi-reporting
● Oracle client independent
● CI/CD oriented
demo
Integration
● CI/CD servers
○ Jenkins
○ TeamCity
○ Travis
○ other...
● Sonar
○ generic test results
○ code coverage
● Coveralls
○ code coverage
demo
utPLSQL v3 recap
● free, open-source, pure PL/SQL
● annotations
● human readable syntax
● data type - aware comparison
● automatic test isolation
● rich selection of matchers
● supports cursors, object types, nested tables
● CI/CD oriented
● code coverage
Resources
Cheat-sheet: https://www.cheatography.com/jgebal/cheat-sheets/utplsql-v3/
Documentation: http://utplsql.org/utPLSQL/
Source code: https://github.com/utPLSQL/utPLSQL
Releases: https://github.com/utPLSQL/utPLSQL/releases
utPLSQL-cli: https://github.com/utPLSQL/utPLSQL-cli/releases
SQLDeveloper-extension: https://github.com/utPLSQL/utPLSQL-SQLDeveloper/releases
Twitter: @utplsql
Demo project: https://github.com/utPLSQL/utPLSQL-demo-project
Sonar results: https://sonarcloud.io/dashboard?id=utPLSQL
Coveralls results: https://coveralls.io/github/utPLSQL/utPLSQL
Travis-CI builds: https://travis-ci.org/utPLSQL/utPLSQL

More Related Content

What's hot (20)

PPTX
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Carlos Sierra
 
PDF
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
PPTX
Test your PL/SQL with utPLSQL
Daniel Overby Hansen
 
PDF
Postgresql tutorial
Ashoka Vanjare
 
PPTX
What’s New in Oracle Database 19c - Part 1
Satishbabu Gunukula
 
PPTX
What to Expect From Oracle database 19c
Maria Colgan
 
PDF
Deep Dive Java 17 Devoxx UK
José Paumard
 
PPTX
Oracle GoldenGate 21c New Features and Best Practices
Bobby Curtis
 
PDF
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
PostgreSQL-Consulting
 
PDF
MAA Best Practices for Oracle Database 19c
Markus Michalewicz
 
PDF
Best Practices for Becoming an Exceptional Postgres DBA
EDB
 
PDF
MySQL 8.0 EXPLAIN ANALYZE
Norvald Ryeng
 
PPTX
DevOps Overview
Omri Spector
 
PDF
USENIX ATC 2017: Visualizing Performance with Flame Graphs
Brendan Gregg
 
PPTX
Fast Start Failover DataGuard
Borsaniya Vaibhav
 
PDF
Understanding oracle rac internals part 1 - slides
Mohamed Farouk
 
PPTX
Automating Your Clone in E-Business Suite R12.2
Michael Brown
 
PDF
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
ScaleGrid.io
 
PDF
Oracle RAC 19c: Best Practices and Secret Internals
Anil Nair
 
PDF
Image Processing on Delta Lake
Databricks
 
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Carlos Sierra
 
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
Test your PL/SQL with utPLSQL
Daniel Overby Hansen
 
Postgresql tutorial
Ashoka Vanjare
 
What’s New in Oracle Database 19c - Part 1
Satishbabu Gunukula
 
What to Expect From Oracle database 19c
Maria Colgan
 
Deep Dive Java 17 Devoxx UK
José Paumard
 
Oracle GoldenGate 21c New Features and Best Practices
Bobby Curtis
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
PostgreSQL-Consulting
 
MAA Best Practices for Oracle Database 19c
Markus Michalewicz
 
Best Practices for Becoming an Exceptional Postgres DBA
EDB
 
MySQL 8.0 EXPLAIN ANALYZE
Norvald Ryeng
 
DevOps Overview
Omri Spector
 
USENIX ATC 2017: Visualizing Performance with Flame Graphs
Brendan Gregg
 
Fast Start Failover DataGuard
Borsaniya Vaibhav
 
Understanding oracle rac internals part 1 - slides
Mohamed Farouk
 
Automating Your Clone in E-Business Suite R12.2
Michael Brown
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
ScaleGrid.io
 
Oracle RAC 19c: Best Practices and Secret Internals
Anil Nair
 
Image Processing on Delta Lake
Databricks
 

Similar to prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle (20)

PDF
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
Jacek Gebal
 
PDF
Bgoug 2019.11 test your pl sql - not your patience
Jacek Gebal
 
PDF
Test Driven Development for PLSQL with utPLSQL v3
Jacek Gebal
 
PDF
PL/SQL unit testing with Ruby
Raimonds Simanovskis
 
PDF
Agile db testing_techniques
Tarik Essawi
 
PPTX
ITAG Excellence Awards 2017 - utPLSQL v3
Jacek Gebal
 
PDF
Database development unit test with tSQLt
Sergio Govoni
 
PPTX
Database Unit Testing Made Easy with VSTS
Sanil Mhatre
 
PDF
Pl sql office hours data setup and teardown in database testing
DeeptiBandari
 
PPT
A testing framework for Microsoft SQL-Server
elliando dias
 
PDF
utplsql.pdf
vijayv991893
 
PDF
Test Driven Development with Sql Server
David P. Moore
 
PPT
xUnit Style Database Testing
Chris Oldwood
 
PPTX
Get Testing with tSQLt - SQL In The City Workshop 2014
Red Gate Software
 
PDF
PL/SQL Unit Testing Can Be Fun
Raimonds Simanovskis
 
PPT
Automated Unit Testing
Simon Boorsma
 
PPTX
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
Michael Rys
 
PDF
PL/SQL Unit Testing Can Be Fun!
Raimonds Simanovskis
 
PPTX
Test Driven Database Development With Data Dude
Cory Foy
 
PPTX
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
Alessandro Alpi
 
POUG Meetup 1st MArch 2019 - utPLSQL v3 - Testing Framework for PL/SQL
Jacek Gebal
 
Bgoug 2019.11 test your pl sql - not your patience
Jacek Gebal
 
Test Driven Development for PLSQL with utPLSQL v3
Jacek Gebal
 
PL/SQL unit testing with Ruby
Raimonds Simanovskis
 
Agile db testing_techniques
Tarik Essawi
 
ITAG Excellence Awards 2017 - utPLSQL v3
Jacek Gebal
 
Database development unit test with tSQLt
Sergio Govoni
 
Database Unit Testing Made Easy with VSTS
Sanil Mhatre
 
Pl sql office hours data setup and teardown in database testing
DeeptiBandari
 
A testing framework for Microsoft SQL-Server
elliando dias
 
utplsql.pdf
vijayv991893
 
Test Driven Development with Sql Server
David P. Moore
 
xUnit Style Database Testing
Chris Oldwood
 
Get Testing with tSQLt - SQL In The City Workshop 2014
Red Gate Software
 
PL/SQL Unit Testing Can Be Fun
Raimonds Simanovskis
 
Automated Unit Testing
Simon Boorsma
 
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
Michael Rys
 
PL/SQL Unit Testing Can Be Fun!
Raimonds Simanovskis
 
Test Driven Database Development With Data Dude
Cory Foy
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
Alessandro Alpi
 
Ad

Recently uploaded (20)

PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PPTX
How Cloud Computing is Reinventing Financial Services
Isla Pandora
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PPTX
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Import Data Form Excel to Tally Services
Tally xperts
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
How Cloud Computing is Reinventing Financial Services
Isla Pandora
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Ad

prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle

  • 1. utPLSQL v3 Ultimate Unit Testing framework for Oracle Jacek Gębal twitter: @GebalJacek mail: [email protected] blog: oraclethoughts.com Principal Data Engineer Developer @Fidelity Investments - Ireland co-author of: utPLSQL v3
  • 2. Plan ● Oracle Database testing tools ● utPLSQL v3 ● Rules of unit testing ● Test Driven Development with utPLSQL ● Testing data ● Test run options ● Suites ● utPLSQL - SQL Developer extension ● utPLSQL-cli - running tests from command line ● CI/CD integration
  • 5. The team ● Jacek Gębal ● Pavel Kaplya ● Robert Love ● David Pyke ● Vinicius Avellar ● Samuel Nitsche ● Philipp Salvisberg
  • 6. Why utPLSQL v3 ? ● free ● open source ● pure PL/SQL ● Tested on 11gR2 - 12cR2 ● IDE independent ● database independent ● CI/CD oriented ● modular and extendable
  • 7. Properties of Unit Tests ● Fast ● Isolated ● Repeatable ● Self-verifying ● Thorough & Timely https://github.com/.../F.I.R.S.T-Principles-of-Unit-Testing https://pragprog.com/.../2012-01/unit-tests-are-first
  • 8. The Unit Test also needs to be ● Simple ● Automated ● Testing one behavior ● Living documentation ● Developer’s responsibility
  • 9. Delivering software that is: ● Safe to change ● Maintainable ● Can be tested and delivered iteratively Why should I care ?
  • 10. What to test in database ? ● Behavior ○ Logic ○ in / out structure ○ State (?) ● Avoid ○ under-testing ○ over-testing ○ meaningless tests ○ flaky tests ○ aiming for metrics (coverage/test count)
  • 11. Test Driven Development ● write a test ● make it fail ● keep it simple ● tests are examples ● tests become documentation ● get to green fast ● take baby steps ● stuck? undo and start over ● write only enough code to pass the test ● remove duplication (in code and tests) ● rename and clean up ● run tests and stay green ● change implementation, not behavior ● improve structure in small steps RED GREEN REFACTOR With TDD you get: ● Fast feedback loop ● Visible progress ● Code is tested before it exists ● Accomplishment with every new test
  • 12. Test Driven Development with utPLSQL v3 ● suite structure ● annotations ● expectation syntax ● running tests ● failure and error messages
  • 13. demo
  • 14. Summary Annotation syntax: --%name( parameter[s] ) Example: --%suite(description) --%test(description) Expectation examples: ut.expect( 1 ).to_( equal( 1 ) ); ut.expect( ‘Chuck’ ).to_equal( ‘Chuck’ ); Running tests: exec ut.run();
  • 15. Annotations Package: ● --%suite(<description>) ● --%suitepath(<path>) ● --%rollback(auto/manual) ● --%disabled Test procedure: ● --%test(<description>) ● --%throws(<error_No>[,...]) ● --%beforetest(<proc_name>) ● --%aftertest(<proc_name>) ● --%rollback(auto/manual) ● --%disabled Procedure: ● --%beforeall, --%afterall ● --%beforeeach, --%aftereach
  • 16. Expectations & matchers ● be_null ● be_true ● be_greater_than( expected ) ● be_less_than( expected ) ● equal( expected ) ● be_like( mask [, escape_char] ) ut.expect( actual ).to_( matcher(param[, param...]) ); ut.expect( actual ).not_to( matcher(param[, param...]) ); ● be_not_null ● be_false ● be_greater_or_equal( expected ) ● be_less_or_equal( expected ) ● be_between( lower, upper ) ● match( pattern [, modifiers] ) ● be_empty ● have_count( count ) Matchers:
  • 17. Equality rules in tests ut.expect( 100 ).to_equal( ‘100’ ); ut.expect( ‘abcdef’ ).to_equal( to_clob( ‘abcdef’ ) ); ut.expect( systimestamp ).to_equal( current_timestamp ); ut.expect( sysdate ).to_equal( ‘20-MAR-2018’ ); When it comes to unit testing ... Data types matter!
  • 18. Supported data-types ● clob, blob ● timestamp (with (local) timezone) ● interval (day to second / year to month) ● cursor ● object, nested table, varray type ● number (integer) ● varchar2 (char / varchar) ● date ● boolean
  • 19. Testing data ● data setup / cleanup ● cursor data comparison ● automatic rollback ● selective comparison
  • 20. demo
  • 21. --%suite(Demo suite) --%beforeall procedure data_setup_before_all; --%beforeeach procedure thing_to_do_before_each_test; --%test(Does a thing) procedure test_the_thing; --%test(Does stuff) --%beforetest(setup_before_stuff) --%aftertest(cleanup_after_stuff) procedure test_stuff; procedure setup_before_stuff; procedure cleanup_after_stuff; --%afterall procedure cleanup_after_all_is_done; data_setup_before_all thing_to_do_before_each_test test_the_thing thing_to_do_before_each_test setup_before_stuff test_stuff cleanup_after_stuff cleanup_after_all_is_done savepoint before_suite Order of execution savepoint before_test rollback to before_suite rollback to before_test savepoint before_test rollback to before_test & test isolation
  • 22. Organizing tests ● suites hierarchy with suitepath ● parent, siblings, ancestors ● shared beforeall / afterall ● suites isolation / setup scope
  • 23. demo
  • 24. package test_add_room_content as --%suite(Add content to a room) --%suitepath(org.utplsql.demo.test_rooms) package test_remove_rooms_by_name as --%suite(Remove rooms by name) --%suitepath(org.utplsql.demo.test_rooms) package test_rooms as --%suite --%suitepath(org.utplsql.demo) package test_betwnstr as --%suite(description) savepoint rollback to savepoint Suite hierarchy test run utplsql test_betwnstr test_rooms test_add_room_content test_remove_rooms_by_name org demo savepoint rollback to savepoint savepoint rollback to savepoint
  • 25. Test run options ● default options ● single schema ● single package ● single test ● suite ● multiple schema ● specifying reporter
  • 26. demo
  • 27. utPLSQL - SQL Developer extension
  • 28. demo
  • 29. utplsql-cli ● Windows/Linux/Mac ● real-time reporting ● multi-reporting ● Oracle client independent ● CI/CD oriented
  • 30. demo
  • 31. Integration ● CI/CD servers ○ Jenkins ○ TeamCity ○ Travis ○ other... ● Sonar ○ generic test results ○ code coverage ● Coveralls ○ code coverage
  • 32. demo
  • 33. utPLSQL v3 recap ● free, open-source, pure PL/SQL ● annotations ● human readable syntax ● data type - aware comparison ● automatic test isolation ● rich selection of matchers ● supports cursors, object types, nested tables ● CI/CD oriented ● code coverage
  • 34. Resources Cheat-sheet: https://www.cheatography.com/jgebal/cheat-sheets/utplsql-v3/ Documentation: http://utplsql.org/utPLSQL/ Source code: https://github.com/utPLSQL/utPLSQL Releases: https://github.com/utPLSQL/utPLSQL/releases utPLSQL-cli: https://github.com/utPLSQL/utPLSQL-cli/releases SQLDeveloper-extension: https://github.com/utPLSQL/utPLSQL-SQLDeveloper/releases Twitter: @utplsql Demo project: https://github.com/utPLSQL/utPLSQL-demo-project Sonar results: https://sonarcloud.io/dashboard?id=utPLSQL Coveralls results: https://coveralls.io/github/utPLSQL/utPLSQL Travis-CI builds: https://travis-ci.org/utPLSQL/utPLSQL