Netflix uses Conductor, an open source microservices orchestrator, to manage complex content processing workflows involving ingestion, encoding, localization, and delivery. Conductor provides visibility, control, and reuse of tasks through a task queuing system and workflow definitions. It has scaled to process millions of workflow executions across Netflix's content platform using a stateless architecture with Dynomite for storage and Dyno-Queues for task distribution.
Testing - How Vital and How Easy to useUma Ghotikar
The document discusses various testing concepts like unit testing, TestBox, MockBox, behavior driven development (BDD), and load testing using JMeter. It provides definitions and examples of each concept. For unit testing, it explains what it is, why it is important, and examples using TestBox. For mocking, it discusses the MockBox framework and examples. For BDD, it covers the given-when-then syntax and lifecycle methods. It also includes a demo of load testing a REST API using JMeter.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making it fail, making it pass, and refactoring code. Using TDD generates an automated test suite that gives developers confidence to refactor and change code quickly. Unit tests validate individual code units in isolation while feature tests validate code as a user would interact with it. Code coverage metrics help ensure tests cover enough of the codebase.
DevOps aims to bridge the gap between development and operations by fostering collaboration. Key aspects of DevOps include establishing a collaborative culture through open communication and engagement between teams, automating processes like builds, deployments, testing and system configuration, and implementing monitoring of applications and infrastructure through metrics and logging to ensure stability and enable issues to be quickly identified and addressed. Tools like Puppet, Munin, Graphite, Logstash and Graylog can help operationalize these aspects of DevOps.
This document provides information about an expert in Agile software development practices named Stephen Ritchie. It summarizes his experience, certifications, and areas of focus including Agile coaching. The document recommends practices for implementing Agile such as version control, continuous integration, automated testing, and deployment automation. It lists tools that can be used for each practice and recommends an order for implementation. The document also discusses benefits of practices like reduced defect rates and faster deployments.
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It introduces Codeception and the different types of testing including unit, functional, and acceptance testing. It then provides examples of writing functional tests for a login feature and acceptance tests using PhantomJS to test interactions on a real browser. Screenshots are included when acceptance tests fail to help debug issues.
Acceptance & Functional Testing with Codeception - Devspace 2015 Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It begins with an introduction to the speaker and defines unit, functional, and acceptance testing. It then demonstrates how to install and configure Codeception, generate tests for a sample Laravel application, and run different types of tests including functional API tests and acceptance tests using PhantomJS. Challenges with acceptance tests like speed and pinpointing failures are also addressed. Resources for further learning about Codeception and testing are provided.
Netflix uses Conductor, an open source microservices orchestrator, to manage complex content processing workflows involving ingestion, encoding, localization, and delivery. Conductor provides visibility, control, and reuse of tasks through a task queuing system and workflow definitions. It has scaled to process millions of workflow executions across Netflix's content platform using a stateless architecture with Dynomite for storage and Dyno-Queues for task distribution.
Testing - How Vital and How Easy to useUma Ghotikar
The document discusses various testing concepts like unit testing, TestBox, MockBox, behavior driven development (BDD), and load testing using JMeter. It provides definitions and examples of each concept. For unit testing, it explains what it is, why it is important, and examples using TestBox. For mocking, it discusses the MockBox framework and examples. For BDD, it covers the given-when-then syntax and lifecycle methods. It also includes a demo of load testing a REST API using JMeter.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making it fail, making it pass, and refactoring code. Using TDD generates an automated test suite that gives developers confidence to refactor and change code quickly. Unit tests validate individual code units in isolation while feature tests validate code as a user would interact with it. Code coverage metrics help ensure tests cover enough of the codebase.
DevOps aims to bridge the gap between development and operations by fostering collaboration. Key aspects of DevOps include establishing a collaborative culture through open communication and engagement between teams, automating processes like builds, deployments, testing and system configuration, and implementing monitoring of applications and infrastructure through metrics and logging to ensure stability and enable issues to be quickly identified and addressed. Tools like Puppet, Munin, Graphite, Logstash and Graylog can help operationalize these aspects of DevOps.
This document provides information about an expert in Agile software development practices named Stephen Ritchie. It summarizes his experience, certifications, and areas of focus including Agile coaching. The document recommends practices for implementing Agile such as version control, continuous integration, automated testing, and deployment automation. It lists tools that can be used for each practice and recommends an order for implementation. The document also discusses benefits of practices like reduced defect rates and faster deployments.
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It introduces Codeception and the different types of testing including unit, functional, and acceptance testing. It then provides examples of writing functional tests for a login feature and acceptance tests using PhantomJS to test interactions on a real browser. Screenshots are included when acceptance tests fail to help debug issues.
Acceptance & Functional Testing with Codeception - Devspace 2015 Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It begins with an introduction to the speaker and defines unit, functional, and acceptance testing. It then demonstrates how to install and configure Codeception, generate tests for a sample Laravel application, and run different types of tests including functional API tests and acceptance tests using PhantomJS. Challenges with acceptance tests like speed and pinpointing failures are also addressed. Resources for further learning about Codeception and testing are provided.
This document provides information on Jenkins, including:
- Jenkins is an open source automation tool that allows continuous integration and delivery of software projects. It builds, tests, and prepares code changes for release.
- Key benefits of Jenkins include speeding up the software development process through automation, integrating with many testing and deployment technologies, and making it easier for developers to integrate changes and users to obtain fresh builds.
- Jenkins uses plugins to integrate various DevOps stages like build, test, package, deploy, etc. It supports pipelines to automate development tasks.
You've heard about Continuous Integration and Continuous Deilvery but how do you get code from your machine to production in a rapid, repeatable manner? Let a build pipeline do the work for you! Sam Brown will walk through the how, the when and the why of the various aspects of a Contiuous Delivery build pipeline and how you can get started tomorrow implementing changes to realize build automation. This talk will start with an example pipeline and go into depth with each section detailing the pros and cons of different steps and why you should include them in your build process.
Automated Developer Testing: Achievements and ChallengesTao Xie
Automated Developer Testing: Achievements and Challenges discusses automation in developer testing, including challenges such as generating better test inputs and oracles faster. Parameterized unit testing is proposed as a way to specify tests at a higher level of abstraction and allow test generation tools to automatically generate test inputs. Dynamic symbolic execution, as implemented in tools like Pex, is presented as an approach to automatically generating test inputs to achieve high code coverage by modeling tests as constraints and solving them.
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
This document provides an agenda and overview for a workshop on testing, automation, and reporting with Postman. The workshop will cover testing concepts and practical exercises, advanced testing techniques like dynamic variables and Chai assertions, automation with the Collection Runner and Newman, and creating reports. Speakers Trent McCann and Danny Dainton will present on prerequisites, testing modules, breaks, automation, and workshop wrap-up.
Getting Started with Test-Driven Development at PHPtek 2023Scott Keck-Warren
Scott Keck-Warren gives a presentation on getting started with test-driven development (TDD). He discusses what TDD is, the five phases of the TDD process, and why it is beneficial. He also covers how to use a testing framework like PHPUnit, what code coverage is, and some common pitfalls to avoid like neglecting to run tests or creating tests that are too large or trivial. The presentation aims to provide developers with the essential information needed to understand and implement TDD.
AfterTest Madrid March 2016 - DevOps and Testing IntroductionPeter Marshall
This document discusses continuous testing in the context of DevOps. It defines continuous testing as including automated testing, managing production and non-production environments, application monitoring, and evaluating business objectives. Continuous testing relies on DevOps activities like automating builds, infrastructure, deployments, and monitoring. It advocates for smaller, more frequent deliveries through practices like test automation, infrastructure as code, and treating testing as integral to the software delivery process. The conclusion emphasizes automation, configuration management, and obtaining frequent feedback to enable continuous testing.
Agile Engineering Best Practices by Richard ChengExcella
By Richard Cheng, Certified Scrum Trainer and Training Business Unit Lead, Excella Consulting
21st Century IT development requires building quality into our development practices yet many software teams fail to implement technical practices that are necessary for long term success. Practices like automated builds, automated tests, automated deployments, continuous integration, and continuous delivery are now considered essential for the success of any software development project. Without these practices, the quality of software goes downhill and teams can no longer sustain their initial high levels of productivity.
However, understanding and implementing the practices can seem daunting. This session presents an easy to understand roadmap for implementing engineering best practices for non-technical audiences.
Though this topic is about engineering best practices, attendees do not have to be technical to get value from this session. The session gives a non-technical look at a technical concept and is great for any person in the organization managing, working with, or working on IT teams/programs.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making the test fail, writing code to pass the test, and refactoring code. Automated tests provide confidence to refactor and change code without breaking functionality. Unit tests isolate and test individual code units while feature tests simulate how a user interacts with the application. Code coverage metrics help ensure tests cover enough of the codebase, with higher coverage percentages generally indicating better test quality.
Imagine we had the power to understand the code before its complied or embedding a backdoor or even stealing legitimate certificates of a well known vendor and using them to sign malware?
Join me in the journey of exploring security issues that tend to happen during Build Time in typical enterprise environments.
Automation testing involves developing and executing tests that can run unattended, comparing actual and expected results. The major objectives of automation testing are to speed up testing, reduce costs and time, and increase quality. Automation testing is faster than manual testing and can test more scenarios. However, high upfront investment is required for tools and training. Both manual and automation testing are needed as automation does not cover all test cases. Popular automation testing tools include Selenium, QTP, and TestComplete.
The document outlines an upcoming programming workshop that will cover various JetBrains IDEs like PyCharm, IntelliJ IDEA, and PhpStorm. It then discusses Test Driven Development (TDD), including what TDD is, the development cycle used in TDD, and benefits like encouraging simple designs and confidence. Different types of software tests are also listed like unit tests, integration tests, acceptance tests, and others. Specific testing techniques like unit testing, integration testing using bottom-up and top-down approaches, and acceptance testing are then explained at a high level. Finally, some important notes on testing like trusting tests and prioritizing maintainability are provided.
This document proposes an automated test architecture for the UI Builder application using REST API testing, UI testing, and integration testing. It recommends the Rest Assured library for API testing due to its ability to integrate with Jenkins and remove the need for manual HTTP calls. Protractor is proposed for UI testing as it allows testing Angular applications in JavaScript and integrates well with Selenium. Both test frameworks would be set up with their own Git repositories linked to Jenkins jobs. Integration testing would link the API and UI test repos. The test automation aims to provide faster feedback and reduce regressions as the application grows.
Software Test automation tools are available under several categories such as commercial, free software, open source software and etc. In this paper Open Source Software Testing Tools will be discussed.
Open source software test automation tools may be practical alternatives to popular closed-source commercial applications and some open source tools offers features or performance benefits that exceed their commercial counterparts. The source code is openly published for use and/or modification from its original design, free of charge. And these are usually available under a license defined by the Open Source Initiative.
Writing better tests for your java script appJakeGinnivan
This document discusses writing better tests for JavaScript apps. It notes that good tests are fast, comprehensive, reliable, and maintainable, enabling refactoring with increased confidence. Typical problems with testing include tests being slow to write and run, intermittently failing, or not failing at all. The document recommends unit tests and higher level unit tests to test modules and their interactions. It provides tips for different testing contexts like single-page apps and Node web services. Defensive testing patterns like dependency injection and Arrange-Act-Assert are also covered.
The Continuous delivery Value @ codemotion 2014David Funaro
System Crash, failure data migration, partial update: issues that no one would ever want to meet during the deploy and ... hoping for the best is not enough.
The deployment activity is important as those that precede it. The Continuous Delivery will give you low risk, cheap, fast, predictable delivery and ... soundly.
This document discusses the benefits of continuous delivery and deployment. It notes that without proper processes, deployments can fail due to crashes, failed migrations, or interrupted updates when introducing new features. Continuous delivery uses tools and methodologies to make releases low risk, fast, predictable, and ensure smooth deployments. The document outlines some of the key aspects of continuous delivery like source code management, continuous integration, automated deployments, monitoring, and root cause analysis. It discusses how these practices can help make software releases cheaper, more frequent, rapid, and reduce stress and errors compared to traditional release processes.
Testing and DevOps Culture: Lessons LearnedLB Denker
This document discusses the speaker's background and experiences with software engineering practices. It covers his education in computational mathematics and computer science, past roles at Universal Instruments developing machine software and at Google and Etsy implementing DevOps practices. Key topics covered include the benefits of continuous integration, deployment and delivery; the importance of testing including test-driven development; and embracing interdependence between developers and other IT roles. Best practices are noted to be situational and relationships must be respected.
The document discusses DevOps practices at Amazon Web Services (AWS). It begins with an overview of DevOps and how it has helped Amazon deploy code faster and more frequently. It then discusses specific DevOps tools and services offered by AWS, including AWS CodeCommit for source control, AWS CodeBuild for builds, AWS CodeDeploy for deployments, AWS CodePipeline for release orchestration, and AWS CodeStar for application development. The document explains how these services work together to enable continuous integration and continuous delivery workflows. It also discusses how AWS has implemented DevOps practices like infrastructure as code and monitoring within its own systems to deploy millions of times per day while maintaining quality, security and reliability.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
Mais conteúdo relacionado
Semelhante a Advanced Test Driven-Development @ php[tek] 2024
This document provides information on Jenkins, including:
- Jenkins is an open source automation tool that allows continuous integration and delivery of software projects. It builds, tests, and prepares code changes for release.
- Key benefits of Jenkins include speeding up the software development process through automation, integrating with many testing and deployment technologies, and making it easier for developers to integrate changes and users to obtain fresh builds.
- Jenkins uses plugins to integrate various DevOps stages like build, test, package, deploy, etc. It supports pipelines to automate development tasks.
You've heard about Continuous Integration and Continuous Deilvery but how do you get code from your machine to production in a rapid, repeatable manner? Let a build pipeline do the work for you! Sam Brown will walk through the how, the when and the why of the various aspects of a Contiuous Delivery build pipeline and how you can get started tomorrow implementing changes to realize build automation. This talk will start with an example pipeline and go into depth with each section detailing the pros and cons of different steps and why you should include them in your build process.
Automated Developer Testing: Achievements and ChallengesTao Xie
Automated Developer Testing: Achievements and Challenges discusses automation in developer testing, including challenges such as generating better test inputs and oracles faster. Parameterized unit testing is proposed as a way to specify tests at a higher level of abstraction and allow test generation tools to automatically generate test inputs. Dynamic symbolic execution, as implemented in tools like Pex, is presented as an approach to automatically generating test inputs to achieve high code coverage by modeling tests as constraints and solving them.
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
This document provides an agenda and overview for a workshop on testing, automation, and reporting with Postman. The workshop will cover testing concepts and practical exercises, advanced testing techniques like dynamic variables and Chai assertions, automation with the Collection Runner and Newman, and creating reports. Speakers Trent McCann and Danny Dainton will present on prerequisites, testing modules, breaks, automation, and workshop wrap-up.
Getting Started with Test-Driven Development at PHPtek 2023Scott Keck-Warren
Scott Keck-Warren gives a presentation on getting started with test-driven development (TDD). He discusses what TDD is, the five phases of the TDD process, and why it is beneficial. He also covers how to use a testing framework like PHPUnit, what code coverage is, and some common pitfalls to avoid like neglecting to run tests or creating tests that are too large or trivial. The presentation aims to provide developers with the essential information needed to understand and implement TDD.
AfterTest Madrid March 2016 - DevOps and Testing IntroductionPeter Marshall
This document discusses continuous testing in the context of DevOps. It defines continuous testing as including automated testing, managing production and non-production environments, application monitoring, and evaluating business objectives. Continuous testing relies on DevOps activities like automating builds, infrastructure, deployments, and monitoring. It advocates for smaller, more frequent deliveries through practices like test automation, infrastructure as code, and treating testing as integral to the software delivery process. The conclusion emphasizes automation, configuration management, and obtaining frequent feedback to enable continuous testing.
Agile Engineering Best Practices by Richard ChengExcella
By Richard Cheng, Certified Scrum Trainer and Training Business Unit Lead, Excella Consulting
21st Century IT development requires building quality into our development practices yet many software teams fail to implement technical practices that are necessary for long term success. Practices like automated builds, automated tests, automated deployments, continuous integration, and continuous delivery are now considered essential for the success of any software development project. Without these practices, the quality of software goes downhill and teams can no longer sustain their initial high levels of productivity.
However, understanding and implementing the practices can seem daunting. This session presents an easy to understand roadmap for implementing engineering best practices for non-technical audiences.
Though this topic is about engineering best practices, attendees do not have to be technical to get value from this session. The session gives a non-technical look at a technical concept and is great for any person in the organization managing, working with, or working on IT teams/programs.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making the test fail, writing code to pass the test, and refactoring code. Automated tests provide confidence to refactor and change code without breaking functionality. Unit tests isolate and test individual code units while feature tests simulate how a user interacts with the application. Code coverage metrics help ensure tests cover enough of the codebase, with higher coverage percentages generally indicating better test quality.
Imagine we had the power to understand the code before its complied or embedding a backdoor or even stealing legitimate certificates of a well known vendor and using them to sign malware?
Join me in the journey of exploring security issues that tend to happen during Build Time in typical enterprise environments.
Automation testing involves developing and executing tests that can run unattended, comparing actual and expected results. The major objectives of automation testing are to speed up testing, reduce costs and time, and increase quality. Automation testing is faster than manual testing and can test more scenarios. However, high upfront investment is required for tools and training. Both manual and automation testing are needed as automation does not cover all test cases. Popular automation testing tools include Selenium, QTP, and TestComplete.
The document outlines an upcoming programming workshop that will cover various JetBrains IDEs like PyCharm, IntelliJ IDEA, and PhpStorm. It then discusses Test Driven Development (TDD), including what TDD is, the development cycle used in TDD, and benefits like encouraging simple designs and confidence. Different types of software tests are also listed like unit tests, integration tests, acceptance tests, and others. Specific testing techniques like unit testing, integration testing using bottom-up and top-down approaches, and acceptance testing are then explained at a high level. Finally, some important notes on testing like trusting tests and prioritizing maintainability are provided.
This document proposes an automated test architecture for the UI Builder application using REST API testing, UI testing, and integration testing. It recommends the Rest Assured library for API testing due to its ability to integrate with Jenkins and remove the need for manual HTTP calls. Protractor is proposed for UI testing as it allows testing Angular applications in JavaScript and integrates well with Selenium. Both test frameworks would be set up with their own Git repositories linked to Jenkins jobs. Integration testing would link the API and UI test repos. The test automation aims to provide faster feedback and reduce regressions as the application grows.
Software Test automation tools are available under several categories such as commercial, free software, open source software and etc. In this paper Open Source Software Testing Tools will be discussed.
Open source software test automation tools may be practical alternatives to popular closed-source commercial applications and some open source tools offers features or performance benefits that exceed their commercial counterparts. The source code is openly published for use and/or modification from its original design, free of charge. And these are usually available under a license defined by the Open Source Initiative.
Writing better tests for your java script appJakeGinnivan
This document discusses writing better tests for JavaScript apps. It notes that good tests are fast, comprehensive, reliable, and maintainable, enabling refactoring with increased confidence. Typical problems with testing include tests being slow to write and run, intermittently failing, or not failing at all. The document recommends unit tests and higher level unit tests to test modules and their interactions. It provides tips for different testing contexts like single-page apps and Node web services. Defensive testing patterns like dependency injection and Arrange-Act-Assert are also covered.
The Continuous delivery Value @ codemotion 2014David Funaro
System Crash, failure data migration, partial update: issues that no one would ever want to meet during the deploy and ... hoping for the best is not enough.
The deployment activity is important as those that precede it. The Continuous Delivery will give you low risk, cheap, fast, predictable delivery and ... soundly.
This document discusses the benefits of continuous delivery and deployment. It notes that without proper processes, deployments can fail due to crashes, failed migrations, or interrupted updates when introducing new features. Continuous delivery uses tools and methodologies to make releases low risk, fast, predictable, and ensure smooth deployments. The document outlines some of the key aspects of continuous delivery like source code management, continuous integration, automated deployments, monitoring, and root cause analysis. It discusses how these practices can help make software releases cheaper, more frequent, rapid, and reduce stress and errors compared to traditional release processes.
Testing and DevOps Culture: Lessons LearnedLB Denker
This document discusses the speaker's background and experiences with software engineering practices. It covers his education in computational mathematics and computer science, past roles at Universal Instruments developing machine software and at Google and Etsy implementing DevOps practices. Key topics covered include the benefits of continuous integration, deployment and delivery; the importance of testing including test-driven development; and embracing interdependence between developers and other IT roles. Best practices are noted to be situational and relationships must be respected.
The document discusses DevOps practices at Amazon Web Services (AWS). It begins with an overview of DevOps and how it has helped Amazon deploy code faster and more frequently. It then discusses specific DevOps tools and services offered by AWS, including AWS CodeCommit for source control, AWS CodeBuild for builds, AWS CodeDeploy for deployments, AWS CodePipeline for release orchestration, and AWS CodeStar for application development. The document explains how these services work together to enable continuous integration and continuous delivery workflows. It also discusses how AWS has implemented DevOps practices like infrastructure as code and monitoring within its own systems to deploy millions of times per day while maintaining quality, security and reliability.
Semelhante a Advanced Test Driven-Development @ php[tek] 2024 (20)
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3Data Hops
Free A4 downloadable and printable Cyber Security, Social Engineering Safety and security Training Posters . Promote security awareness in the home or workplace. Lock them Out From training providers datahops.com
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
12. Agenda
• A Brief Overview Of Test Driven-Development (TDD)
• Test Automation Pyramid
• Picking What To Test
• Events In TDD Environment
• APIs in TDD Environment
• Databases in TDD Environment
• Bugs in TDD Environment
37. Manual Testing
• Tests how all components work together
• “Sanity” Checking
• Does everything look “right"
• Does it flow correctly
38. Manual Testing
• Use a checklist or design document
• VERY slow and error prone
• Can never get completely away from this
• Ideally this is smallest part of test suite
40. End-to-End Tests
• Generally involves headless browser or full API requests
• Multi-step processes
• Checkout process
• Sign-up process
41. End-to-End Tests
• Automated using testing framework like PHPUnit/Pest/Cypress
• Faster than manual testing AND less error prone
• Brittle due to large number of components
43. Integrations Tests
• Tests how classes work when integrated together
• Controllers + forms + views + models to gether
44. Integrations Tests
• Automated using testing framework like PHPUnit/Pest
• Faster than manual and end-to-end testing AND less error prone
• Less brittle
72. User Logs Into System
User Navigates to Task
User Clicks “Complete” Button
Browser requests /tasks/#/complete
Router routes request
Permissions Are Checked
TaskCompleted Event is Raised
Event is Handled
Listener is Found and Run
Message is Generated To Original
User
Message is Sent to SMS Service
73. User Logs Into System
User Navigates to Task
User Clicks “Complete” Button
Browser requests /tasks/#/complete
Router routes request
Permissions Are Checked
TaskCompleted Event is Raised
Event is Handled
Listener is Found and Run
Message is Generated To Original
User
Message is Sent to SMS Service
74. Router routes request
Permissions Are Checked
TaskCompleted Event is Raised
Event is Handled
Listener is Found and Run
Message is Generated To Original
User
Message is Sent to SMS Service
83. Router routes request
Permissions Are Checked
TaskCompleted Event is Raised
Event is Handled
Listener is Found and Run
Message is Generated To Original
User
Message is Sent to SMS Service
84. Message is Generated To Original
User
Message is Sent to SMS Service
TaskCompleted Event is Raised
85. Message is Generated To Original
User
Message is Sent to SMS Service
TaskCompleted Event is Raised
93. Test Doubles
“[O]bjects or procedures that look
and behave like their release-
intended counterparts, but are
actually simplified versions that
reduce the complexity and
facilitate testing” - wikipedia
102. Stubbing
“[T]est stubs are programs that
simulate the behaviours of
software component … [t]est
stubs provide canned answers to
calls made during the test” -
Wikipedia
116. Dependency
Injection (DI)
“[D]ependency injection is a
programming technique in which
an object or function receives
other objects or functions that it
requires, as opposed to creating
them internally” - wikipedia
156. Using TDD To Learn a 3rd Party Code
• Need to learn API (new to me)
• Going to create own suite of tools for 3rd party API
• Build a service to abstract -> easier to create a test double
157. Using TDD To Learn a 3rd Party Code
• Going to use TDD
• Need to manually check results
• Or build tool to check results
198. Databases
1. Don’t Test It -> missed because it’s not tested
2. Doubles -> missed because it’s not using real data
3. Use the actual database -> caught
199. Databases
1. Once you start doing this hard to stop
2. Other tests may impact each other
3. Need to worry about polluting DB
200. Databases
1. Reset DB at start of every test
1. Can be slow as DB structure changes over time
2. Hard to generate test data because it erases
2. Reset DB at start of test run
1. Generate “test” information to pull
2. Keep everything in known good state
208. 1. Replicate the problem
2. Form a hypothesis
3. Test the hypothesis
4. Repeat until the bug is “fixed”
Bugs
209. Bugs
1. Replicate the problem
2. Form a hypothesis
3. Test the hypothesis
4. Repeat until the bug is “fixed”
5. Revert the change (git stash)
6. TDD to the fix
210. What To Tests?
1. Reported Bug: User::getDisplayName()
2. Root Cause: Str::append()?
3. Both?
218. 3rd Party APIs
1. Can use TDD to learn APIs/libraries
1. Come back to when things break in the future
2. Run separately to avoid costs
219. Databases
1. Other tests may impact each other
2. Need to worry about polluting DB
1. Reset DB
2. Transactions
3. Helper functions
220. Bugs
1. Replicate the problem
2. Form a hypothesis
3. Test the hypothesis
4. Repeat until the bug is “fixed”
5. Revert the change (git stash)
6. TDD to the fix
At it’s core TDD thrives on it’s <slide>
But that has a downside
When we (including me) explain it to people earlier in their journey
Do them a horrible disservice
End up with examples that just add two numbers together
Take this knowledge back to work
Open project management tool and find
Give Up
All that is <slide>
<slide> that TDD I haven’t given them the tools to attack
My goal in the next 50 minutes is to give you some tools, techniques, and know how
Get rid of the complexity and back to <click>
Goal:give you tools to tackle even the hardest TDD problem
Very example heavy
For those of you who haven’t met me my name is …
Professional PHP Developer for 16 years
// team lead/CTO role for 11 of those 16
Currently Director of Technology at WeCare Connect
Survey solutions to improve employee and resident retention at skilled nursing facilities
Use PHP for our backend
Also …
TDD is a test-first software development process that uses short development cycles to write very specific test cases and then modify our code so the tests pass.
TDD consists of five phases that we will repeat as we modify our code. Each of the phases happens very quickly and we might go through all five phases in less than a minute.
The first thing we're going to do is write a failing test. We'll use this failing test to help determine when we've achieved our expected functionality.
In this step, we're going to run the test to make sure our test fails before we move on to the next phase. It's very easy to write a test that doesn't fail so we **always** run our test to verify it's failing before moving to the next phase.
3. Make a little change
Now our goal is to change the smallest amount of code possible to get that test to pass.
We don't want to change any more than is necessary because that extra bit of change wasn't made using TDD and is potentially not tested. We don't need perfect code in this phase we just need code that makes the test pass. It's very easy to get caught up in making sure everything is perfect but that's not the goal here. Perfect comes later.
4. Run all tests and see them all succeed
Now that we've made our change we can run our test and see that it passes new test and any other tests.
If it doesn't then we just jump back to phase #3 and keep making small changes until it does.
Now that we have our tests passing we're going to take a break and inspect both our test code and our code under test to see where we can make changes so it's easier for future developers to read, understand, and maintain.
Could also be red/green/refactor
When I mentor new team members I tell them our application has four types of tests
General cost increases upwards why we want mostly bulk at bottom
If you’re test suite doesn’t look like this don’t stress
This is my idea but You and your team have to pick what works for you
“The Perfect is the Enemy of The Good” It’s better to have some
What you don’t want is
Hard to work in this environment
Burn out is real
My goal is to break this into small enough chunks I can complete it
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
Seems a little complex
Makes you want to throw your hands up and say this is impossible!
This is where TDD “falls” down
What if we simplify this?
First 4 items are browser -> ignore those
Makes it a lot smaller still a lot though right?
Several types of dependencies
Software your team didn’t write
Looking at our chart we have 3rd party api
And maybe events
Software your team did write
Fun thing about internal dependencies -> from your perspective external dependency
When doing TDD on your code you {slide}
Remove all external pieces
Left with just a few pieces easier to handle
Two major pieces left seems like something we could tackle
Both of which we can handle with unit tests
A finished solutions
Problem: hard to test
Goal in unit testing range
Two things we need to discuss to fix
Test doubles are the superheroes of unit testing, allowing us to replace real components with stand-ins during tests that mimic their behavior. This replacement fosters isolation, testing components separately from their dependencies.
Two main branches of test doubles
A mock object is an object that meticulously records method calls and takes pride in asserting whether expected interactions took place. Mocks excel when your mission is to validate the interactions between the real object being under test and its collaborators.
A spy is an implementation to verify a specific behavior.
A stub provides predetermined responses to calls made during a test. It’s ideal for scenarios when you’re more concerned with the behavior of the object under test than its interactions with other components. Think of it as a scripted actor playing a role during testing.
A stub is the simplest implementation with a hardcoded behavior.
A dummy is a just simple implementation that does nothing.
A fake is a simplified implementation to simulate the original behavior.
Mocks -> Useful for seeing what’s coming out of your code
Stubbing -> useful for when you need incoming
Use tool (Mockery) to generate them and have it do the assertions
Write reusable classes and assert results in our tests
Both valid I start out
Creating testable code -> requires architecture decision
We want to use DI
Without DI Example class
Problem: code is written to specific implementation of dependency
Hard to swap out
These are simple but could be complicated
With DI Example class
Pass dependencies as a parameter (either function or class constructor)
Downside to this:
Have to define how things are created
This example uses PHP-DI
Phase 1: Write a little test
Specify explicitly what you are testing
Kinda wordy
// Arrange: Bring the system under test in the desired state. Prepare dependencies, arguments and finally construct the SUT.
// Act: Invoke a tested element.
// Assert: Verify the result, the final state, or the communication with collaborators.
// Arrange: Bring the system under test in the desired state. Prepare dependencies, arguments and finally construct the SUT.
// Act: Invoke a tested element.
// Assert: Verify the result, the final state, or the communication with collaborators.
// Arrange: Bring the system under test in the desired state. Prepare dependencies, arguments and finally construct the SUT.
// Act: Invoke a tested element.
// Assert: Verify the result, the final state, or the communication with collaborators.
Phase 2
Phase 3
Phase 4 and 5 - see how fast that was?
Back to phase 1
That’s how to test events but we can test so much more now
You now have a bunch of tools to create unit tests for any kind of interactions between classes
Leads into our next topic <slide>
Picked SMS messages two reasons
because Vonage is a sponsor
Hard to test because <click>
Goal in unit testing range
Two things we need to discuss to fix
Don’t want it running every time because cost
Don’t want it running every time because cost
You may have noticed I never had a failing test
In this case: didn’t even know what that would be
notice: copy and paste and not cut and paste
notice: copy and paste and not cut and paste
notice: copy and paste and not cut and paste
notice: copy and paste and not cut and paste
Purists say never use the DB but that hides problems
Much less plan and more figure it out
What I expect is to have the getDisplayName() return my name but it returns my last name only
This broke once
Might brake again
Much less plan and more figure it out
Bugs are a different beast
Have to “invert” our process a little
I’m really belt and suspenders here
I do both gives us extra coverage (plus someone must have not done it before)
General cost increases upwards why we want mostly bulk at bottom
Bugs are a different beast
Have to “invert” our process a little