Moving to Dojo 1.7 and the path to 2.0James Thomas
Ā
With the upcoming 1.7 release, The Dojo Toolkit is beginning to introduce major structural and architectural changes in the toolkit, setting the path for their new major 2.0 release due in 2012.
These fundamental changes to the architecture and technologies underpinning the toolkit will dramatically change how we write Dojo applications in the future, bringing with it huge benefits in performance, cross-library compatibility and support for mobile platforms.
In this presentation, I'll be walking through these changes, explaining the benefits and how it'll impact developers. I'll also be providing migration tips to help you start taking advantage of these benefits in your application today, based upon my experience using Dojo 1.7 on the Watson project.
This talk will be technical in nature, aiming at developers and team leads who are using the toolkit in their products or on client engagements.
Moving to Dojo 1.7 and the path to 2.0James Thomas
Ā
With the upcoming 1.7 release, The Dojo Toolkit is beginning to introduce major structural and architectural changes in the toolkit, setting the path for their new major 2.0 release due in 2012.
These fundamental changes to the architecture and technologies underpinning the toolkit will dramatically change how we write Dojo applications in the future, bringing with it huge benefits in performance, cross-library compatibility and support for mobile platforms.
In this presentation, I'll be walking through these changes, explaining the benefits and how it'll impact developers. I'll also be providing migration tips to help you start taking advantage of these benefits in your application today, based upon my experience using Dojo 1.7 on the Watson project.
This talk will be technical in nature, aiming at developers and team leads who are using the toolkit in their products or on client engagements.
MongoDB is the coolest NoSQL DB around, partially because it's simple-by-design philosophy. Without transactions or joins, all the bad vibe of SQL is gone.
In this presentation I demonstrate how to get started with MongoDB in the cloud using Mon
"Puppet at GitHub / ChatOps" from PuppetConf 2012, by Jesse Newland
Video of "Puppet at GitHub": http://bit.ly/WVS3vQ
Learn more about Puppet: http://bit.ly/QQoAP1
Abstract: Ops at GitHub has a unique challenge - keeping up with the rabid pace of features and products that the GitHub team develops. In this talk, we'll focus on tools and techniques we use to rapidly and confidently ship infrastructure changes/features with Puppet using Puppet-Rspec, CI, Puppet-Lint, branch puppet deploys, and Hubot.
Speaker Bio: Jesse Newland does Ops at GitHub. His favorite hobby is SPOF wack-a-mole, followed closely by guitar and piano. Prior to GitHub, Jesse was the CTO at Rails Machine where he ran a large private cloud and managed several hundred production Ruby on Rails applications using Puppet. To the delight and/or chagrin of the Puppet community, Jesse is to blame for Moonshine, the Ruby DSL for Puppet before Puppet had a Ruby DSL.
OSDC 2011 | Advanced Puppet Topics by Ken BarberNETWAYS
Ā
Viele User kennen Puppet wahrscheinlich schon aus Ihrem tƤglichen Arbeitsleben haben aber wahrscheinlich nicht die Zeit es bis auf seine Grenzen auszutesten was dessen FunktionalitƤt betrifft. Dieser Vortrag bietet einen Einblick Ć¼ber Features fĆ¼r fortgeschrittene Anwender mit folgenden Themen, welche durch praktische Beispiele ergƤnzt werden:
UnterstĆ¼tzung vom neuen Ruby DSL zum Schreiben von Manifesten im reinen Ruby
Die extlookup Funktion zum Speichern von Informationen in externen Formaten
Benutzung von dotty output zur Analyse von Ressourcen - AbhƤngigkeiten
Exportierte Ressourcen-AbhƤngigkeiten als Zugang zu generierten Informationen anderer nodes
Externe node classifiers um Puppet in ein externes Tool wie CMDB zu integrieren
Puppetdoc - Generierung und Handhabung zur Dokumentation von Puppet-Inhalten
DPC 2016 - 53 Minutes or Less - Architecting For Failurebenwaine
Ā
An increasing amount of web and business applications are hosted on the cloud. Itās easy: a few clicks, api calls or a script written with your favourite IaaS provider and your application is launched and available to your consumers.
Thatās the problem, itās deceptively easy to make an application available. Itās much harder to make an application reliably available. The much touted āfour ninesā - 99.99% availability means your application must be consistently available for all but 53 minutes a year.
Using AWS as an example this talk covers the choices you must make when hosting an application from the network up. Choices around Regions, Availability Zones, Service Discovery, Deployment and Maintenance all have a major impact on up time.
The practice of āChaos Engineeringā made famous by Netflix is demonstrated as a way to validate the choices youāve made and help prepare you for the worst.
Youāre a Senior Developer, providing value through producing great code, planning features and by mentoring junior team members. You may be considering how to progress your career - if you want to stay technical rather than move into management then the role of Technical Team Lead is worth considering.
The technical team lead is responsible for the technical leadership of one or more teams. Typical responsibilities include:
- Coding: importantly, Technical Team Leads still spend a large portion of their time āin the codeā
- High level planning of product architecture and features
- Making or adjudicating technical decisions that affect the whole project or team
- Taking care of your team (socially, managing growth and through learning and development)
This talk covers what a day in the life of a Tech Lead is like, which skills you should develop and which opportunities within your business to pursue to help you reach your goals. Iāll use examples from my own experience and that of fellow leads to help you make the progression to the Lead role.
MongoDB is the coolest NoSQL DB around, partially because it's simple-by-design philosophy. Without transactions or joins, all the bad vibe of SQL is gone.
In this presentation I demonstrate how to get started with MongoDB in the cloud using Mon
"Puppet at GitHub / ChatOps" from PuppetConf 2012, by Jesse Newland
Video of "Puppet at GitHub": http://bit.ly/WVS3vQ
Learn more about Puppet: http://bit.ly/QQoAP1
Abstract: Ops at GitHub has a unique challenge - keeping up with the rabid pace of features and products that the GitHub team develops. In this talk, we'll focus on tools and techniques we use to rapidly and confidently ship infrastructure changes/features with Puppet using Puppet-Rspec, CI, Puppet-Lint, branch puppet deploys, and Hubot.
Speaker Bio: Jesse Newland does Ops at GitHub. His favorite hobby is SPOF wack-a-mole, followed closely by guitar and piano. Prior to GitHub, Jesse was the CTO at Rails Machine where he ran a large private cloud and managed several hundred production Ruby on Rails applications using Puppet. To the delight and/or chagrin of the Puppet community, Jesse is to blame for Moonshine, the Ruby DSL for Puppet before Puppet had a Ruby DSL.
OSDC 2011 | Advanced Puppet Topics by Ken BarberNETWAYS
Ā
Viele User kennen Puppet wahrscheinlich schon aus Ihrem tƤglichen Arbeitsleben haben aber wahrscheinlich nicht die Zeit es bis auf seine Grenzen auszutesten was dessen FunktionalitƤt betrifft. Dieser Vortrag bietet einen Einblick Ć¼ber Features fĆ¼r fortgeschrittene Anwender mit folgenden Themen, welche durch praktische Beispiele ergƤnzt werden:
UnterstĆ¼tzung vom neuen Ruby DSL zum Schreiben von Manifesten im reinen Ruby
Die extlookup Funktion zum Speichern von Informationen in externen Formaten
Benutzung von dotty output zur Analyse von Ressourcen - AbhƤngigkeiten
Exportierte Ressourcen-AbhƤngigkeiten als Zugang zu generierten Informationen anderer nodes
Externe node classifiers um Puppet in ein externes Tool wie CMDB zu integrieren
Puppetdoc - Generierung und Handhabung zur Dokumentation von Puppet-Inhalten
DPC 2016 - 53 Minutes or Less - Architecting For Failurebenwaine
Ā
An increasing amount of web and business applications are hosted on the cloud. Itās easy: a few clicks, api calls or a script written with your favourite IaaS provider and your application is launched and available to your consumers.
Thatās the problem, itās deceptively easy to make an application available. Itās much harder to make an application reliably available. The much touted āfour ninesā - 99.99% availability means your application must be consistently available for all but 53 minutes a year.
Using AWS as an example this talk covers the choices you must make when hosting an application from the network up. Choices around Regions, Availability Zones, Service Discovery, Deployment and Maintenance all have a major impact on up time.
The practice of āChaos Engineeringā made famous by Netflix is demonstrated as a way to validate the choices youāve made and help prepare you for the worst.
Youāre a Senior Developer, providing value through producing great code, planning features and by mentoring junior team members. You may be considering how to progress your career - if you want to stay technical rather than move into management then the role of Technical Team Lead is worth considering.
The technical team lead is responsible for the technical leadership of one or more teams. Typical responsibilities include:
- Coding: importantly, Technical Team Leads still spend a large portion of their time āin the codeā
- High level planning of product architecture and features
- Making or adjudicating technical decisions that affect the whole project or team
- Taking care of your team (socially, managing growth and through learning and development)
This talk covers what a day in the life of a Tech Lead is like, which skills you should develop and which opportunities within your business to pursue to help you reach your goals. Iāll use examples from my own experience and that of fellow leads to help you make the progression to the Lead role.
The slides from my talk at PHPUK2015.
The comapniuon code can be found at: https://github.com/LoveSoftware/application-logging-with-logstash
If you saw it, please rate it!
https://joind.in/talk/view/13369
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.
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.
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.
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/
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.
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.
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.
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
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.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Ā
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Ā
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilotā¢UiPathCommunity
Ā
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalitĆ di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
š Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
šØāš«šØāš» Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
Leading Change strategies and insights for effective change management pdf 1.pdf
Ā
Behat dpc12
1. ACCEPTANCE &
INTEGRATION TESTING WITH
BEHAT
DPC 2012 - Ben Waine - @bwaine
https://joind.in/6218
Thursday, 7 June 12
2. The Environment
Oracle Open Box
Ubuntu 12.12
Behat + Examples Installed
1. Get Open Box and the VHD from the provided USB
stick.
2. Install Open Box
3. Load the VHD
Thursday, 7 June 12
4. BEN WAINE
ā¢ Freelance Software Engineer
ā¢Worked with Behat at Sky and
IPC
ā¢DPC was the second
conference I ever attended in
2009. Glad to be back!
ā¢Twitter: @bwaine
Thursday, 7 June 12
5. Todays Roadmap
1. Introduction to BDD and Behat
2. How to Write Behat Tests
3. Mink - UI Testing With Behat
4. Mink - Javascript Testing
5. Phabric - Fixture Building
6. Behat - Common Contexts
7. Case Study - Behat In The Wild
8. Tips From The Trenches
9. Questions
Thursday, 7 June 12
6. Todays Roadmap
1. Introduction to BDD and Behat
2. How to Write Behat Tests
3. Mink - UI Testing With Behat
4. Mink - Javascript Testing
5. Phabric - Fixture Building
6. Behat - Common Contexts
7. Case Study - Behat In The Wild
8. Tips From The Trenches
9. Questions
Thursday, 7 June 12
10. Dan North - Whats In A Story?
http://dannorth.net/whats-in-a-story/
Thursday, 7 June 12
11. Dan Northās Recipe For A Story
Title (one line describing the story)
Narrative:
As a [role]
I want [feature]
So that [benefit]
Acceptance Criteria: (presented as Scenarios)
Scenario 1: Title
Given [context]
And [some more context]...
When [event]
Then [outcome]
And [another outcome]...
Thursday, 7 June 12
12. Behat
āA open source behaviour driven development [testing]
frameworkā
āInspired by Rubyās Cucumber projectā
Thursday, 7 June 12
13. Behat - What Can We Do With It?
Test Anything!
Web Applications Shell Scripts Your
developers
relationship
Web Services PHP Scripts skills
Thursday, 7 June 12
14. Where Does Behat Sit In The BDD
Ecosystem?
PHPSpec - Class Level BDD
Behat - Service / UI Level Testing
Thursday, 7 June 12
15. BDD == TDD??
http://dannorth.net/2012/05/31/bdd-is-like-tdd-if/
Thursday, 7 June 12
16. Behat - Installation So Easy Iām Not
Even Covering It.
Composer Pear
Phar Github
Thursday, 7 June 12
17. My Friend Shashi -
http://lestbddphp.wordpress.com/2012/05/07/enjoy-
minkextension-for-behat/
Great article on setting up Behat 2.4 (latest version)
Thursday, 7 June 12
18. Testing Unixās famous ālsā command
An Example From behat.org
1. In the VM open Sublime Text 2
2. cd /home/tuser/tutorial/01-LinuxCommands
Thursday, 7 June 12
19. Testing Unixās famous ālsā command
What does a behat test consist of?
1. Run: bin/behat features/ls.feature
2. Open features/ls.feature
3. Open features/bootstrap/FeatureContext.php
Thursday, 7 June 12
21. Testing Unixās famous ālsā command
features/ls.feature
Feature: ls
In order to see the directory structure
As a UNIX user
I need to be able to list the current directory's contents
Scenario: List 2 files in a directory
Given I am in a directory "test"
And I have a file named "foo"
And I have a file named "bar"
When I run "ls"
Then I should get:
"""
bar
foo
"""
Source: http://docs.behat.org/quick_intro.html
Thursday, 7 June 12
22. Dan Northās Recipe For A Story
Title (one line describing the story)
Narrative:
As a [role]
I want [feature]
So that [benefit]
Acceptance Criteria: (presented as Scenarios)
Scenario 1: Title
Given [context]
And [some more context]...
When [event]
Then [outcome]
And [another outcome]...
Thursday, 7 June 12
24. features/bootstrap/FeatureContext.php
<?php
use BehatBehatContextBehatContext,
BehatBehatExceptionPendingException;
use BehatGherkinNodePyStringNode,
BehatGherkinNodeTableNode;
class FeatureContext extends BehatContext
{
private $output;
/** @Given /^I am in a directory "([^"]*)"$/ */
public function iAmInADirectory($dir)
{
if (!file_exists($dir)) {
mkdir($dir);
}
chdir($dir);
}
Source: http://docs.behat.org/quick_intro.html 1/2
Thursday, 7 June 12
25. features/bootstrap/FeatureContext.php
/** @Given /^I have a file named "([^"]*)"$/ */
public function iHaveAFileNamed($file)
{
touch($file);
}
/** @When /^I run "([^"]*)"$/ */
public function iRun($command)
{
exec($command, $output);
$this->output = trim(implode("n", $output));
}
/** @Then /^I should get:$/ */
public function iShouldGet(PyStringNode $string)
{
if ((string) $string !== $this->output) {
throw new Exception(
"Actual output is:n" . $this->output
);
}
}
2/2
Thursday, 7 June 12
26. Testing Unixās famous ālsā command
What does a behat test consist of?
Feature Files & Feature Contexts
Which contain:
Features / Stories and Steps
Thursday, 7 June 12
29. Exercise One
Write a php script which takes the users name as itās only
argument.
When executed it should write āHelloā to the screen.
eg. Hello Ben
If no name is given then it should output
āHello Strangerā
Thursday, 7 June 12
30. The BDD approach - write
scenarios that deļ¬ne behaviour
ļ¬rst.
Thursday, 7 June 12
31. Setting Up A Project
1. cd /home/tuser/tutorial/02-HelloScript
2. run bin/behat --init
Thursday, 7 June 12
33. The BDD Workļ¬ow
1. Create features/hello.feature
2. Write a scenario to test the āhelloā script
3. Run bin/behat features/hello.feature
4. Copy the steps into features/bootstrap/
FeatureContext.php
Thursday, 7 June 12
34. Clues
1. The Command is in another directory. Change to that
directory in the given step?
2. When is an event or action
3. Then tests the event
Thursday, 7 June 12
35. The BDD Workļ¬ow
1. Create features/hello.feature
2. Write a scenario to test the āhelloā script
3. Run bin/behat features/hello.feature
4. Copy the steps into features/bootstrap/
FeatureContext.php
Thursday, 7 June 12
36. The BDD Workļ¬ow
5. Complete the methods in the FeatureContext.php ļ¬le.
6. Run bin/behat features/hello.feature
7. FAIL
8. Write the Hello Script.
9. PASS
Thursday, 7 June 12
37. Dan North Revisited:
Making a Good Story
The title should describe an activity
The narrative should include a role, a feature and a beneļ¬t
The scenario title should say whatās different
The scenario should be described in terms of Givens, Events
and Outcomes
The givens should deļ¬ne all of, and no more than, the
required context
The event should describe the feature
The story should be small enough to ļ¬t in an iteration
Thursday, 7 June 12
41. Mink
Goutte Web Driver Zombie Js
Selenium Sahi
Thursday, 7 June 12
42. Mink - A UI Testing Tool Abstraction
Headless Browser (Goutte)
Makes HTTP calls and inspect the output
Fast and lightweight
Canāt test Javascipt / AJAX
Browser Controller (Sahi / Selenium / WebDriver)
Control a real browser
Simulates user interaction with a web site
Can test javascript / AJAX
Slower than headless browser
Thursday, 7 June 12
43. Included With Mink
A new context class to use
Bundled steps to test UI elements with. Eg:
Given I am on "/wiki/Main_Page"
When I fill in "search" with "Behavior Driven Development"
And I press "searchButton"
Then I should see "agile software development"
Source: http://behat.org/cookbook/behat_and_mink.html
Thursday, 7 June 12
44. Using MinkContext
If you have custom steps or an existing FeatureContext
<?php
class FeatureContext extends BehatContext
{
public function __construct(array $parameters)
{
$this->useContext(
'mink',
new BehatMinkExtensionContextMinkContext
);
}
}
Thursday, 7 June 12
45. Exercise Two:
Hello World On The Web
Thursday, 7 June 12
46. Exercise Two
Write a simple web page with a form.
The form should have a single ļ¬eld ānameā.
When typing in a name and pressing submit, the page
should reload and print the message āHello _name_ā
eg. Hello Ben
On the page with the greeting a link with the text āagainā
should take you back to the original form page.
Thursday, 7 June 12
47. Setting Up A Project
1. cd /home/tuser/tutorial/03-HelloPage
2. run bin/behat --init
3. Web page goes in the āpublicā directory
4. Add behat.yml to 03-HelloPage
See example misc/behat.yml
Thursday, 7 June 12
48. Using MinkContext
If you have custom steps or an existing FeatureContext
<?php
class FeatureContext extends BehatContext
{
public function __construct(array $parameters)
{
$this->useContext(
'mink',
new BehatMinkExtensionContextMinkContext
);
}
}
Thursday, 7 June 12
49. Using MinkContext
New in 2.4 - If Mink extension is installed and you have no
custom steps. Itās automatic!
Great for testers.
Thursday, 7 June 12
50. The BDD Workļ¬ow
1. Create features/hello.feature
2. Write a scenario to test the āhelloā page
Use bundled Mink Steps
3. Use MinkContext
4. Run bin/behat features/hello.feature
Wow no new steps required!
Thursday, 7 June 12
51. The BDD Workļ¬ow
5. FAIL
6. Write web page
7. PASS
Thursday, 7 June 12
52. Debugging Steps
Then /^print last response$/
Then /^show last response$/
āAnd I Waitā - implement yourself with fgets
Lets try this on the test we have just written.
Thursday, 7 June 12
54. Tagging Tests For Javascript Testing
Use tags to tell Mink to use a full browser rather than
Goutte.
@javascript
Scenario: As an attendee
I should be able to tag scenarios after reading this
Given I am testing javascript
When I read this slide
Then I'll tag scenarios with @javascript LIKE A BOSS
Thursday, 7 June 12
55. Steps To Use For Testing JS
Custom steps which manipulate the mink session.
/**
* @Then /^I wait for the suggestion box to appear$/
*/
public function iWaitForTheSuggestionBoxToAppear()
{
$this->getSubcontext('mink')
->getSession()
->wait(1000, "$('.name').children().length > 0");
}
Thursday, 7 June 12
56. Steps To Use For Testing JS
See: http://mink.behat.org for tips on what we can do.
Thursday, 7 June 12
57. Exercise Three:
Hello World On The Web
With Javascript
Thursday, 7 June 12
58. ExerciseThree
Extend your solution from the previous exercise.
Use the supplied jQuery plugin to make your form suggest
names as the user enters letters into the name ļ¬eld.
See hint.php for some clues.
Thursday, 7 June 12
59. The BDD Workļ¬ow
1. Open features/hello.feature
2. Write additional scenarios to test the āautocompleteā
functionality
3. Run behat features/hello.feature
4. Add steps to FeatureContext.php and complete
5. Run behat features/hello.feature
Thursday, 7 June 12
60. The BDD Workļ¬ow
6. FAIL
7. Write additional functionality
8. PASS
Thursday, 7 June 12
67. Phabric Features
Represent Table Data In A Gherkin Table Node
Scenario: Basic Data Insert
Given The following conference exists
| name | description | cdate |
| Symfony Day | Anual Symfony conference in Paris | 2011-10-21 09:00:00 |
| Zend Con | Zend Conference in San Fran | 2011-10-17 09:00:00 |
When I am on "/index.php"
And I wait for 10 seconds
Then I should see "Zend Con" in the ".conf" element
Thursday, 7 June 12
68. Phabric Features
Map Business Friendly Names To Column Headers
Scenario: Change Column Names
Given The following conference exists
| Conf Name | Conf Description | Conf Date |
| Symfony Day | Annual Symfony conference in Paris| 2011-10-21 09:00:00 |
| Zend Con | Zend Conference in San Fran | 2011-10-17 09:00:00 |
When I am on "/index.php"
And I wait for 10 seconds
Then I should see "Zend Con" in the ".conf" element
Thursday, 7 June 12
69. Phabric Features
Default Values Allow You To Omit Columns
Scenario: Use a default value - use default value for conference description.
Given The following conference exists
| Conf Name | Conf Date |
| Symfony Day | 21/10/2011 09:00 |
| Zend Con | 17/10/2011 09:00 |
When I am on "/index.php"
And I wait for 10 seconds
Then I should see "Zend Con" in the ".conf" element
Thursday, 7 June 12
70. Phabric Features
Transformations Allow Data To Be Reformatted Before Insert
or Update to the Database.
Scenario: Change Column Data - Reformat date
Given The following conference exists
| Conf Name | Conf Description | Conf Date |
| Symfony Day | Anual Symfony conference in Paris | 21/10/2011 09:00 |
| Zend Con | Zend Conference in San Fran | 17/10/2011 09:00 |
When I am on "/index.php"
And I wait for 10 seconds
Then I should see "Zend Con" in the ".conf" element
Thursday, 7 June 12
71. Phabric Features
Relationships Supported
Powered By Doctrine DBAL - Works On Most Popular
Databases
Interfaces Provided To Integrate Your Own Data Providers
Easy Conļ¬guration
State is set up in the test - clear visibility of what is being
tested
Thursday, 7 June 12
77. What: Out the box solutions to common problems.
Where: https://github.com/Behat/CommonContexts
Thursday, 7 June 12
78. My Favourite & Example
WebApi Context - Used to test web services.
Thursday, 7 June 12
79. Using A Common Context
Ensure the common contexts are installed.
/**
* Feature context.
*/
class FeatureContext extends MinkContext
{
public function __construct($kernel)
{
$this->useContext('symfony_extra',
new BehatCommonContextsSymfonyMailerContext($kernel)
);
parent::__construct($kernel);
}
}
Source: https://github.com/Behat/CommonContexts
Thursday, 7 June 12
80. Exercise Five
Use the new WebApi steps to spec a simple API.
Use the provided ļ¬les to create a āfakeā that satisļ¬es the
scenarios.
See the misc folder for a WebApi cheat sheet.
Thursday, 7 June 12
82. Sky Bet
Skybet.com - A large sports betting site in the UK
Technology: PHP, MySQL, nodejs
Testing: PHPUnit, Behat
Thursday, 7 June 12
83. Problems
1) Deļ¬nition of Done
2) Regression
3) Testing The Full Stack
Thursday, 7 June 12
84. Solution
Build a workļ¬ow that lets people work together,
helps ļ¬ght regression and provides visibility of
progress to the business.
Behat
Thursday, 7 June 12
87. Ninja,
Cat Like,
Good Looking,
Charismatic,
Hard Working,
Modest
Developers.
Thursday, 7 June 12
88. Solution
Business Analysts take business requirements write stories.
Testers ātranslateā into Gherkin.
Developers write steps and build the feature.
Thursday, 7 June 12
89. Solution
A story is ādoneā when the Behat tests pass and a ļ¬nal check
by the BA is complete.
Tests are run on every commit to master branch.
Behat tests test the full stack - provide conļ¬dence āall the
moving parts are workingā.
Thursday, 7 June 12
90. Tips From The Trenches
Make sure you have your testing mix correct.
Thursday, 7 June 12
93. Tips From The Trenches
Keep you Gherkin dialect lean and mean.
Make someone in charge of the Gherkin.
Thursday, 7 June 12
94. Tips From The Trenches
Consider writing abstractions over the provided Behat /
Mink Steps to make your feature ļ¬les less brittle.
Thursday, 7 June 12
95. Time Left / Take Home Exercise
Thursday, 7 June 12
96. Point Behat At Your Own Website
And Write Some Scenarios.
1) cd /home/tuser/tutorial/06-takehome
2) Alter behat.yml to point at your live site
3) Write scenarios that test your site
Thursday, 7 June 12
97. TLDR - Behat Is Super Cool. Go
Forth And Use It.
Questions?
Thursday, 7 June 12
98. Thanks :-)
Please Rate My Tutorial: https://joind.in/6218
Websites & Sources
http://behat.org
http://mink.behat.org
http://dannorth.net/whats-in-a-story/
http://github.com/benwaine/BehatTutorial
http://ben-waine.co.uk/blog
Thursday, 7 June 12