This document summarizes a presentation about ApprovalTests, an open source library for better unit testing. It discusses how ApprovalTests makes testing easier for both developers and testers by allowing human evaluation of test results through visual diffs and an approval process. It provides demos of using ApprovalTests for arrays, GUIs, and legacy code. The document emphasizes that code must be testable and that unit test frameworks are multi-purpose for testing new code, APIs, and refactoring legacy code.
Behaviour Driven Development with SpecFlowPascal Laurin
You may know TDD but do you know BDD? Just like its cousin Behaviour Driven Development is a technique focusing on development using automated tests but at the functional or behaviour level. Think automated acceptance testing using English sentences with a few extra keywords: Given, When and Then.
In this presentation I'll be using SpecFlow, a Visual Studio extension that help us write BDD style tests easily.
How BDD with tools like Cucumber can create a stronger team, a better quality product, and ultimately a more useable API. Given at the #apistrat SF conference 10/24/2013
Kristoffer Nordstrom - Every System Test Department Should Have a Test Develo...TEST Huddle
EuroSTAR Software Testing Conference 2012 presentation on Every System Test Department Should Have a Test Developer by Kristoffer Nordstrom. See more at: http://conference.eurostarsoftwaretesting.com/past-presentations/
Refactoring is the art of improving the design of existing code. When we have an application that continues to produce revenue, it’s almost always better to reduce, reuse, and refactor, rather than throwing away the old code and starting anew. We’ll learn specific techniques, approaches, and code smells. We’ll see that our IDE can handle simple refactorings such as Extract Method. We’ll use our test suite to ensure that functionality did not change as a result of the refactoring. We’ll gain the habit of refactoring to make our code more expressive and therefore more easily understood after time has passed. Martin Fowler notes that the code we write today is merely tomorrow’s legacy code. Let’s make it as easy as we can on our future selves.
Test Driven Development - a Practitioner’s PerspectiveMalinda Kapuruge
Guest lecture at Swinburne University of Technology, Melbourne. We introduced TDD concepts to students. We also did a live interactive demo with students to understand benefits of TDD.
Finally, we discussed benefits as well as pitfalls from a practitioner's point of view.
Presentation from ConfeT&QA Online conference (February 2012) about techniques and approaches for successful adoption of TDD (Test Driven Development) in functional tests with WebDriver.
Behaviour Driven Development with SpecFlowPascal Laurin
You may know TDD but do you know BDD? Just like its cousin Behaviour Driven Development is a technique focusing on development using automated tests but at the functional or behaviour level. Think automated acceptance testing using English sentences with a few extra keywords: Given, When and Then.
In this presentation I'll be using SpecFlow, a Visual Studio extension that help us write BDD style tests easily.
How BDD with tools like Cucumber can create a stronger team, a better quality product, and ultimately a more useable API. Given at the #apistrat SF conference 10/24/2013
Kristoffer Nordstrom - Every System Test Department Should Have a Test Develo...TEST Huddle
EuroSTAR Software Testing Conference 2012 presentation on Every System Test Department Should Have a Test Developer by Kristoffer Nordstrom. See more at: http://conference.eurostarsoftwaretesting.com/past-presentations/
Refactoring is the art of improving the design of existing code. When we have an application that continues to produce revenue, it’s almost always better to reduce, reuse, and refactor, rather than throwing away the old code and starting anew. We’ll learn specific techniques, approaches, and code smells. We’ll see that our IDE can handle simple refactorings such as Extract Method. We’ll use our test suite to ensure that functionality did not change as a result of the refactoring. We’ll gain the habit of refactoring to make our code more expressive and therefore more easily understood after time has passed. Martin Fowler notes that the code we write today is merely tomorrow’s legacy code. Let’s make it as easy as we can on our future selves.
Test Driven Development - a Practitioner’s PerspectiveMalinda Kapuruge
Guest lecture at Swinburne University of Technology, Melbourne. We introduced TDD concepts to students. We also did a live interactive demo with students to understand benefits of TDD.
Finally, we discussed benefits as well as pitfalls from a practitioner's point of view.
Presentation from ConfeT&QA Online conference (February 2012) about techniques and approaches for successful adoption of TDD (Test Driven Development) in functional tests with WebDriver.
Understanding TDD - theory, practice, techniques and tips.Malinda Kapuruge
My talk at the Swinburne University on 09/10/2019. Presented to students as part of the series, Development Projects - Tools and Practices.
Level: Beginner
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha CoffmanSauce Labs
In this SauceCon 2019 presentation, Samantha Coffman, Product Manager at Sauce Labs, and Alissa Lydon, Product Marketing Manager at Sauce Labs, discuss Sauce Headless, the industry’s first cloud-based headless testing solution, making it a fast and affordable option for early pipeline testing at scale. They will cover the benefits of using Sauce Headless in conjunction with Sauce Labs traditional VM offering to increase the release velocity, as well as examples of customers who are experiencing upwards of 50% faster test times using Sauce Headless.
How to Fit Performance Testing into a DevOps EnvironmentNeotys
DevOps environments demand shorter development cycles and a healthy amount of automation, while performance testing is time-consuming and requires manual human action. So, how can you execute thorough performance tests in a fast-paced environment and integrate performance testing tools with a DevOps toolchain?
If you’re testing in a DevOps or any other time-constrained environment, you need to accelerate your performance testing cycles.
This is a draft of a presentation for a course on Visual Studio 2010 Unit Testing, I've uploaded mainly because I tried to create a Metro Style presentation, so if everyone like it, he can use as base for own presentation.
We investigate one of the most popular approaches to creating software: test driven development. From the basic understanding why tests are important to a new software development paradigm, where you start with tests and them do the implementation. We glance over different areas of testing and see how one should really do the software testing in different situation.
Continuous Testing - What QA means for DevOpsSeaLights
First came agile, then came DevOps and Continuous Delivery, now comes Continuous Testing.
In this new reality of rapid releases, incremental changes, and short QA cycles, testing is becoming a bottleneck. Continuous Testing is a major opportunity for QA leaders to redefine the strategic role in the organization, specifically as drivers of quality within Continuous Delivery.
Join us for an overview of the upcoming challenges that you will face as QA leaders and how Continuous Testing will bring you through these changes on top.
Interactive Demo -> http://www.sealights.io/interactive-demo/
Live Demo -> http://www.sealights.io/request-a-demo/
This presentation is about unit tests, integration tests, REST tests, code coverage and analysis tools, code reviews and other tools that help achieve high-level results.
This presentation by Ilya Tsvetkov (Associate Manager, GlobalLogic) was delivered at GlobalLogic Java Conference in Krakow on December 12, 2015.
Despite the belief that a shared context and collaboration drives quality, too often, software testers and quality professionals struggle to find their place within today's integrated agile teams. This session is a practitioner’s view of testing and testing practices within an iterative/incremental development environment. We will begin with a discussion of some of the challenges of testing within an agile environment and delve into the guiding principles of Agile Testing and key enabling practices. Agile Testing necessitates a change in mindset, and it is as much, if not more, about behavior, as it is about skills and tooling, all of which will be explored.
deck from talk at YOW Data in Sydney, covers VariantSpark, custom Apache Spark Machine Learning library and also GT-Scan2 using AWS Lambda architecture for bioinformatics
VariantSpark - a Spark library for genomicsLynn Langit
VariantSpark a customer Apache Spark library for genomic data. Customer wide random forest machine learning algorithm, designed for workloads with millions of features.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
7. Approval Tests make it EASY…
For Woody… For Lynn…
• … for human evaluation of • … in multiple languages
test results • … with visual results…
• … to set up Tests
• … to modify test output for
readability Golden Master
• … to maintain tests
9. Approving the Reported Result
• Contents are serialized to a file as binary (to compare)
• Rename *.received to *.approved
• Right click ‘Use whole file’
• Copy ‘Move’ statement from Test Results to command window.
11. A Little About Reporters
• Reporters provide a rich, expressive, human-friendly view of
a failed test.
• Reporters usually hook into DiffTools (Text, Image, Sound…)
• Support for many diff tools included in Reporters
• Can add hooks to your favorite diff tool
13. Best test output has...?
Granularity
• What is the result of a break
• What is the specific cause of a break
Feedback
• Frequent (or even constant) feedback
Specification
• What is this code supposed to do?
• How do we use it?
Regression-Proofing
• Did what I just do break something?
Automatic Design Process
• TDD can be thought of as Test Driven Design
18. Code must be Testable
Code must include Tests
Code should be written so that it is easy to write
its required tests
“Reduce to Functional”
Code Tests must be kept runnable
19. Unit Test Frameworks are Multi-Purpose
New Code • Application code (components)
• Functionality
Testing APIs • Edge cases
• Locking tests
Legacy Code • Characterization tests
Learning new • Scope
APIs • Functionality
21. Locking Tests (Characterization Tests)
Ensures Quickly
Test to Most often
system still results in
enable used with
works the high test
refactoring Legacy Code
same coverage
23. For More Information
www.ApprovalTests.com
Pick your language & download
Pick your diff tool
Reference, Approve & Enjoy
Learn more – videos (.NET)
Podcast - HerdingCode
Be sure to read the FAQ - http://approvaltests.sourceforge.net/?q=node/3Llewellyn Falco and Dan Gilkerson
Simple C# demo, show Console (breakpoint), Assert, Approve, Reporter with Add, then with Explain, then into Reporters (DiffHTMLDiff)Here are the steps from www.ApprovalTests.comStep 1: Create your scenario Step 2: Write that scenario in EnglishStep 3: Translate English to Code (TDD – name objects / methods FIRST)Step 4: Create Code so it works (Implement named objects / methods)Step 5: Run your test for feedback while you codeStep 6: Approve result so it continues to workStep 7: Change the requirement Step 8: See the new solution Step 9: Re-approve so it continues to work
ApprovalTests is a valuable PART of the testing tools that professional developers use
Teaching Kids Programming – at www.TeachingKidsProgramming.orgSmallBasicFun – extensions at http://extendsmallbasic.codeplex.com/Learn to Program -- http://learntoprogram.codeplex.com/
Simple C# demo, show Console (breakpoint), Assert, Approve, Reporter with Add, then with Explain, then into Reporters (DiffHTMLDiff)Here are the steps from www.ApprovalTests.comStep 1: Create your scenario Step 2: Write that scenario in EnglishStep 3: Translate English to Code (TDD – name objects / methods FIRST)Step 4: Create Code so it works (Implement named objects / methods)Step 5: Run your test for feedback while you codeStep 6: Approve result so it continues to workStep 7: Change the requirement Step 8: See the new solution Step 9: Re-approve so it continues to work
Demo the VS2010 plug in, right-click ‘Approve’ – only works when test has not passed already.Contents provided are serialized to the file, depending on the Writer (which is encapsulated and associated to the method, examples:Approve(“”)*.txtApproveHtml(“”)*.htmlApprove(WinForm)*.pngApprove(IExecutableQuery)*.txt (SQL statement source generally)The act of approving allows you to take the contents of the received file and write them Namer – creates file name based on method nameWriter (depending on type, i.e. string) – inserts contents of object (i.e. string) into the new fileApprover – checks to see whether *.received file equals *.approvedReporter – called only on failure and then report (show) both files (*.approved & *.received)Received file is the contents that you gave the Writer written to the that file, the type is determined by the Writer, i.e. tiff, png
Image from http://askville.amazon.com/loves-Ferrell-favorite-character-played/AnswerViewer.do?requestId=7446578
http://blog.approvaltests.com/2011/12/using-reporters-in-approval-tests.htmlReporters can be put at multiple levels, closest wins (assembly, class, method)Can use mult-reporter(s), separate with a commaPoint out that the reporters vary for the different (language) implementations, i.e. C#, Java, etc.. Point to the documentation!DiffReporter is a cascading reporter (supports multiple)Reporter are VIEWERS for results on test FAILURE onlyIncluded reporters which are not listed are also WinDiff, BeyondCompare and CodeCompare (http://www.devart.com/codecompare/)Types – text, image, HTML, more?List of free differencing tools - http://www.thefreecountry.com/programming/filecomparison.shtml
There is a header and lambda function for arrays that allows for thetesting circle.var word = "Llewellyn";Approvals.Approve(word, word.ToCharArray(), (c) => c+ " => " + (int)c);would produce:LlewellynL => 76l => 108e => 101w => 119e => 101l => 108l => 108y => 121n => 110
We will play the video here – here’s the URL -- http://www.youtube.com/playlist?list=PLFBA98F47156EFAA9
http://www.youtube.com/watch?v=52YouQkd-f8Can approve ‘parts’ of a form (controls), or reports (RDLC), different types of files, such as .tiff, etc…*to test part of a Form, must make that part (control) publicC# demo using WinDiff (or TortoiseImageDiff) – new code TDD, ReSharper or VS refactoring tools?Do a version of this demo - http://www.youtube.com/watch?v=k5Y_jo4Nn54Also for ArraysThere is a header and lambda function for arrays that allows for thetesting circle.var word = "Llewellyn";Approvals.Approve(word, word.ToCharArray(), (c) => c+ " => " + (int)c);would produce:LlewellynL => 76l => 108e => 101w => 119e => 101l => 108l => 108y => 121n => 110
About Unit Testing Legacy Code - http://c2.com/cgi/wiki?UnitTestingLegacyCodePhoto credit - http://www.typemock.com/blog/2011/06/21/who-wants-a-free-typemock-t-shirt-2/
Image credits - http://dilbert.com/strips/comic/2006-12-08/Biz opportunity (i.e. how much) Legacy code is out thereIntro the idea of using approvals for legacy code in addition to TDD (i.e. test-first on new code)Image credit - http://www.agilitrix.com/wp-content/uploads/2010/03/Legacy-Systems-ThoughtWorks-QTB.jpg
Explain the syntax of ApprovalTests.Combinations.CombinationApprovals.VerifyAllCombinations (arg,arg,arg) in C# (9 overloads)Can pass Enumerable, Array, RangeContrast to Debug.Assert (individual results) – ApprovalTests.Combinations.CombinationApprovals.VerifyAllCombinations much richer output, here you are testing EVERY element in combination
Download code for demo from: https://github.com/lynnlangit/ApprovalTests_CodeDemos_Agile2012Future – Approval Katas or Koans“Try our bowling with approvals. - Java / C# with MS Test / C# with Nunit”