Testing for Dyalog APL: Ullu - Glasgow 2024
A comprehensive overview of Ullu testing for Dyalog APL in Glasgow 2024. Explore the creation, testing methods, future prospects, and coverage of primitives. Discover how Ullu verifies correct results, tests edge cases, and ensures code coverage for a robust APL experience.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Glasgow 2024 ullu: Tests for Dyalog APL Aarush Bhat Dyalog Ltd.
Coming up What is ullu? How has Dyalog been tested so far? Why and How ullu was created? What is the future of ullu? ullu: Tests for Dyalog APL 1
What is ullu ullu: Tests for Dyalog APL 2
Pre-ullu Standard QAs Shuffle QAs Unit Tests Fuzz tests Code Coverage tests ullu: Tests for Dyalog APL 3
Versions and Platforms 6 platforms Windows, Mac, Mac/Arm, AIX, Pi, Linux, Linux/Arm(under dev) 4 versions 6 platforms 32/64 Classic/Unicode That is 63 interpreters of Dyalog APL ullu: Tests for Dyalog APL 4
With ullu ullu: Tests for Dyalog APL 5
What does it do? Verify correct results using fundamental scenarios Test edge cases Test all the data types possible, being reproducible and truly randomised Finally, inspect code coverage to find missing test cases ullu: Tests for Dyalog APL 6
Battle testing Image generated by GPT-4o ullu: Tests for Dyalog APL 7
Primitives Covered as of 1/9/24 - 11 unique (monadic ) unique mask (monadic ) index of (dyadic ) membership (dyadic ) multiply (dyadic ) add (dyadic +) divide (dyadic ) floor (monadic ) magnitude (monadic |) residue (dyadic |) subtract (dyadic -) ullu: Tests for Dyalog APL 8
Next up greater (dyadic >) less (dyadic <) exponential (dyadic *) grade ( ) not equal (dyadic ) not (monadic ~) union (dyadic ) ullu: Tests for Dyalog APL 9
Process Define fundamental scenarios Explore the codebase Check code coverage Check user issues Verify interpreter limits Check displayed errors Remove dead code ullu: Tests for Dyalog APL 10
Model functions Unique R Y {0= : , { ,( / )/ } / 1 } Add R X+Y { -- } Magnitude R |Y { ( 1@( 0)( >0))} ullu: Tests for Dyalog APL 11
Tests Unique R Y Assert ( data) data Add R X+Y RunVariations (2 data) data data Magnitude R |Y RunVariations (modelMag data) data ullu: Tests for Dyalog APL 12
RunVariations Normal array (one or two datatypes mixed) Scalar Empty array Differently shaped array Testing with model Testing with completely randomised data with model ullu: Tests for Dyalog APL 13
Data, more data and results 84,274 tests Lots of numbers, arrays and data elements Good news, ullu is now integrated with the standard and coverage QAs ullu: Tests for Dyalog APL 14
Code coverage ullu: Tests for Dyalog APL 15
Future plans Cover all primitives Work with more data Find cases that people might not hit in a 100 years Make Dyalog APL more reliable ullu: Tests for Dyalog APL 16
Find ullu at: github.com/Dyalog/ullu Reach out: aarush@dyalog.com ullu: Tests for Dyalog APL 17
In short, ullu is New Structured Independent A 2nd coat of paint ullu: Tests for Dyalog APL 18
It is not just about finding things wrong about Dyalog APL but making us more confident when making enhancements ullu: Tests for Dyalog APL 19