Test Data - Food for your Test Automation FrameworkAnand Bagmar
Slides from my talk in Selenium Conference 2016, Bangalore
Blog post: http://essenceoftesting.blogspot.com/2016/06/test-data-food-for-test-automation.html
Abstract:
Building a Test Automation Framework is easy - there are so many resources / guides / blogs / etc. available to help you get started and help solve the issues you get along the journey.
Teams already building 1000s of tests of various types - UI, web service-based, integration, unit, etc. is a proof of that.
However, building a "good" Test Automation Framework is not very easy. There are a lot of principles and practices you need to use, in the right context, with a good set of skills required to make the Test Automation Framework maintainable, scalable and reusable.
In this talk, we will focus on one of the critical aspects and patterns in building the Test Automation framework - Test Data!
We will look at different data patterns as options and techniques how to create, manage, use, reuse Test Data in a way to keep the tests running in an reliable and deterministic way. We will also discuss what questions to ask, what things to think about in selecting your approach for Test Data!
This discussion will be applicable for any type of Test Automation (web / mobile / desktop), but, we will focus primarily on UI automation frameworks, ex. using Selenium.
Video & blog post will be linked soon!
Building a Test Automation Framework is easy - there are so many resources / guides / blogs / etc. available to help you get started and help solve the issues you get along the journey.
However, building a "good" Test Automation Framework is not very easy. There are a lot of principles and practices you need to use, in the right context, with a good set of skills required to make the Test Automation Framework maintainable, scalable and reusable.
Design Patterns play a big role in helping achieve this goal of building a good and robust framework.
In this talk, we will talk about, and see examples of various types of patterns you can use for:
Build your Test Automation Framework
Test Data Management
Locators / IDs (for finding / interacting with elements in the browser / app)
Using these patterns you will be able to build a good framework, that will help keep your tests running fast, and reliably in your CI / CD setup!
Slides from one day workshop, where people could learn how to write acceptance tests in efficient and practical way, in the context of Ruby On Rails framework (using tools like: rspec and capybara). During this course you attendees also learn about approaches that turn your acceptance tests into invaluable documentation, that includes information about your application's requirements and specification.
Test Data - Food for your Test Automation FrameworkAnand Bagmar
Slides from my talk in Selenium Conference 2016, Bangalore
Blog post: http://essenceoftesting.blogspot.com/2016/06/test-data-food-for-test-automation.html
Abstract:
Building a Test Automation Framework is easy - there are so many resources / guides / blogs / etc. available to help you get started and help solve the issues you get along the journey.
Teams already building 1000s of tests of various types - UI, web service-based, integration, unit, etc. is a proof of that.
However, building a "good" Test Automation Framework is not very easy. There are a lot of principles and practices you need to use, in the right context, with a good set of skills required to make the Test Automation Framework maintainable, scalable and reusable.
In this talk, we will focus on one of the critical aspects and patterns in building the Test Automation framework - Test Data!
We will look at different data patterns as options and techniques how to create, manage, use, reuse Test Data in a way to keep the tests running in an reliable and deterministic way. We will also discuss what questions to ask, what things to think about in selecting your approach for Test Data!
This discussion will be applicable for any type of Test Automation (web / mobile / desktop), but, we will focus primarily on UI automation frameworks, ex. using Selenium.
Video & blog post will be linked soon!
Building a Test Automation Framework is easy - there are so many resources / guides / blogs / etc. available to help you get started and help solve the issues you get along the journey.
However, building a "good" Test Automation Framework is not very easy. There are a lot of principles and practices you need to use, in the right context, with a good set of skills required to make the Test Automation Framework maintainable, scalable and reusable.
Design Patterns play a big role in helping achieve this goal of building a good and robust framework.
In this talk, we will talk about, and see examples of various types of patterns you can use for:
Build your Test Automation Framework
Test Data Management
Locators / IDs (for finding / interacting with elements in the browser / app)
Using these patterns you will be able to build a good framework, that will help keep your tests running fast, and reliably in your CI / CD setup!
Slides from one day workshop, where people could learn how to write acceptance tests in efficient and practical way, in the context of Ruby On Rails framework (using tools like: rspec and capybara). During this course you attendees also learn about approaches that turn your acceptance tests into invaluable documentation, that includes information about your application's requirements and specification.
Mathias started to learn Oracle Application Express, and while learning we took notes what difficulties he had. This presentation goes over some concepts that were not clear for somebody coming from school with a specific background.
Rails makes it easy to write your tests with Minitest (A default testing framework used by rails).
This slide contains contents about:
1. WHY IS UNIT TEST NECESSARY / SO IMPORTANT?
- Unit Test make it easy to learn Rails Way.
2. THINGS YOU SHOULD KNOW
- You need to have database for test environment.
3. DIRECTORIES FOR TEST IN RAILS
4. WHAT IS FIXTURES?
5. MODEL TEST IN ACTION
- test_helper.rb
- Youre Test Case < ActiveSupport::TestCase < Minitest::Test
- A simple approach for TDD (Test Driven Development)
6. AVAILABLE ASSERTIONS
레일스는 Minitest 를 기본 테스팅 프레임워크로 포함하고 있습니다.
이 슬라이드에서는 미니테스트와 관련된 레일스 단위 테스트 관련 기본 개념에 대해서 설명합니다.
또한, 간단한 모델 테스트 케이스를 이용하여 실제 테스트를 수행하는 방법에 대해서 간략히 설명합니다.
Waaaaay back in the mid-2000s I did a bunch of presentations on unit testing, test driven development, and so on. I offer this slide deck in memory of those days (and ah the relative simplicity of those Powerpoint themes, mine anyway). You might still find this useful.
Writing useful automated tests for the single page applications you buildAndrei Sebastian Cîmpean
How to approach testing if you are building a modern single page application. I try to emphasize that integration testing is the way to go and that developers should consider the tests as part of the system and spend time to maintain them.
[DSC Europe 22] Engineers guide for shepherding models in to production - Mar...DataScienceConferenc1
Sometimes just creating a good model is not enough we need to enable people to use it and that often means making it a part of a bigger system or somehow deploying it. This will be from an engineering point of view of how we work with a data scientist or a team of them to make sure the model is production ready. Here is a short check list of things we would do for each model: 1. understand what the model is trying to do/predict 2. define all of the model inputs and outputs 3. define point (as a point in time and integration point) in the wider system when the model is called 4. define how we want to host the model. We from engineering team usually help to make sure we can gather all of the model inputs and process all of the model outputs, also we make sure models are fast and reliable to call in a production environment and we help optimize them for that we also help enforce good engineering practices that rub off on DS people and make them more efficient. And in this talk we will see a few examples of how we do things and what things to look for.
WEBINAR: Proven Patterns for Loading Test Data for Managed Package TestingCodeScience
Scratch orgs are extremely valuable tools for Salesforce developers, but due to their individual, disposable nature, a source of truth for QA data is often not accounted for. Without a single repository for QA data, many developers may be testing against incomplete data sets, skewing their results. In our latest tech webinar, we discuss implications planning for QA data can have on Salesforce development.
In this webinar, you will learn:
- Why it’s essential to have a plan in place early on how to deploy data to scratch orgs and QA orgs.
- Shortcuts which can inadvertently hide bugs that don't manifest until tested with real data, and lengthen the time it takes to complete a task.
- Strategies for maintaining data models as projects progress and as data is added or removed to stay realistic and current.
CodeScience Lead Salesforce Developer, Bobby Tamburrino will dive into these topics and provide key insights that can help ISVs succeed on the AppExchange.
Continuous Load Testing with CloudTest and JenkinsSOASTA
Two key challenges to continuous load testing are provisioning a test system to handle the load and accessing load generators to drive the traffic.
In this webinar from SOASTA & CloudBees, you will learn how to:
Build realistic automated web performance tests and run them in Jenkins
Architect and launch a test environment that auto-provisions in the cloud
Manage a load generation grid to drive load tests in a lights-out mode
Establish a performance baseline in your daily Jenkins reports
10 Tips for Configuring Your Builds with Bamboo SpecsAtlassian
Bamboo 6 lets every team manage their plans through code. But it's only the start of a journey. At Atlassian, we now configure the vast majority of our builds and deployments with code. Whether you're a new starter or already a user of Bamboo Specs, you're (or will be) facing questions such as "How do I test my Spec before update?", "Can I safely modify this reused Spec component?", or "How do I make Specs more accessible to non-Java teams?".
Join Przemek Bruski, the architect of Bamboo to hear how our teams solved these - and more - problems. Apart from practical tips, we'll also talk about jump-starting your Specs with our exporter, latest additions to the Specs feature, and support for Bitbucket Cloud Pipelines configuration files.
Continuous Load Testing with CloudTest and JenkinsSOASTA
Two key challenges to continuous load testing are provisioning a test system to handle the load and accessing load generators to drive the traffic.
In this webinar from SOASTA & CloudBees, you will learn how to:
Build realistic automated web performance tests and run them in Jenkins
Architect and launch a test environment that auto-provisions in the cloud
Manage a load generation grid to drive load tests in a lights-out mode
Establish a performance baseline in your daily Jenkins reports
CoreData - there is an ORM you can like!Tomáš Jukin
It doesn't hate you. CoreData is Cocoa for models! But it bites. I show you WHY and WHEN to use CoreData as well as HOW in order to prevent be biten by it.
This slides were presented on my presentation at iCONdev at iCONprague 2014 on 23. 3. 2014 (more at http://www.iconprague.com/detailni-program/#core-data-i-orm-muzete-mit-radi)
We’ve all been there. We work incredibly hard to develop a feature and design tests based on written requirements. We build a detailed test plan that aligns the tests with the software and the documented business needs. And when we put the tests to the software, it all falls apart because the requirements were changed without informing everyone. Mary Thorn says help is at hand. Enter behavior-driven development (BDD), and Cucumber and SpecFlow, tools for running automated acceptance tests and facilitating BDD. Mary explores the nuances of Cucumber and SpecFlow, and shows you how to implement BDD and agile acceptance testing. By fostering collaboration for implementing active requirements via a common language and format, Cucumber and SpecFlow bridge the communication gap between business stakeholders and implementation teams. In this workshop, practice writing feature files with the best practices Mary has discovered over numerous implementations. If you experience developers not coding to requirements, testers not getting requirements updates, or customers who feel out of the loop and don’t get what they ask for, Mary has answers for you.
Have you ever finished writing unit tests and deploying to production, only to get errors or problems later down the line? If you want to learn how to minimize these kinds of data problems or failures before they occur, you need to program defensively. Join us to learn about Apex design patterns for resilient code, how to build applications that monitor themselves, and how to avoid common mistakes that even experienced developers make.
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
Taking your mobile development process cycle, and the quality of the apps, from good to great.
See how focusing on automated tests can improve app quality, time to market and much more, and learn some best practices to avoid too much trouble getting started
Presented at Xamarin Evolve 2014
Scaling Ride-Hailing with Machine Learning on MLflowDatabricks
"GOJEK, the Southeast Asian super-app, has seen an explosive growth in both users and data over the past three years. Today the technology startup uses big data powered machine learning to inform decision-making in its ride-hailing, lifestyle, logistics, food delivery, and payment products. From selecting the right driver to dispatch, to dynamically setting prices, to serving food recommendations, to forecasting real-world events. Hundreds of millions of orders per month, across 18 products, are all driven by machine learning.
Building production grade machine learning systems at GOJEK wasn't always easy. Data processing and machine learning pipelines were brittle, long running, and had low reproducibility. Models and experiments were difficult to track, which led to downstream problems in production during serving and model evaluation. In this talk we will cover these and other challenges that we faced while trying to scale end-to-end machine learning systems at GOJEK. We will then introduce MLflow and explore the key features that make it useful as part of an ML platform. Finally, we will show how introducing MLflow into the ML life cycle has helped to solve many of the problems we faced while scaling machine learning at GOJEK.
"
RubyConf 2022 - From beginner to expert, and back againmtoppa
"In the beginner's mind there are many possibilities, in the expert's mind there are few."
- Shunryu Suzuki, from "Zen Mind, Beginner's Mind"
The Japanese Zen term shoshin translates as “beginner’s mind” and refers to a paradox: the more you know about a subject, the more likely you are to close your mind to further learning. In contrast, the beginner’s state of mind is judgment free. It’s open, curious, available, and present. We’ll draw on examples of these mindsets from fields as varied as aviation and geology, and discover lessons we can apply to the world of software development.
RailsConf 2022 - Upgrading Rails: The Dual Boot Waymtoppa
Upgrading Rails is easy, right? Sure, as long as you are upgrading your patch version. A Rails upgrade for a big application is not a trivial project: It took GitHub a year and a half to upgrade from Rails 3.2 to 5.2.
While upgrades have become easier with every new Rails version, your application has only become more complicated with every new dependency you added.
In this workshop you will learn a proven Rails upgrade process for major and minor version changes of Rails. You will leave this workshop with a roadmap to upgrade your Rails application.
Mathias started to learn Oracle Application Express, and while learning we took notes what difficulties he had. This presentation goes over some concepts that were not clear for somebody coming from school with a specific background.
Rails makes it easy to write your tests with Minitest (A default testing framework used by rails).
This slide contains contents about:
1. WHY IS UNIT TEST NECESSARY / SO IMPORTANT?
- Unit Test make it easy to learn Rails Way.
2. THINGS YOU SHOULD KNOW
- You need to have database for test environment.
3. DIRECTORIES FOR TEST IN RAILS
4. WHAT IS FIXTURES?
5. MODEL TEST IN ACTION
- test_helper.rb
- Youre Test Case < ActiveSupport::TestCase < Minitest::Test
- A simple approach for TDD (Test Driven Development)
6. AVAILABLE ASSERTIONS
레일스는 Minitest 를 기본 테스팅 프레임워크로 포함하고 있습니다.
이 슬라이드에서는 미니테스트와 관련된 레일스 단위 테스트 관련 기본 개념에 대해서 설명합니다.
또한, 간단한 모델 테스트 케이스를 이용하여 실제 테스트를 수행하는 방법에 대해서 간략히 설명합니다.
Waaaaay back in the mid-2000s I did a bunch of presentations on unit testing, test driven development, and so on. I offer this slide deck in memory of those days (and ah the relative simplicity of those Powerpoint themes, mine anyway). You might still find this useful.
Writing useful automated tests for the single page applications you buildAndrei Sebastian Cîmpean
How to approach testing if you are building a modern single page application. I try to emphasize that integration testing is the way to go and that developers should consider the tests as part of the system and spend time to maintain them.
[DSC Europe 22] Engineers guide for shepherding models in to production - Mar...DataScienceConferenc1
Sometimes just creating a good model is not enough we need to enable people to use it and that often means making it a part of a bigger system or somehow deploying it. This will be from an engineering point of view of how we work with a data scientist or a team of them to make sure the model is production ready. Here is a short check list of things we would do for each model: 1. understand what the model is trying to do/predict 2. define all of the model inputs and outputs 3. define point (as a point in time and integration point) in the wider system when the model is called 4. define how we want to host the model. We from engineering team usually help to make sure we can gather all of the model inputs and process all of the model outputs, also we make sure models are fast and reliable to call in a production environment and we help optimize them for that we also help enforce good engineering practices that rub off on DS people and make them more efficient. And in this talk we will see a few examples of how we do things and what things to look for.
WEBINAR: Proven Patterns for Loading Test Data for Managed Package TestingCodeScience
Scratch orgs are extremely valuable tools for Salesforce developers, but due to their individual, disposable nature, a source of truth for QA data is often not accounted for. Without a single repository for QA data, many developers may be testing against incomplete data sets, skewing their results. In our latest tech webinar, we discuss implications planning for QA data can have on Salesforce development.
In this webinar, you will learn:
- Why it’s essential to have a plan in place early on how to deploy data to scratch orgs and QA orgs.
- Shortcuts which can inadvertently hide bugs that don't manifest until tested with real data, and lengthen the time it takes to complete a task.
- Strategies for maintaining data models as projects progress and as data is added or removed to stay realistic and current.
CodeScience Lead Salesforce Developer, Bobby Tamburrino will dive into these topics and provide key insights that can help ISVs succeed on the AppExchange.
Continuous Load Testing with CloudTest and JenkinsSOASTA
Two key challenges to continuous load testing are provisioning a test system to handle the load and accessing load generators to drive the traffic.
In this webinar from SOASTA & CloudBees, you will learn how to:
Build realistic automated web performance tests and run them in Jenkins
Architect and launch a test environment that auto-provisions in the cloud
Manage a load generation grid to drive load tests in a lights-out mode
Establish a performance baseline in your daily Jenkins reports
10 Tips for Configuring Your Builds with Bamboo SpecsAtlassian
Bamboo 6 lets every team manage their plans through code. But it's only the start of a journey. At Atlassian, we now configure the vast majority of our builds and deployments with code. Whether you're a new starter or already a user of Bamboo Specs, you're (or will be) facing questions such as "How do I test my Spec before update?", "Can I safely modify this reused Spec component?", or "How do I make Specs more accessible to non-Java teams?".
Join Przemek Bruski, the architect of Bamboo to hear how our teams solved these - and more - problems. Apart from practical tips, we'll also talk about jump-starting your Specs with our exporter, latest additions to the Specs feature, and support for Bitbucket Cloud Pipelines configuration files.
Continuous Load Testing with CloudTest and JenkinsSOASTA
Two key challenges to continuous load testing are provisioning a test system to handle the load and accessing load generators to drive the traffic.
In this webinar from SOASTA & CloudBees, you will learn how to:
Build realistic automated web performance tests and run them in Jenkins
Architect and launch a test environment that auto-provisions in the cloud
Manage a load generation grid to drive load tests in a lights-out mode
Establish a performance baseline in your daily Jenkins reports
CoreData - there is an ORM you can like!Tomáš Jukin
It doesn't hate you. CoreData is Cocoa for models! But it bites. I show you WHY and WHEN to use CoreData as well as HOW in order to prevent be biten by it.
This slides were presented on my presentation at iCONdev at iCONprague 2014 on 23. 3. 2014 (more at http://www.iconprague.com/detailni-program/#core-data-i-orm-muzete-mit-radi)
We’ve all been there. We work incredibly hard to develop a feature and design tests based on written requirements. We build a detailed test plan that aligns the tests with the software and the documented business needs. And when we put the tests to the software, it all falls apart because the requirements were changed without informing everyone. Mary Thorn says help is at hand. Enter behavior-driven development (BDD), and Cucumber and SpecFlow, tools for running automated acceptance tests and facilitating BDD. Mary explores the nuances of Cucumber and SpecFlow, and shows you how to implement BDD and agile acceptance testing. By fostering collaboration for implementing active requirements via a common language and format, Cucumber and SpecFlow bridge the communication gap between business stakeholders and implementation teams. In this workshop, practice writing feature files with the best practices Mary has discovered over numerous implementations. If you experience developers not coding to requirements, testers not getting requirements updates, or customers who feel out of the loop and don’t get what they ask for, Mary has answers for you.
Have you ever finished writing unit tests and deploying to production, only to get errors or problems later down the line? If you want to learn how to minimize these kinds of data problems or failures before they occur, you need to program defensively. Join us to learn about Apex design patterns for resilient code, how to build applications that monitor themselves, and how to avoid common mistakes that even experienced developers make.
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
Taking your mobile development process cycle, and the quality of the apps, from good to great.
See how focusing on automated tests can improve app quality, time to market and much more, and learn some best practices to avoid too much trouble getting started
Presented at Xamarin Evolve 2014
Scaling Ride-Hailing with Machine Learning on MLflowDatabricks
"GOJEK, the Southeast Asian super-app, has seen an explosive growth in both users and data over the past three years. Today the technology startup uses big data powered machine learning to inform decision-making in its ride-hailing, lifestyle, logistics, food delivery, and payment products. From selecting the right driver to dispatch, to dynamically setting prices, to serving food recommendations, to forecasting real-world events. Hundreds of millions of orders per month, across 18 products, are all driven by machine learning.
Building production grade machine learning systems at GOJEK wasn't always easy. Data processing and machine learning pipelines were brittle, long running, and had low reproducibility. Models and experiments were difficult to track, which led to downstream problems in production during serving and model evaluation. In this talk we will cover these and other challenges that we faced while trying to scale end-to-end machine learning systems at GOJEK. We will then introduce MLflow and explore the key features that make it useful as part of an ML platform. Finally, we will show how introducing MLflow into the ML life cycle has helped to solve many of the problems we faced while scaling machine learning at GOJEK.
"
Similar to Rails testing: factories or fixtures? (20)
RubyConf 2022 - From beginner to expert, and back againmtoppa
"In the beginner's mind there are many possibilities, in the expert's mind there are few."
- Shunryu Suzuki, from "Zen Mind, Beginner's Mind"
The Japanese Zen term shoshin translates as “beginner’s mind” and refers to a paradox: the more you know about a subject, the more likely you are to close your mind to further learning. In contrast, the beginner’s state of mind is judgment free. It’s open, curious, available, and present. We’ll draw on examples of these mindsets from fields as varied as aviation and geology, and discover lessons we can apply to the world of software development.
RailsConf 2022 - Upgrading Rails: The Dual Boot Waymtoppa
Upgrading Rails is easy, right? Sure, as long as you are upgrading your patch version. A Rails upgrade for a big application is not a trivial project: It took GitHub a year and a half to upgrade from Rails 3.2 to 5.2.
While upgrades have become easier with every new Rails version, your application has only become more complicated with every new dependency you added.
In this workshop you will learn a proven Rails upgrade process for major and minor version changes of Rails. You will leave this workshop with a roadmap to upgrade your Rails application.
Applying Omotenashi (Japanese customer service) to your workmtoppa
“There is customer service, and then there is Japanese customer service.” - Tadashi Yanai, CEO, Uniqlo
Americans visiting Japan are often dazzled by the quality of customer service they experience, but usually mistakenly perceive it as a well-executed form of customer service as they understand it from Western culture. The American notion of “the customer is always right,” does not apply in Japan, yet customer dissatisfaction is much less common. We’ll explore why this is, with some entertaining real-life examples, and discover lessons from it that we can apply to our work in the software industry.
I gave this as a lightning talk at Boston.rb on 7/14//2015. It's a discussion of the challenges of applying the Law of Demeter to Rails programming.
I gave an older, simpler version of this talk at Philly.rb on 1/15/2013. I've replaced those older slides.
A11Y? I18N? L10N? UTF8? WTF? Understanding the connections between: accessib...mtoppa
Web accessibility (A11Y) is about making the web usable for people with disabilities, and it also benefits others with changing abilities, such as older people. Internationalization (I18N) and localization (L10N) are about translating web sites into other languages. UTF8 is a Unicode character set, which is now the dominant one used on the web, and it’s designed to include characters from just about every written language. Each of these topics are typically discussed in isolation from each other, but in this talk – after a gentle introduction to each of them – we’ll explore their interconnections. We’ll also take a look at what WordPress provides for supporting them in your work creating sites, themes, or plugins.
The promise and peril of Agile and Lean practicesmtoppa
Why you may to consider adopting Agile or Lean practices, how they differ from each other, what benefits you can expect, and what obstacles you may face.
Boston Ruby Meetup: The promise and peril of Agile and Lean practicesmtoppa
Why you may to consider adopting Agile or Lean practices, how they differ from each other, what benefits you can expect, and what obstacles you may face
WordCamp Nashville 2016: The promise and peril of Agile and Lean practicesmtoppa
Why you may to consider adopting Agile or Lean practices, how they differ from each other, what benefits you can expect, and what obstacles you may face
We want code that is easy to understand, re-usable, and flexible. But we are always up against deadlines, so we rush, and end up with code that is messy, buggy, hard to maintain, and makes us go slower even though we’re trying to go faster.
What is clean code? In this talk I’ll provide some answers to this question, and introduce you to 10 good habits that will help keep your code clean, such as the use of meaningful names for your variables and functions, and following the “Boy Scout Rule” (leave the code cleaner than you found it). I will even try to persuade you that using a lot of code comments is a sign that there are problems with your code.
WordCamp Boston 2015: Agile Contracts for WordPress Consultantsmtoppa
Before going out on my own to start Poka Yoke Design this June, I worked at PromptWorks, where we signed over 30 Time & Materials (T&M) contracts with clients over the past 2 years, from local businesses to nationally known media companies. This is in contrast to traditional Fixed Scope, Fixed Cost (FS-FC) contracts.
Prospective clients typically have an initial preference for FS-FC contracts: they’re familiar, and at first glance, seem to guarantee the client will get what they want (by spelling out business requirements in detail), and place the business risk on the contractor. However, traditional contracts fail to recognize that web application development is more like an R&D project than a construction project. In the fast paced world of the web, business requirements can grow and change rapidly, technical challenges and opportunities can arise, and both parties benefit from being able to respond to these changes in a teamwork fashion, instead of spending time on lengthy contract re-negotiations.
In this talk we’ll explore what goes into a T&M contract, how to persuade a prospective client to sign one, and how to live up to the expectations you create in the persuasion process, to deliver a successful project.
WordCamp Nashville 2015: Agile Contracts for WordPress Consultantsmtoppa
When you develop a WordPress based project for a client in an Agile way, you deliver working features on a frequent basis, such as weekly, as you build out the project. This allows for review, feedback, and adapting to change. Evolving business requirements are welcome in an Agile process, instead of a source of frustration.
The problem is, even if clients think an Agile approach sounds good, they almost always have a preference for traditional Fixed Price, Fixed Scope contracts. These contracts, with detailed specifications, costs, and delivery dates, contradict the Agile approach, but they provide clients them with a sense of security and confidence that they will get what they want.
How do you convince them a traditional contract is actually riskier than they think, and persuade them to instead sign a contract that facilities Agile development? This is the most significant challenge facing consultants who want to follow Agile practices. At PromptWorks we use Time & Materials contracts with our clients, and we have signed over 30 of them in the past 2 years. In this talk we’ll discuss:
* What different types of contracts imply about the nature of the relationship with your client, and what it means for it to be a professional relationship of equals. Risk and reward should be shared, and the relationship should feel like a partnership.
* The persuasion and negotiation process for getting your prospective clients to sign a Time & Materials contract. We’ll discuss real-life situations from our experience at PromptWorks.
* PromptWorks’ typical project proposal, Master Service Agreement, and Scope of Work documents. We’ll highlight key aspects of our approach, and things to look out for if you have to use contract documents provided by your client.
WordCamp Nashville: Clean Code for WordPressmtoppa
Slides from my talk at WordCamp Nashville, including notes. Covers why clean code is important, and provides 10 tips to make your code cleaner, for WordPress and beyond
An overview of Agile and Scrum practices, and a comparison of 2 different, real-life Agile adoption experiences in a University setting. Presented at the Wharton Web Conference, July 2011
Object Oriented Programming for WordPress Plugin Developmentmtoppa
An introduction to object oriented programming in PHP. This is applicable to WordPress and other CMS/frameworks as well. Note the last half of the slideshow contains the notes for the slides shown in the first half.
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.
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.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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.
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.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
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.
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.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
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.
2. Why use factories or fixtures?
❖ Factories and fixtures can simplify otherwise repetitive and
complex data setup for tests
❖ Your need for them in unit tests will be light if you do TDD
with loosely-coupled code
❖ But they are vital for unit-“ish” testing if you’re working with
tightly coupled code
❖ e.g. most Rails apps, and the examples in this presentation
❖ They are great for integration testing
3. Comparisons
❖ Tests with no factories or fixtures
❖ Tests with fixtures
❖ Tests with factories, using FactoryGirl
❖ We’ll test the same method in each case, so you can
clearly see the differences
4. Partial data model for our
examples
CandidateCandidate
(politician)(politician)
RaceRaceCampaignCampaign
OfficeOffice
CurrentCurrent
HoldersHolders
Winning Campaign
7. Ok for simple cases
# spec/models/candidate_spec.rb
describe Candidate do
describe "#calculate_completeness" do
it "returns 0 when no fields are filled out" do
toppa = Candidate.new
toppa.calculate_completeness.should eq(0.0)
end
it "returns a ratio of filled-out fields to total fields" do
toppa = Candidate.new
toppa.name = "Mike Toppa"
toppa.facebook_url = "https://facebook/ElJefe"
toppa.wikipedia_url = "http://en.wikipedia.org/wiki/Mike_Toppa"
toppa.calculate_completeness.should eq(0.2) # 3 / 15 = 0.2
end
end
8. Not so good for complex
cases# spec/models/race_spec.rb
describe Race do
describe '#inaugurate!' do
it 'makes Mike Toppa President of the United States' do
toppa = Candidate.create(
name: 'Mike Toppa',
[and all required attributes]
)
president = Office.create(
title: 'President of the United States',
[and all required attributes]
)
presidential_race = Race.create([president + all req attrs])
toppa_campaign = Campaign.create([toppa + presidential_race + all
req attrs])
presidential_race.winning_campaign = toppa_campaign
presidential_race.inaugurate!
president.current_holders.first.should == toppa
end
end
end
10. The fixture files
# spec/fixtures/candidates.yml
mike_toppa:
id: 1
name: Mike Toppa
gender: M
[etc…]
# spec/fixtures/office.yml
president:
id: 1
title: President of the United States
level: N
[etc…]
# spec/fixtures/race.yml
president_race_2012:
id: 1
office: president
election_day: 10/4/2012
[etc…]
# spec/fixtures/campaign.yml
toppa_us_president_campaign_2012:
id: 1
race: president_race_2012
candidate: mike_toppa
fec_id: XYZ
11. The test file
# spec/models/race_spec.rb
describe Race do
describe '#inaugurate!' do
it 'makes Mike Toppa President of the United States' do
toppa = candidates(:mike_toppa)
president = offices(:president)
presidential_race = races(:us_president_race_2012)
toppa_campaign = campaigns(:toppa_us_president_campaign_2012)
presidential_race.winning_campaign = toppa_campaign
presidential_race.inaugurate!
president.current_holders.first.should == toppa
end
end
end
12. Pros
❖ For simple scenarios, re-usable across tests
❖ Easy to generate from live data
❖ Fixture files are easy to read
❖ Tests are fairly fast
❖ Records are inserted based on the fixture files,
bypassing ActiveRecord
13. Cons
❖ Brittle
❖ If you add required fields to a model, you have to update
all its fixtures
❖ Fixture files are an external dependency
❖ Fixtures are organized by model - you need to keep track
of their relationships with test scenarios
❖ Not dynamic - you get the same values every time
❖ (this may or may not be ok)
15. The factory files
# spec/factories/candidates.rb
FactoryGirl.define do
factory :candidate do
name 'Jane Doe'
gender 'F'
[etc…]
# spec/factories/offices.rb
FactoryGirl.define do
factory :office do
title 'Senator'
level 'N'
[etc…]
# spec/factories/races.rb
FactoryGirl.define do
factory :race do
office
election_day '11/04/2014'.to_datetime
[etc…]
# spec/factories/campaigns.rb
FactoryGirl.define do
factory :campaign do
candidate
race
fec_id 'XYZ'
16. The test file
# spec/models/race_spec.rb
describe Race do
describe '#inaugurate!' do
it 'makes Mike Toppa President of the United States' do
toppa = create :candidate, name: 'Mike Toppa'
president = create(
:office,
title: 'President of the United States'
)
presidential_race = create :race, office: president
toppa_campaign = create(
:campaign,
candidate: toppa,
race: presidential_race
)
presidential_race.winning_campaign = toppa_campaign
presidential_race.inaugurate!
president.current_holders.first.should == toppa
end
end
end
18. Randomized values with the
Faker gem
# spec/factories/candidates.rb
FactoryGirl.define do
factory :candidate do
name { Faker::Name.name }
wikipedia_url { Faker::Internet.url }
short_bio { Faker::Lorem.paragraph }
phone { Faker::PhoneNumber.phone_number}
address_1 { Faker::Address.street_address }
address_2 { Faker::Address.secondary_address }
city { Faker::Address.city }
state { Faker::Address.state }
zip { Faker::Address.zip_code }
# and other kinds of randomized values
gender { |n| %w[M F].sample }
sequence(:pvs_id)
azavea_updated_at { Time.at(rand * Time.now.to_i) }
[etc…]
19. Debate on randomized values
❖ Argument for:
❖ Having a wide variety of values, and combinations of values,
in your tests can expose bugs you might otherwise miss
❖ Argument against:
❖ In a test using many different model instances, failures can be
difficult to reproduce and debug
❖ If you’re counting on randomized values to find bugs, your
design process may not be robust
20. Instantiation options
❖ create: saves your object to the database, and saves
any associated objects to the database
❖ build: builds your object in memory only, but still
saves any associated objects to the database
❖ build_stubbed: builds your object in memory only, as
well as any associated objects
21. Instantiation options
❖ Use build_stubbed whenever possible - your tests
will be faster!
❖ You will need to use create or build for integration
testing
❖ …and if you’re stuck with tightly coupled Rails code
22. For frequent scenarios: child
factories
# spec/factories/offices.rb
FactoryGirl.define do
factory :office do
title 'Mayor'
level 'L'
[etc…]
factory :office_president do
status 'A'
title 'President of the United States'
level 'N'
[etc…]
end
end
end
# spec/models/race_spec.rb
describe Race do
describe '#inaugurate!' do
it 'makes Mike Toppa President of the United States' do
president = create :office_president
[etc…]
end
end
end
23. Child factories using other child
factories
# spec/factories/offices.rb
FactoryGirl.define do
factory :office do
area
title 'Mayor'
level 'L'
[etc…]
factory :office_house do
association :area, factory: :congressional_district
status 'A'
level 'N'
type_code 'H'
[etc…]
end
end
end
24. For frequent scenarios: traits
# spec/factories/candidates.rb
FactoryGirl.define do
factory :candidate do
name 'Jane Doe'
gender 'F'
[etc…]
end
trait :with_office_house do
after :create do |candidate|
office = create :office_house
create :current_office_holder, :office => office, :candidate => candidate
end
end
end
# spec/models/race_spec.rb
describe Race do
describe '#inaugurate!' do
it 'makes Mike Toppa President of the United States' do
toppa = create: candidate, :with_office_house
[etc…]
end
end
end
26. Factories address shortcomings of
fixtures
❖ Not as brittle
❖ Factory won’t break if you add a new required field to a model
❖ You don’t need to maintain complex scenarios spread out across
fixture files
❖ Lessened external dependency, more flexibility
❖ You can define the attributes important to the test in the test code
itself
❖ When using build_stubbed your tests will be faster
❖ But fixtures are faster when inserting records
Editor's Notes
Introductions to using tools usually have overly-simple examples. We’re going to use more realistic examples, as you can only get a feel for the differences between factories and fixtures when dealing with more complex scenarios.
The method we’ll examine is for inaugurating a new office holder, and we’ll make me President of the United States
Fast, simple, clear (not hitting the database)
Specifying all the attributes is cumbersome
and when reading the test, distracts from understanding the purpose of the test
Brittle: if add a required field to a model, you have to update all the tests using that model
Hard to reuse
For each model’s fixture file, you can have multiple records defined
updated_at and created_at are set automatically with the current time, or you can specify them
A simple factory file can look a lot like a fixture file…
… but a key difference is that you can override values and specify associations when writing the test