This document is a presentation on unit testing and functional testing in TYPO3. It introduces the presenter, Nicole Cordes, and provides an overview of the basics of functional testing including why it is needed, what a test case is, and the lifecycle of a test. It then demonstrates a use case for testing an extension and how to run tests from the command line or with an alternative MySQL instance. The document concludes with guidance on coding functional tests, including setting expectations, implementing requirements and assertions, and setting up continuous integration with Travis.
SymfonyCon Berlin 2016 Jenkins Deployment Pipelinescpsitgmbh
Currently I'm working on a flexible deployment pipeline in Jenkins where I can reuse some templates and create new pipelines within minutes. I'd like to present my solution, talk about the basics of Jenkins and explain why it's the better way to deploy with a CI server.
Monitoring as an entry point for collaborationJulien Pivotto
In the last years, we have been building complex stacks, made from lots of components. All of this backed by multiple teams. This talk will present how you can use monitoring to look at the business side and have everyone looking at the same dashboards, making cooperation a reality.
A simple talk about appliyng patterns in Javascript.
It focuses in both jQuery and Angular.
It explains some basics MVC, cohesion and coupling.
It also have many examples of the patterns applied.
Full examples and documentation can be found here: http://david-rodenas.com/tutorial-jspatterns-v1/
SymfonyCon Berlin 2016 Jenkins Deployment Pipelinescpsitgmbh
Currently I'm working on a flexible deployment pipeline in Jenkins where I can reuse some templates and create new pipelines within minutes. I'd like to present my solution, talk about the basics of Jenkins and explain why it's the better way to deploy with a CI server.
Monitoring as an entry point for collaborationJulien Pivotto
In the last years, we have been building complex stacks, made from lots of components. All of this backed by multiple teams. This talk will present how you can use monitoring to look at the business side and have everyone looking at the same dashboards, making cooperation a reality.
A simple talk about appliyng patterns in Javascript.
It focuses in both jQuery and Angular.
It explains some basics MVC, cohesion and coupling.
It also have many examples of the patterns applied.
Full examples and documentation can be found here: http://david-rodenas.com/tutorial-jspatterns-v1/
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech TalkRed Hat Developers
Have you ever been frustrated by developing and documenting an HTTP API? When it comes down to defining the HTTP interface between frontend and backend, have you ever had problems specifying the parameters or the shape of the body without misunderstandings? In this talk we’ll introduce you to "Contract Driven Development" (or API Design First approach), a methodology that uses declarative API Contracts to enable developers to efficiently design, communicate, and evolve their HTTP APIs, while automating API implementation phases where possible. In order to implement this methodology, we’ll show you how to develop an API contract using OpenAPI 3 and how you can easily implement the HTTP endpoints using Vert.x Web OpenAPI.
Процесс разработки не начинается и не заканчивается на написании кода программного продукта. Мы пишем документацию, придумываем, как это всё оттестировать, и заботимся о том, чтобы доступность приложения была на высоком уровне.
Мы все делаем привычные вещи привычным для нас способом. Порой выполняя много ручной и неэффективной работы. Но что, если есть другой, радикальный подход. Можно ли формализовать свою деятельность и переложить её в код? Какие практики и инструменты для этого использовать?
В докладе будет представлен личный опыт автора по автоматизации различных элементов разработки ПО.
Using the Test::PostgreSQL, App::Sqitch, DBIx::Class and DBIx::ClassEasyFixture perl modules to build a testing environment that is dynamically created and destroyed with each execution. Test can be run both serial or parallel without impacting each other.
Paolo Alvarado Customer Support Engineer, Fastly at Altitude 2016
Customer Support Engineer Paolo Alvarado discusses various useful features of advanced Varnish Configuration Language (VCL).
Test Driven Documentation with Spring Rest Docs JEEConf2017Roman Tsypuk
My talk on JEEConf about Spring Rest Docs, Swagger and Test Driven Documentation.
Material covers:
1. Swagger. SpringFox
2. Swagger approaches and trade-offs
3. Test Driven Development → Test Driven Documentation
4. Live Coding session - how to connect and start using SpringRestDocs
5. Spring Rest Docs features
6. AsciiDoc is awesome (syntax, examples, extensions).
7. Migration of your project from Swagger to SpringRestDocs
Practical Chaos Engineering will show how to start running chaos experiments in your infrastructure and will try to guide your through the principles of chaos.
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech TalkRed Hat Developers
Have you ever been frustrated by developing and documenting an HTTP API? When it comes down to defining the HTTP interface between frontend and backend, have you ever had problems specifying the parameters or the shape of the body without misunderstandings? In this talk we’ll introduce you to "Contract Driven Development" (or API Design First approach), a methodology that uses declarative API Contracts to enable developers to efficiently design, communicate, and evolve their HTTP APIs, while automating API implementation phases where possible. In order to implement this methodology, we’ll show you how to develop an API contract using OpenAPI 3 and how you can easily implement the HTTP endpoints using Vert.x Web OpenAPI.
Процесс разработки не начинается и не заканчивается на написании кода программного продукта. Мы пишем документацию, придумываем, как это всё оттестировать, и заботимся о том, чтобы доступность приложения была на высоком уровне.
Мы все делаем привычные вещи привычным для нас способом. Порой выполняя много ручной и неэффективной работы. Но что, если есть другой, радикальный подход. Можно ли формализовать свою деятельность и переложить её в код? Какие практики и инструменты для этого использовать?
В докладе будет представлен личный опыт автора по автоматизации различных элементов разработки ПО.
Using the Test::PostgreSQL, App::Sqitch, DBIx::Class and DBIx::ClassEasyFixture perl modules to build a testing environment that is dynamically created and destroyed with each execution. Test can be run both serial or parallel without impacting each other.
Paolo Alvarado Customer Support Engineer, Fastly at Altitude 2016
Customer Support Engineer Paolo Alvarado discusses various useful features of advanced Varnish Configuration Language (VCL).
Test Driven Documentation with Spring Rest Docs JEEConf2017Roman Tsypuk
My talk on JEEConf about Spring Rest Docs, Swagger and Test Driven Documentation.
Material covers:
1. Swagger. SpringFox
2. Swagger approaches and trade-offs
3. Test Driven Development → Test Driven Documentation
4. Live Coding session - how to connect and start using SpringRestDocs
5. Spring Rest Docs features
6. AsciiDoc is awesome (syntax, examples, extensions).
7. Migration of your project from Swagger to SpringRestDocs
Practical Chaos Engineering will show how to start running chaos experiments in your infrastructure and will try to guide your through the principles of chaos.
Performance benchmarks are all too often inaccurate. This talk introduces some things to look for in setting up and running benchmarks to make them effective.
Mock what? What Mock?Learn What is Mocking, and how to use Mocking with ColdFusion testing, development, and continuous integration. Look at Mocking and Stubbing with a touch of Theory and a lot of Examples, including what you could test, and what you should test… and what you shouldn't test (but might be fun).
A brief introduction about the art of unit test, how to test a class, mock a collaborator and use a fake database. TDD is introduced. Code for exercises is available on github along with a detailed explanation. Examples and exercises are written in Java.
Creating Realistic Unit Tests with TestcontainersPaul Balogh
** Recording available at https://www.youtube.com/watch?v=sX4s1HqPZcw **
Sometimes, unit tests with mocked services just aren't enough. We'd like to be able to run repeatable tests against the real thing without fear of corrupting data or affecting others.
With Testcontainers, there is no need for mocks or complicated environment configurations. We can define our target environment in code and then run our tests against ephemeral containers. Java developers have had this ability for several years, but now Go developers have this similar ability!
Enjoy the discussion and demonstration of this open-source project created by the folks at AtomicJar, recently acquired by Docker.
Comment créer une application web en quelques minutes avec un générateur de code Open Source simple et utilisable avec tous types de langages ou frameworks.
Cette présentation sera essentiellement basée sur une démonstration (création d’un application web en Python).
Paper presented at the 12th International Conference on Digital Preservation, November 2-6, 2015. University of North Carolina at Chapel Hill.
Abstract:
An increasing amount of scientific work is performed in silico, such that the entire process of investigation, from experiment to publication, is performed by computer. Unfortunately, this has made the problem of scientific reproducibility even harder, due to the complexity and imprecision of specifying and recreating the computing environments needed to run a given piece of software. Here, we consider from a high level what techniques and technologies must be put in place to allow for the accurate preservation of the execution of software. We assume that there exists a suitable digital archive for storing digital objects; what is missing are frameworks for precisely specifying, assembling, and executing software with all of its dependencies. We discuss the fundamental problems of managing implicit dependencies and outline two broad approaches: preserving the mess, and encouraging cleanliness. We introduce three prototype tools for preserving software executions: Parrot, Umbrella, and Prune.
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBrad Spiegel Macon GA
Brad Spiegel Macon GA’s journey exemplifies the profound impact that one individual can have on their community. Through his unwavering dedication to digital inclusion, he’s not only bridging the gap in Macon but also setting an example for others to follow.
# Internet Security: Safeguarding Your Digital World
In the contemporary digital age, the internet is a cornerstone of our daily lives. It connects us to vast amounts of information, provides platforms for communication, enables commerce, and offers endless entertainment. However, with these conveniences come significant security challenges. Internet security is essential to protect our digital identities, sensitive data, and overall online experience. This comprehensive guide explores the multifaceted world of internet security, providing insights into its importance, common threats, and effective strategies to safeguard your digital world.
## Understanding Internet Security
Internet security encompasses the measures and protocols used to protect information, devices, and networks from unauthorized access, attacks, and damage. It involves a wide range of practices designed to safeguard data confidentiality, integrity, and availability. Effective internet security is crucial for individuals, businesses, and governments alike, as cyber threats continue to evolve in complexity and scale.
### Key Components of Internet Security
1. **Confidentiality**: Ensuring that information is accessible only to those authorized to access it.
2. **Integrity**: Protecting information from being altered or tampered with by unauthorized parties.
3. **Availability**: Ensuring that authorized users have reliable access to information and resources when needed.
## Common Internet Security Threats
Cyber threats are numerous and constantly evolving. Understanding these threats is the first step in protecting against them. Some of the most common internet security threats include:
### Malware
Malware, or malicious software, is designed to harm, exploit, or otherwise compromise a device, network, or service. Common types of malware include:
- **Viruses**: Programs that attach themselves to legitimate software and replicate, spreading to other programs and files.
- **Worms**: Standalone malware that replicates itself to spread to other computers.
- **Trojan Horses**: Malicious software disguised as legitimate software.
- **Ransomware**: Malware that encrypts a user's files and demands a ransom for the decryption key.
- **Spyware**: Software that secretly monitors and collects user information.
### Phishing
Phishing is a social engineering attack that aims to steal sensitive information such as usernames, passwords, and credit card details. Attackers often masquerade as trusted entities in email or other communication channels, tricking victims into providing their information.
### Man-in-the-Middle (MitM) Attacks
MitM attacks occur when an attacker intercepts and potentially alters communication between two parties without their knowledge. This can lead to the unauthorized acquisition of sensitive information.
### Denial-of-Service (DoS) and Distributed Denial-of-Service (DDoS) Attacks
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
3. 2Nicole Cordes, T3DD16 - Unit tests for dummies
INTRODUCTION
„Who is that girl?“
» Nicole Cordes
» working at CPS-IT GmbH in Berlin
» community activity since 2011
» Core and Security Team member
» contributing to multiple public extensions
» Slack: @IchHabRecht
» Twitter: @IchHabRecht
» Mail: typo3@cordes.co
5. 4Nicole Cordes, T3DD16 - Unit tests for dummies
BASICS
„Why do I need functional tests?“
» test a part of your software
» not about testing your functions or classes, but processes
» from a user's point of view
» for quality assurance (QA)
» unit tests don't ensure a correct workflow
» manual testing takes a lot of time
» encapsulated system (database) without site-effects or dependencies
6. 5Nicole Cordes, T3DD16 - Unit tests for dummies
BASICS
„What are you talking about?“
test case
test
test
test
test
assertion
assertion
assertion
7. 6Nicole Cordes, T3DD16 - Unit tests for dummies
BASICS
„What are you talking about?“
Processing of a test case
» find all tests within the class
» call one test after another
» test folder in typo3temp is created
» core is linked into test folder
» test extensions are linked into typo3conf/ext
» paths and files are linked
» LocalConfiguration.php is written
» PackageStates.php is written
» bootstrap is initialized
» database is created
» database scheme is imported
8. 7Nicole Cordes, T3DD16 - Unit tests for dummies
BASICS
„What are you talking about?“
The life cycle of a test
» create an object of the test class
» call `setUp` method (protected!)
» objects and environment can be prepared
» call one test
» call `tearDown` method (protected!)
» objects and environment can be cleaned up
11. 10Nicole Cordes, T3DD16 - Unit tests for dummies
RUNNING TESTS
„How to run tests from CLI?“
» clone TYPO3 core
» run `composer install`
» use the cloned core for your development
» run `typo3_src/bin/phpunit -c typo3/sysext/core/Build/FunctionalTests.xml typo3conf/ext/ext_testing`
» ! be aware that the functional tests dirty your database
12. 11Nicole Cordes, T3DD16 - Unit tests for dummies
RUNNING TESTS
„How to use an own MySQL instance?“
On Unix
» sudo mkdir /tmp/mysqld-testing
» sudo chmod 700 /tmp/mysqld-testing
» sudo chown mysql:mysql /tmp/mysqld-testing
» sudo mysqld_safe --port=3307 --socket="/var/run/mysqld/mysqld-testing.sock" --user mysql --pid-
file="/var/run/mysqld/mysqld-testing.pid" --datadir="/tmp/mysqld-testing" --skip-grant-tables run
» typo3DatabaseHost="localhost" typo3DatabasePort=3307 typo3DatabaseName=“ext-testing"
typo3DatabaseUsername=“root" typo3DatabasePassword=""
typo3_src/bin/phpunit -c typo3/sysext/core/Build/FunctionalTests.xml
13. 12Nicole Cordes, T3DD16 - Unit tests for dummies
RUNNING TESTS
„How to use an own MySQL instance?“
On Windows (preparation)
» copy "C:Program FilesMySQL Servermy.ini“ to "C:Program FilesMySQL Servermy-testing.ini“
» change “port=3306” to “port=3307” in [client] and [mysqld] section
» change datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/data” to
datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/data-testing”
» change innodb_data_home_dir="C:/ProgramData/MySQL InnoDB Datafiles/“ to
innodb_data_home_dir="C:/ProgramData/MySQL InnoDB Datafiles Testing/"
» create folder “C:/ProgramData/MySQL/MySQL Server 5.5/data-testing”
» copy mysql folder, ib_logfile0 and ib_logfile1 from original data folder
» copy "C:/ProgramData/MySQL InnoDB Datafiles/“ to "C:/ProgramData/MySQL InnoDB Datafiles Testing/“
14. 13Nicole Cordes, T3DD16 - Unit tests for dummies
RUNNING TESTS
„How to use an own MySQL instance?“
On Windows (server handling)
» start server with "C:Program FilesMySQL Serverbinmysqld.exe" --defaults-file="C:Program
FilesMySQL Servermy-testing.ini“
» the server starts in the foreground (no new prompt appears until the server exits later)
» stop the server with "C:Program FilesMySQL Serverbinmysqladmin.exe" -u root -p --port=3307
shutdown
» cmd /C “SET typo3DatabaseHost=localhost && SET typo3DatabasePort=3307 &&
SET typo3DatabaseName=ext-testing && SET typo3DatabaseUsername=root &&
SET typo3DatabasePassword= &&
typo3_srcbinphpunit -c typo3/sysext/core/Build/FunctionalTests.xml”
15. 18Nicole Cordes, T3DD16 - Unit tests for dummies
CODING FUNCTIONAL TESTS
„How does functional testing work?“
I
» set up your expectations
» define static requirements
» add a test case for your class
» implement requirements and test (decouple objects as much as you can)
» implement assertion
16. 19Nicole Cordes, T3DD16 - Unit tests for dummies
CODING FUNCTIONAL TESTS
„How does functional testing work?“
II
» move your extension to GitHub
» set up the travis service in your repository settings
» add a composer.json file
» add .travis.yml