The document discusses Behavior Driven Development (BDD) and using the NBehave framework to write automated tests for BDD. It provides an overview of BDD and NBehave, including how to create BDD themes and stories with scenarios using the NBehave fluent interface. It also discusses stubbing out behavior, executing tests, comparing BDD to test-driven development, and using NBehave to generate documentation from tests.
Coding Naked – Practical steps to moving towards & embracing TDD. We'll overview the normal roadblocks that people typically run in to, and practical ways to overcome those road blocks on your way to embracing Test Driven Development - make coding without tests as uncomfortable as coding naked!
We've all seen the big "macro" features in .NET, this presentation is to give praise to the "Little Wonders" of .NET -- those little items in the framework that make life as a developer that much easier!
Coding Naked – Practical steps to moving towards & embracing TDD. We'll overview the normal roadblocks that people typically run in to, and practical ways to overcome those road blocks on your way to embracing Test Driven Development - make coding without tests as uncomfortable as coding naked!
We've all seen the big "macro" features in .NET, this presentation is to give praise to the "Little Wonders" of .NET -- those little items in the framework that make life as a developer that much easier!
Practices and Tools for Building Better APIsPeter Hendriks
The most important part of well-designed Java code is a nice API. A good API helps developers be more productive and write high-quality code quickly. API design matters for any developer, especially in building larger systems with a team. Modern coding tools such as Eclipse and FindBugs contain advanced tooling to help with designing an API and checking for bad usage. This session demonstrates the latest innovations, including new capabilities in Java 8, by presenting realistic examples based on real experiences in large codebases. They show that just a few Java tricks and simple annotations can make all the difference for building a great API.
Testing Experience - Evolution of Test Automation FrameworksŁukasz Morawski
Implementing automated tests is something that everybody wants to do. If you ask
any tester, test automation is their aim. And while it may be the golden target, very
few testers take pains to assess the required knowledge, under the illusion that a
programming language or expensive tool will suffice to cope with all problems likely
to arise. This is not true. Writing good automated tests is much harder than that,
requiring knowledge this article will make clear
PHPConf.asia 2016 - BDD with Behat for BeginnersAdam Englander
Learn the basics of Behavioral Driven Development (BDD) with Behat to build quality applications. Behat utilizes natural language syntax to define feature test scenarios. In this tutorial you will learn how to write integration tests for web applications. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and Sauce Labs. Learn a better way to perform integration testing today!
Practices and tools for building better API (JFall 2013)Peter Hendriks
Een belangrijke voorwaarde om goede en leesbare Java code te schrijven is om gebruik te maken van een goede API. Een goede API helpt ontwikkelaars om sneller hoogwaardige code te schrijven. Het ontwerp van een API is daarom belangrijk, zeker als er grotere systemen worden gerealiseerd in teamverband. Moderne ontwikkeltools als Eclipse, IntelliJ IDEA en FindBugs helpen met het schrijven van goede API, en het detecteren van slecht gebruik. Deze sessie gaat in op de laatste ontwikkelingen en mogelijkheden, inclusief nieuwe taalmogelijkheden in Java 8. Er wordt hierbij gebruik gemaakt van praktische situaties en concrete codevoorbeelden, gebaseerd op echte ervaringen in grote codebases. Met praktische tips en toegankelijke tools kan al een grote stap gemaakt worden om in de praktijk beter met API ontwerp om te gaan!
[AnDevCon 2016] Mutation Testing for AndroidHazem Saleh
Unit testing coverage is a great way to show us the amount of tested lines and branches of code, but is this really enough? The answer is "no" since unit testing coverage does not really fully measure the efficiency of the unit tests.
This is why there is a need for having techniques that show unit tests efficiency. Mutation testing is one of these powerful techniques. The main idea of mutation testing is to perform byte code modifications (mutations) to original Android app source code and then run app unit tests to check if they are strong enough to fail as a result of these mutations.
This session discusses mutation testing techniques, and demonstrates PIT as a powerful mutation testing tool for Android apps with demos.
This article provides a comparison of the Classic (Cucumber/Gherkin) and Technical (Karate/Gherkin) uses of the BDD style. It turns out that they are very complimentary.
Babble article - Test Automation & Text TranslationDavid Harrison
This article shows a pattern for Test Automation that embraces the testing (validation) of web applications that allow different spoken languages (EN, IT etc). It also presents a novel way of writing BDD statements that improves the Test Automation development and maintenance process.
Learn how to leverage functional concepts of Partial Application and Function Composition for Dependency Injection in C#. This is to achieve Simplicity.
10 Insightful Quotes On Designing A Better Customer ExperienceYuan Wang
In an ever-changing landscape of one digital disruption after another, companies and organisations are looking for new ways to understand their target markets and engage them better. Increasingly they invest in user experience (UX) and customer experience design (CX) capabilities by working with a specialist UX agency or developing their own UX lab. Some UX practitioners are touting leaner and faster ways of developing customer-centric products and services, via methodologies such as guerilla research, rapid prototyping and Agile UX. Others seek innovation and fulfilment by spending more time in research, being more inclusive, and designing for social goods.
Experience is more than just an interface. It is a relationship, as well as a series of touch points between your brand and your customer. Here are our top 10 highlights and takeaways from the recent UX Australia conference to help you transform your customer experience design.
For full article, continue reading at https://yump.com.au/10-ways-supercharge-customer-experience-design/
Practices and Tools for Building Better APIsPeter Hendriks
The most important part of well-designed Java code is a nice API. A good API helps developers be more productive and write high-quality code quickly. API design matters for any developer, especially in building larger systems with a team. Modern coding tools such as Eclipse and FindBugs contain advanced tooling to help with designing an API and checking for bad usage. This session demonstrates the latest innovations, including new capabilities in Java 8, by presenting realistic examples based on real experiences in large codebases. They show that just a few Java tricks and simple annotations can make all the difference for building a great API.
Testing Experience - Evolution of Test Automation FrameworksŁukasz Morawski
Implementing automated tests is something that everybody wants to do. If you ask
any tester, test automation is their aim. And while it may be the golden target, very
few testers take pains to assess the required knowledge, under the illusion that a
programming language or expensive tool will suffice to cope with all problems likely
to arise. This is not true. Writing good automated tests is much harder than that,
requiring knowledge this article will make clear
PHPConf.asia 2016 - BDD with Behat for BeginnersAdam Englander
Learn the basics of Behavioral Driven Development (BDD) with Behat to build quality applications. Behat utilizes natural language syntax to define feature test scenarios. In this tutorial you will learn how to write integration tests for web applications. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and Sauce Labs. Learn a better way to perform integration testing today!
Practices and tools for building better API (JFall 2013)Peter Hendriks
Een belangrijke voorwaarde om goede en leesbare Java code te schrijven is om gebruik te maken van een goede API. Een goede API helpt ontwikkelaars om sneller hoogwaardige code te schrijven. Het ontwerp van een API is daarom belangrijk, zeker als er grotere systemen worden gerealiseerd in teamverband. Moderne ontwikkeltools als Eclipse, IntelliJ IDEA en FindBugs helpen met het schrijven van goede API, en het detecteren van slecht gebruik. Deze sessie gaat in op de laatste ontwikkelingen en mogelijkheden, inclusief nieuwe taalmogelijkheden in Java 8. Er wordt hierbij gebruik gemaakt van praktische situaties en concrete codevoorbeelden, gebaseerd op echte ervaringen in grote codebases. Met praktische tips en toegankelijke tools kan al een grote stap gemaakt worden om in de praktijk beter met API ontwerp om te gaan!
[AnDevCon 2016] Mutation Testing for AndroidHazem Saleh
Unit testing coverage is a great way to show us the amount of tested lines and branches of code, but is this really enough? The answer is "no" since unit testing coverage does not really fully measure the efficiency of the unit tests.
This is why there is a need for having techniques that show unit tests efficiency. Mutation testing is one of these powerful techniques. The main idea of mutation testing is to perform byte code modifications (mutations) to original Android app source code and then run app unit tests to check if they are strong enough to fail as a result of these mutations.
This session discusses mutation testing techniques, and demonstrates PIT as a powerful mutation testing tool for Android apps with demos.
This article provides a comparison of the Classic (Cucumber/Gherkin) and Technical (Karate/Gherkin) uses of the BDD style. It turns out that they are very complimentary.
Babble article - Test Automation & Text TranslationDavid Harrison
This article shows a pattern for Test Automation that embraces the testing (validation) of web applications that allow different spoken languages (EN, IT etc). It also presents a novel way of writing BDD statements that improves the Test Automation development and maintenance process.
Learn how to leverage functional concepts of Partial Application and Function Composition for Dependency Injection in C#. This is to achieve Simplicity.
10 Insightful Quotes On Designing A Better Customer ExperienceYuan Wang
In an ever-changing landscape of one digital disruption after another, companies and organisations are looking for new ways to understand their target markets and engage them better. Increasingly they invest in user experience (UX) and customer experience design (CX) capabilities by working with a specialist UX agency or developing their own UX lab. Some UX practitioners are touting leaner and faster ways of developing customer-centric products and services, via methodologies such as guerilla research, rapid prototyping and Agile UX. Others seek innovation and fulfilment by spending more time in research, being more inclusive, and designing for social goods.
Experience is more than just an interface. It is a relationship, as well as a series of touch points between your brand and your customer. Here are our top 10 highlights and takeaways from the recent UX Australia conference to help you transform your customer experience design.
For full article, continue reading at https://yump.com.au/10-ways-supercharge-customer-experience-design/
http://inarocket.com
Learn BEM fundamentals as fast as possible. What is BEM (Block, element, modifier), BEM syntax, how it works with a real example, etc.
How to Build a Dynamic Social Media PlanPost Planner
Stop guessing and wasting your time on networks and strategies that don’t work!
Join Rebekah Radice and Katie Lance to learn how to optimize your social networks, the best kept secrets for hot content, top time management tools, and much more!
Watch the replay here: bit.ly/socialmedia-plan
Bridging the communication Gap & Continuous Deliverymasoodjan
This is a case study of a top retailer in UK which was following Agile but not all the Agile practices. We will discuss how collaboration between business and engineering team improved using BDD and how it was used to generate automated acceptance tests. We will also discuss how continuous integration was implemented which laid foundation for continuous delivery.
Zend con 2016 bdd with behat for beginnersAdam Englander
Learn the basics of behavioral driven development (BDD) with Behat to build high quality and well documented applications. You'll learn how BDD can help you deliver greater business value more efficiently while accurately documenting the functionality of your application along the way. You'll learn how to utilize Behat as your BDD tool. With Behat, you'll create tests for the features in your application by utilizing a natural language syntax called Gherkin backed by PHP code to execute the steps executed in the feature's scenarios.
This will be a hands-on tutorial. You'll learn how to implement BDD for a web application. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and hosted integration services utilizing Selenium.
Coding Naked – Practical steps to moving towards & embracing TDD. We'll overview the normal roadblocks that people typically run in to, and practical ways to overcome those road blocks on your way to embracing Test Driven Development - make coding without tests as uncomfortable as coding naked!
Code: https://github.com/calebjenkins/Acme.CodingNaked
Presenting at events: https://developingux.com/tag/coding-naked/
Content Strategy and Developer Engagement for DevPortalsAxway
Slides from Write the Docs Ottawa Meet Up at Shopify HQ in Canada, June 24, 2019
We’ll walk through 5 scenarios and concrete ways of reaching a developer community for frictionless and increased engagement.
Bridging the gap between business and technology - Behaviour Driven Developme...marcin_pajdzik
A talk about how software development could be managed by both business interests and technical insights. It presents the best practices and software tools to support the development process in Drupal. Explains why and when a business may want to consider using Behaviour Driven Development and shows the advantages of using BDD from the perspective of both business stakeholders and developers.
Digital Transformation and IT Strategy Toolkit and TemplatesAurelien Domont, MBA
This Digital Transformation and IT Strategy Toolkit was created by ex-McKinsey, Deloitte and BCG Management Consultants, after more than 5,000 hours of work. It is considered the world's best & most comprehensive Digital Transformation and IT Strategy Toolkit. It includes all the Frameworks, Best Practices & Templates required to successfully undertake the Digital Transformation of your organization and define a robust IT Strategy.
Editable Toolkit to help you reuse our content: 700 Powerpoint slides | 35 Excel sheets | 84 minutes of Video training
This PowerPoint presentation is only a small preview of our Toolkits. For more details, visit www.domontconsulting.com
Top mailing list providers in the USA.pptxJeremyPeirce1
Discover the top mailing list providers in the USA, offering targeted lists, segmentation, and analytics to optimize your marketing campaigns and drive engagement.
VAT Registration Outlined In UAE: Benefits and Requirementsuae taxgpt
Vat Registration is a legal obligation for businesses meeting the threshold requirement, helping companies avoid fines and ramifications. Contact now!
https://viralsocialtrends.com/vat-registration-outlined-in-uae/
Company Valuation webinar series - Tuesday, 4 June 2024FelixPerez547899
This session provided an update as to the latest valuation data in the UK and then delved into a discussion on the upcoming election and the impacts on valuation. We finished, as always with a Q&A
Implicitly or explicitly all competing businesses employ a strategy to select a mix
of marketing resources. Formulating such competitive strategies fundamentally
involves recognizing relationships between elements of the marketing mix (e.g.,
price and product quality), as well as assessing competitive and market conditions
(i.e., industry structure in the language of economics).
LA HUG - Video Testimonials with Chynna Morgan - June 2024Lital Barkan
Have you ever heard that user-generated content or video testimonials can take your brand to the next level? We will explore how you can effectively use video testimonials to leverage and boost your sales, content strategy, and increase your CRM data.🤯
We will dig deeper into:
1. How to capture video testimonials that convert from your audience 🎥
2. How to leverage your testimonials to boost your sales 💲
3. How you can capture more CRM data to understand your audience better through video testimonials. 📊
In the Adani-Hindenburg case, what is SEBI investigating.pptxAdani case
Adani SEBI investigation revealed that the latter had sought information from five foreign jurisdictions concerning the holdings of the firm’s foreign portfolio investors (FPIs) in relation to the alleged violations of the MPS Regulations. Nevertheless, the economic interest of the twelve FPIs based in tax haven jurisdictions still needs to be determined. The Adani Group firms classed these FPIs as public shareholders. According to Hindenburg, FPIs were used to get around regulatory standards.
[Note: This is a partial preview. To download this presentation, visit:
https://www.oeconsulting.com.sg/training-presentations]
Sustainability has become an increasingly critical topic as the world recognizes the need to protect our planet and its resources for future generations. Sustainability means meeting our current needs without compromising the ability of future generations to meet theirs. It involves long-term planning and consideration of the consequences of our actions. The goal is to create strategies that ensure the long-term viability of People, Planet, and Profit.
Leading companies such as Nike, Toyota, and Siemens are prioritizing sustainable innovation in their business models, setting an example for others to follow. In this Sustainability training presentation, you will learn key concepts, principles, and practices of sustainability applicable across industries. This training aims to create awareness and educate employees, senior executives, consultants, and other key stakeholders, including investors, policymakers, and supply chain partners, on the importance and implementation of sustainability.
LEARNING OBJECTIVES
1. Develop a comprehensive understanding of the fundamental principles and concepts that form the foundation of sustainability within corporate environments.
2. Explore the sustainability implementation model, focusing on effective measures and reporting strategies to track and communicate sustainability efforts.
3. Identify and define best practices and critical success factors essential for achieving sustainability goals within organizations.
CONTENTS
1. Introduction and Key Concepts of Sustainability
2. Principles and Practices of Sustainability
3. Measures and Reporting in Sustainability
4. Sustainability Implementation & Best Practices
To download the complete presentation, visit: https://www.oeconsulting.com.sg/training-presentations
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challengesHolger Mueller
Holger Mueller of Constellation Research shares his key takeaways from SAP's Sapphire confernece, held in Orlando, June 3rd till 5th 2024, in the Orange Convention Center.
The Influence of Marketing Strategy and Market Competition on Business Perfor...
Behaviour Driven Development V 0.1
1. Behaviour Driven Development With NBehave Linking User Stories and Domain Driven Design to Testing David Ross W: www.pebblesteps.com E: willmation@gmail.com
6. Behavior Driven Development BDD is not: a testing framework or style of testing a method for writing tests BDD is: A formalised template for User Stories Able to create testable User Stories since they are defined in a formal manner Promotes “security” to a first call citizen in the analysis process
8. Allow Portfolio Manager to decide the percentage split between Cash, Property and Stock within the Portfolio Inform the Trader when the Portfolio needs to be rebalanced (ie split in the pie has changed significantly) Allow Operations to standardise Portfolio names Simple Trading application Requirements
9.
10.
11. Test First DevelopmentHow easy is it to use TFD for the following Requirement/Story Value = Units * Market Price Increase the performance of the User Security module by automatically caching the user’s manager Id The system must email the Portfolio manager when the Portfolio needs to be rebalanced Build a web site so that customers can see the performance of the portfolio
12. Test First DevelopmentDo you feel guilty?? Do you write a Failing unit test before every piece of code? Do you write a line of Unit Test code for EVERY line of production code?
13. Behavior Driven How do you write a test when you don’t know where you are going? Maybe we need requirements that are easy to write tests for?
14. RequirementsWhat are they Describes what a system should do but not how it will be done Contract between the implementation team and the analysis team Audience is typically the stake holders and not the development team
18. BDD User StoriesFormal template for User Stories Story Template As a [User/Role]I want [Behaviour]so that [I receive benefit] Example As a “Operations staff member”I want “To create a Portfolio”so that“So that it can be traded”
19. BDD User StoriesFormal template for User Stories Scenario Template Given some initial context (the givens),When an event occurs,then ensure some outcomes. Example Given “New portfolio is called Balanced Fund”When “Portfolio already exists”then “Portfolio can no be created”
20. .NET Library for writing automated BDD style tests Fluent syntax for building up a BDD Style User Stories Test runner that executes the stories and generates a report listing the contents of the stories NBehave What is it?
21. Creating a BDD Theme Collection of related stories [Theme("Portfolio Maintenance")] public class PortfolioMaintenanceStory { [Story] public void portfolio_create_story () { ... } [Story] public void portfolio_delete_story() { ... } } Reference:NBehave.Narrator.Framework.dll
22. Creating a Story Fluent interface to define the story var story = new Story("Create portfolio"); story.AsA(“Operations team member") .IWant("To create a new portfolio on behalf of a portfolio manager") .SoThat("the portfolio manager can configure the portfolio and the front office can trade");
23. Creating a Scenario Fluent interface to define the story story.WithScenario("portfolio does not exist") .Given("portfolio name is $name", "Aggressive Fund") .When("portfolio does not exist in the database") .Then("new portfolio should be created"); story.WithScenario("portfolio already exists") .Given("portfolio name is $name", "Aggressive Fund") .When("portfolio already exists in database") .Then("an error should occur");
24. Executing the test WithNBehave runner or mbUnit Ouch we get an error??? The scenario throws an exception – NBehave isn’t validating any code Use Pending story.WithScenario("portfolio does not exist") .Pending("In progress") .Given("portfolio name is $name", "Aggressive Fund") .When("portfolio does not exist in the database") .Then("new portfolio should be created");
25. Behavior Driven Development Across the Project (Story) Life Cycle Story Pending Scenario Stubbed Behavior Cycle (Red, Green, Refactor) Real Behavior Cycle (Red, Green, Refactor) Acceptance Test
26. Stubbing out the behavior WithNBehave and Rhino.Mocks Steps to generate an API Go through the User story and find all the domain objects Create a class for each domain object but don’t add state Go through the User story and create a find all the services that are required (Repositories etc) Create an interface for each service but don’t add any methods
27. Steps to generate the API continued... Slowly implement the story Add domain object properties as required Add methods signatures as required Use Stubs to explore Inputs/Outputsto the methods Stubbing out the behavior WithNBehave and Mocking
28. Stubbing example Create a new portfolio story stringportfolioName = ""; Portfoliop = null; varportfolioRepository = MockRepository.GenerateStub<IPortfolioRepository>(); varportfolioService = MockRepository.GenerateStub<IPortfolioService>(); s.WithScenario("portfolio already exists") .Given("portfolio name is $name", "Aggressive Fund", n => { portfolioName= n; p = new Portfolio { Name = portfolioName }; portfolioRepository. Stub(x => x.FindPortfolioByName(portfolioName)).Return(p); portfolioService. Stub(X => X.CreatePortfolio(p)).Throw(new ItemExistsException()); })
29. Stubbing example Create a new portfolio story .When("portfolio already exists in database", () => Assert.IsNotNull( portfolioRepository.FindPortfolioByName(portfolioName)) ) .Then("new portfolio create should fail", () => Assert.Throws<ItemExistsException>(() => portfolioService.CreatePortfolio(p)) );
34. Test Driven Development Development/Testing Phases Stubs Domain Model User Stories Behaviour Driven Development GUI Testing Fitness User Acceptance Test Unit & Component Test Mocks Implemented Behaviour System Integration Test No Mocks /Stubs Deployment Verification Test
35. Fixtures to Specifications Loosing Assert from tests. Easier to read? For BAs, yes... Assert.IsTrue(component.IsValid) component.IsValid.ShouldBeTrue() Assert.Contains(s, “hello world”); s.ShouldContains(“hello world”); NBehave contains extension methods for NUnit, mbUnit, xUnit
36. Fixtures to Specifications Is it necessary? [TestFixture] [Context] [Test] [Specification] [Context] public class When_using_tokenized_stories { [Specification] public void should_replace_token_with_value() {} Stories for BDD. Specifications for focussed tests. The word Test has become a dirty word...
37. Stories to documentation NBehave-Console.exe PebbleSteps.NBehave.Stories.dll /o stories.txt Theme: Trade Compliance Story: Pretrade compliance check As a Trader I want verify a trade against the portfolio before I call the broker So that the portfolio does not move out of compliance Scenario: trade will move portfolio out of compliance Given portfolio with name Balanced Fund And asset allocation pie contains segments Cash 0.4, Stock 0.3, Property 0.3 And allocation pie 0.05 And portfolio contains Stock IBM 1, Cash GBP 1, Property SW5 1Hb 1, Stock BHP 1 When market prices are IBM 1, GBP 1, SW5 1Hb 1, BHP 1 Then portfolio value is 4 And portfolio constituents are Stock totalValue:2 percentOfPie:0.5 lower:0.25 upper:0.35, Cash totalValue:1 percentOfPie:0.25 lower:0.35 upper:0.45, Property totalValue:1 percentOfPie:0.25 lower:0.25 upper:0.35, And portfolio is balanced
39. Still in beta… What’s left to do? The parameter regular expression is on [a-z][A-Z] $example0, $example1 – In story output first parameter is printed twice Gallio integration/replacement of current story runner Current story runner text output formatting is poor HTML or a XSLT for current XML output Occassional crash in the parsing engine that links text to delegate parameters
40. More information http://nbehave.org/ http://www.codeplex.com/NBehave http://behaviour-driven.org/ http://dannorth.net/ Code will be placed onto www.pebblesteps.com Questions?
Editor's Notes
Lets dive into TDD and TFD. The famous Red, Green, Green...
Welcome everyone on this cold winter night. This is my first Winter in London so you will have to excuse my scarf and gloves...My name is David Ross and I will be presenting with Chris Roff.Tonight we will be introducing Test Driven Development.
Lets dive into TDD and TFD. The famous Red, Green, Green...
Lets dive into TDD and TFD. The famous Red, Green, Green...