This was a workshop given on the UTN University, for the Software Engineering students. The idea is to give a brief explanation about TDD, and how to use it.
This workshop is designed specially for Queen Mary University of London alumni, in order to teach them TDD.
You will learn: What is TDD, Why and How.
If you want to learn more: https://github.com/MyPitit/TDD
This slide goes from an introduction to general software testing down to testing of javascript application, explaining why test, when to test and what to test in an application. Mocha framework was used to explain how testing works in JS.
Talk Presented at #forLoopKaduna Meetup on July 1st, 2017
This workshop is designed specially for Queen Mary University of London alumni, in order to teach them TDD.
You will learn: What is TDD, Why and How.
If you want to learn more: https://github.com/MyPitit/TDD
This slide goes from an introduction to general software testing down to testing of javascript application, explaining why test, when to test and what to test in an application. Mocha framework was used to explain how testing works in JS.
Talk Presented at #forLoopKaduna Meetup on July 1st, 2017
This slide explain you the concept of XUnit with Asp.Net Core Web API. This slide covers,
Understanding Testing of Application,
Unit testing with XUnit Framework to improve the software performance,
Explains how to start with Unit and Integration testing with XUnit.
4 Nisan 2015 tarihinde Kadir Has Üniversitesi'nde yapılan 9. Yazılım Teknolojileri Seminer etkinliğinde Eralp Erat'ın yaptığı TDD (Test Driven Design) sunumu
Are Agile Projects Doomed to Half-Baked Design?theinfonaut
Today's web-based applications go live every few weeks. Agile methodologies like Extreme Programming and Scrum, focus on short development cycles, accelerated feedback from users and customers, and incremental delivery. On the technical side these approaches can bring discipline and predictability to short release cycles. But can these incremental methodologies incorporate successful design techniques? Using case studies and examples from their own project experience, Alex and Leslie will discuss how to integrate design and Agile, discussing what works, what problems arise, and most importantly, the changes in mindset that are necessary on an integrated Agile design/implementation team.
These slides quickly illustrate how you can successfully adopt Agile to improve your development efforts. In addition to discussing how and why teams are interested in Agile, it covers some of the challenges of adopting it and suggestions for ensuring success.
OSS Java Analysis - What You Might Be MissingCoverity
We think FindBugs is a great tool for finding coding style and best practice types of issues, so we conducted a little experiment a few months ago. We analyzed Jenkins core code with both FindBugs and Coverity. These slides provide a high-level summary of our results.
We all hear how unit tests can ensure higher quality code and help us in day to day refactoring, but is it feasible to write and maintain unit tests in a fast paced startup company?
This is a presentation by server lead, Heine Frifeldt, on how unit tests was gradually introduced into the server code base at Loopt, which tools are used in the continuous build environment, coding techniques and lessons learned.
Test driven development (TDD), a software development method, helps build high quality applications faster. Life-cycle, usefulness, limitations and similar techniques of TDD have been presented in this slide deck.
Funny stories and anti-patterns from DevOps landscapeMikalai Alimenkou
During last several years DevOps became strong buzzword used almost in every project, team and company. But almost everywhere it is used in very funny and strange context. For example, existing ops guys are renamed to DevOps just to sell them to the client for more money. Or DevOps is used as new job title for some magically powerful person who is able to operate cloud environment and modern infrastructure related tools, leading team of old school ops and participating in management meetings. In this talk I’m going to review all different anti-patterns and bad practices in DevOps landscape using stories from my personal experience as Delivery Manager and independent consultant.
These are the slides we presented at the 2009 Montreal CodeCamp for our FluentSelenium test DSL. FluentSelenium demonstrates how it is possible to make test code cleaner by introducing appropriate test abstractions.
see http://fluentselenium.codeplex.com/
This slide explain you the concept of XUnit with Asp.Net Core Web API. This slide covers,
Understanding Testing of Application,
Unit testing with XUnit Framework to improve the software performance,
Explains how to start with Unit and Integration testing with XUnit.
4 Nisan 2015 tarihinde Kadir Has Üniversitesi'nde yapılan 9. Yazılım Teknolojileri Seminer etkinliğinde Eralp Erat'ın yaptığı TDD (Test Driven Design) sunumu
Are Agile Projects Doomed to Half-Baked Design?theinfonaut
Today's web-based applications go live every few weeks. Agile methodologies like Extreme Programming and Scrum, focus on short development cycles, accelerated feedback from users and customers, and incremental delivery. On the technical side these approaches can bring discipline and predictability to short release cycles. But can these incremental methodologies incorporate successful design techniques? Using case studies and examples from their own project experience, Alex and Leslie will discuss how to integrate design and Agile, discussing what works, what problems arise, and most importantly, the changes in mindset that are necessary on an integrated Agile design/implementation team.
These slides quickly illustrate how you can successfully adopt Agile to improve your development efforts. In addition to discussing how and why teams are interested in Agile, it covers some of the challenges of adopting it and suggestions for ensuring success.
OSS Java Analysis - What You Might Be MissingCoverity
We think FindBugs is a great tool for finding coding style and best practice types of issues, so we conducted a little experiment a few months ago. We analyzed Jenkins core code with both FindBugs and Coverity. These slides provide a high-level summary of our results.
We all hear how unit tests can ensure higher quality code and help us in day to day refactoring, but is it feasible to write and maintain unit tests in a fast paced startup company?
This is a presentation by server lead, Heine Frifeldt, on how unit tests was gradually introduced into the server code base at Loopt, which tools are used in the continuous build environment, coding techniques and lessons learned.
Test driven development (TDD), a software development method, helps build high quality applications faster. Life-cycle, usefulness, limitations and similar techniques of TDD have been presented in this slide deck.
Funny stories and anti-patterns from DevOps landscapeMikalai Alimenkou
During last several years DevOps became strong buzzword used almost in every project, team and company. But almost everywhere it is used in very funny and strange context. For example, existing ops guys are renamed to DevOps just to sell them to the client for more money. Or DevOps is used as new job title for some magically powerful person who is able to operate cloud environment and modern infrastructure related tools, leading team of old school ops and participating in management meetings. In this talk I’m going to review all different anti-patterns and bad practices in DevOps landscape using stories from my personal experience as Delivery Manager and independent consultant.
These are the slides we presented at the 2009 Montreal CodeCamp for our FluentSelenium test DSL. FluentSelenium demonstrates how it is possible to make test code cleaner by introducing appropriate test abstractions.
see http://fluentselenium.codeplex.com/
Ever tried doing Test First Test Driven Development? Ever failed? TDD is not easy to get right. Here's some practical advice on doing BDD and TDD correctly. This presentation attempts to explain to you why, what, and how you should test, tell you about the FIRST principles of tests, the connections of unit testing and the SOLID principles, writing testable code, test doubles, the AAA of unit testing, and some practical ideas about structuring tests.
Unit Testing to Support Reusable for Component-Based Software Engineeringijtsrd
Unit testing is a practical approach to improve the quality and reliability of software. Unit testing is usually performed by programmers and is the base for all other tests such as integration testing and system testing. Unit Testing can be done manually and or automatically. The automated unit tests are written by the developers after the completion of functionality coding. The number of defects reduced when automated unit tests are written iteratively similar to test driven development. This framework proved that significant portions of windows application can be automatically tested without manual intervention. This reduces the manpower involved in testing each and every unit of the application and increases the quality of the software product. Khin Moe Sam "Unit Testing to Support Reusable for Component-Based Software Engineering" Published in International Journal of Trend in Scientific Research and Development (ijtsrd), ISSN: 2456-6470, Volume-3 | Issue-2 , February 2019, URL: https://www.ijtsrd.com/papers/ijtsrd21458.pdf
Paper URL: https://www.ijtsrd.com/engineering/computer-engineering/21458/unit-testing-to-support-reusable-for-component-based-software-engineering/khin-moe-sam
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.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
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.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
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.
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.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
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.
2. Agenda
Introduction to Unit Testing.
Introduction to TDD.
How it works? Steps.
Mock Objects.
Dependency Injection
Characteristics
Benefits
3. What is it?
Is an advanced technique of using
automated unit tests to drive the
design of software and force
decoupling of dependencies.
Introduced by Kent Beck as part of XP
(Extreme Programming).
4. What is a Unit Test?
In computer programming, unit testing
is a method by which individual units
of source code, sets of one or more
computer program modules together
with associated control data, usage
procedures, and operating
procedures, are tested to determine if
they are fit for use.
5. What is a Unit Test? (Cont.)
/// <summary>
/// The sum should work using two integers.
/// </summary>
[TestMethod]
public void SumShouldWorkUsingTwoIntegers()
{
// Given
int numberA = 50;
int numberB = 100;
// When
int sum = numberA + numberB;
// Then
Assert.AreEqual(sum, 150);
}
7. Steps (I)
Understand the requirements of the
story, work item, or feature that you are
working on.
RED: Create a test and make it fail.
◦ Imagine how the new code should be called
and write the test as if the code already
existed.
◦ Create the new production code stub. Write
just enough code so that it compiles.
◦ Run the test. It should fail.
8. Steps (II)
GREEN: Make the test pass by any
means necessary.
◦ Write the production code to make the test
pass. Keep it simple.
◦ If you've written the code so that the test
passes as intended, you are finished. You do
not have to write more code speculatively.
Make this one test pass and continue.
◦ When the test passes, you might want to run
all tests up to this point to build confidence
that everything else is still working.
9. Steps (III)
REFACTOR: Change the code to remove
duplication in your project and to improve the
design while ensuring that all tests still pass.
◦ Remove duplication caused by the addition of the
new functionality.
◦ Make design changes to improve the overall
solution.
◦ After each refactoring, rerun all the tests to
ensure that they all still pass.
Repeat the cycle. Each cycle should be very
short, and a typical hour should contain many
Red/Green/Refactor cycles.
10. Unit Testing Tools
Each programming language has
different tools to use TDD:
◦
◦
◦
◦
◦
◦
◦
Junit,
Mstest, Nunit,
PHPUnit,
Sunit,
PyUnit, Unittest,
CppUnit, CxxTest,
Etc
11. Mock Objects
Mock Objects are simulated objects that mimic the
behavior of real objects in controlled ways. A
programmer typically creates a mock object to test
the behavior of some other object, in much the
same way that a car designer uses a crash test
dummy to simulate the dynamic behavior of a
human in vehicle impacts.
Frameworks: Mockito, EasyMock, Jmockit,
RhinoMocks, Nmock, etc.
12. Dependency Injection
Dependency Injection is a software design
pattern that allows a choice of component to be
made at run-time rather than compile time. This
can be used, for example, as a simple way to load
plugins dynamically or to choose mock objects in
test environments vs. real objects in production
environments. This software design pattern injects
the dependent element (object or value etc.) to the
destination automatically by knowing the
requirement of the destination.
Frameworks: Spring, Spring.net, Ninject, Unity,
etc.
13. Characteristics
Runs fast, runs fast, runs fast. If the tests are slow, they will not be
run often.
Separates or simulates environmental dependencies such as
databases, file systems, networks, queues, and so on. Tests that
exercise these will not run fast, and a failure does not give
meaningful feedback about what the problem actually is.
Is very limited in scope. If the test fails, it's obvious where to look for
the problem. Use few Assert calls so that the offending code is
obvious. It's important to only test one thing in a single test.
Runs and passes in isolation. If the tests require special
environmental setup or fail unexpectedly, then they are not good unit
tests. Change them for simplicity and reliability. Tests should run and
pass on any machine. The "works on my box" excuse doesn't work.
Often uses stubs and mock objects. If the code being tested typically
calls out to a database or file system, these dependencies must be
simulated, or mocked. These dependencies will ordinarily be
abstracted away by using interfaces.
Clearly reveals its intention. Another developer can look at the test
and understand what is expected of the production code.
14. Benefits
The suite of unit tests provides constant feedback that each component is
still working.
The unit tests act as documentation that cannot go out-of-date, unlike
separate documentation, which can and frequently does.
When the test passes and the production code is refactored to remove
duplication, it is clear that the code is finished, and the developer can move
on to a new test.
Test-driven development forces critical analysis and design because the
developer cannot create the production code without truly understanding
what the desired result should be and how to test it.
The software tends to be better designed, that is, loosely coupled and easily
maintainable, because the developer is free to make design decisions and
refactor at any time with confidence that the software is still working. This
confidence is gained by running the tests. The need for a design pattern may
emerge, and the code can be changed at that time.
The test suite acts as a regression safety net on bugs: If a bug is found, the
developer should create a test to reveal the bug and then modify the
production code so that the bug goes away and all other tests still pass. On
each successive test run, all previous bug fixes are verified.
15. References
Test Driven Development: By Example [Kent Beck]
Unit testing [Wikipedia]
Guidelines for Test-Driven Development
Using mock objects for complex unit tests
Mocks Aren't Stubs [Martin Fowler]
Dependency Injection [Martin Fowler]
Spring for Java
Spring for c#