2017-09-24 | Leave a comment Winter is coming and the 7th season of Game of Thrones now just a memory. While I do love watching TV series it was not them that dragged me away from my blog. For last 18 months or so, I was heavily involved in design and development of new version of utPLSQL v3. After a year of development, we’ve published utPLSQL version 3.0.0 in May 2017 and now we are at version 3.0.3. Why I’ve decided to get involved in the project? The reason for getting involved was that there still was room for a good Unit Testing framework for Oracle SQL and PL/SQL. I’ve used ruby-plsql a lot and I was very happy with it, however it has one big disadvantage – it’s Ruby. For some projects, adding Ruby language to development stack, just for the sake of Unit Testing is just too much. I still consider the framework a brilliant solution and it’s definitely something that utPLSQL v3 is aspiring for. Using frameworks in languages like Ruby/Java etc. to test database has one significant downside – performance. The fact that every interaction with database is a context switch between Java/Ruby and Oracle database significantly impacts the execution time of tests. While using ruby-plsql, we had to be very careful when designing our tests to make them run fast. The performance of tests for Oracle Database created in Ruby/Java will never match performance of the same test written in pure PLSQL. Other frameworks There is still SQL Dveloper Unit Testing, Quest(Dell) Code Tester for Oracle and more. For those two however, I see definite downsides of: Closed architecture Tight coupling with vendor UI UI limitations persistence of tests separated from persistence of code no clear concept of integrations with variety of CI/CD solutions licensing need to learn another tool outside of SQL and PLSQL Why not utPLSQL v2? There are many challenges around utPLSQL v2, for creating valuable Unit Tests. To name a few its: lack of support for many data-types noisy reporting insufficient integrations code in a hard to maintain state What is so special about utPLSQL v3? Here is a list with some of qualities utPLSQL version 3: free and open-source open for extensions self unit-tested continuously integrated in the cloud enables test driven development for PLSQL clean and consistent reporting CI/CD oriented and easy to integrate code coverage reporting out of the box follows best patterns of Ruby for test expectations follows best patterns of Java for annotations test suites are built on the fly no persistence needed – just install utPLSQL, compile code and tests and you’re good to go all configuration is optional and defined when invoking tests Useful links utPLSQL documentation site utPLSQL v3 cheat-sheet utPLSQL releases utPLSQL demo project sources Sonarcloud integration with demo project Sonarcloud for utPLSQL v3 itself Builds for utPLSQL v3 on Travis CI Slides from my talk on Test Driven Development with utPLSQL v3 on Ireland OUG meetup in Dublin Getting involved The team developing utPLSQL v3 is a group of passionate Oracle engineers spending their spare time to deliver well designed, continuously tested, high quality product. The hope is that, utPLSQL v3 will bring Unit Testing and Test Driven Development practices into Oracle Developer community and we will finally catchup on engineering practives with Object Oriented programming world. If you want to get involved, read the contributing guide and join our Slack channel – link available in the projects readme.