Codeception is a PHP testing framework for Behavior Driven Development, which covers all kinds of tests: unit tests, functional tests and acceptance tests. It is fast and simple in both usage and execution. This talk will give you a introduction to the software testing basics using codeception. It will also cover some stumbling blocks when writing tests, like:
- Test code stability against small changes
- Data stability
- Test structure
Last but not least I will give you a short outlook how to make your tests also understandable for product owners.
Dokumen tersebut membahas tentang psikologi dalam kesehatan dalam 3 kalimat:
Psikologi kesehatan merupakan bidang yang mempelajari peran psikologi dalam dunia kesehatan mulai dari kesehatan individu hingga masyarakat. Ilmu psikologi dalam kesehatan mencakup aspek perilaku kesehatan untuk meningkatkan derajat kesehatan masyarakat. Pendekatan budaya dan psikologi sangat penting dalam pener
Dokumen tersebut membahas tentang asuhan keperawatan pasien dengan rheumatoid arthritis. Rheumatoid arthritis adalah penyakit autoimun kronik yang menyebabkan peradangan pada sendi dan dapat menyebabkan kerusakan jaringan sendi. Dokumen menjelaskan pengertian, klasifikasi, etiologi, patofisiologi, manifestasi klinis, dan penatalaksanaan rheumatoid arthritis."
Dibawah ini adalah contoh Soal ukom perawat dan kunci jawaban.
1. Seorang laki-laki berusia 50 tahun dibawa ke UGD oleh keluarganya karena mengalami kejang saat di rumah sampai lidahnya berdarah karena tergigit.
Apakah tindakan keperawatan yang menjadi prioritas pada kasus yang dialami oleh Tn. B?
Dapatkan soal soal uji kompetensi perawat terlengkap di www.kumpulanukom.blogspot.com dan Kumpulanukom.blogspot.com serta ukomperawat.blogspot.com
Status Wanita dimata Kesehatan. Jadi diharapkan agar wanita dapat di berikan kesempatan yang sama seperti lelaki. namun dengan adanya kesempatan yang sama perempuan tidak meninggalkan kewajibannya sebagai seorang wanita.
Makalah ini membahas tentang kebutuhan dasar manusia akan rasa aman dan nyaman, dengan mendefinisikan kedua konsep tersebut serta menjelaskan faktor-faktor yang mempengaruhinya. Selain itu, dibahas pula lingkungan yang aman, macam-macam bahaya, serta kebijakan rumah sakit terkait keselamatan pasien."
Dokumen tersebut membahas tentang psikologi dalam kesehatan dalam 3 kalimat:
Psikologi kesehatan merupakan bidang yang mempelajari peran psikologi dalam dunia kesehatan mulai dari kesehatan individu hingga masyarakat. Ilmu psikologi dalam kesehatan mencakup aspek perilaku kesehatan untuk meningkatkan derajat kesehatan masyarakat. Pendekatan budaya dan psikologi sangat penting dalam pener
Dokumen tersebut membahas tentang asuhan keperawatan pasien dengan rheumatoid arthritis. Rheumatoid arthritis adalah penyakit autoimun kronik yang menyebabkan peradangan pada sendi dan dapat menyebabkan kerusakan jaringan sendi. Dokumen menjelaskan pengertian, klasifikasi, etiologi, patofisiologi, manifestasi klinis, dan penatalaksanaan rheumatoid arthritis."
Dibawah ini adalah contoh Soal ukom perawat dan kunci jawaban.
1. Seorang laki-laki berusia 50 tahun dibawa ke UGD oleh keluarganya karena mengalami kejang saat di rumah sampai lidahnya berdarah karena tergigit.
Apakah tindakan keperawatan yang menjadi prioritas pada kasus yang dialami oleh Tn. B?
Dapatkan soal soal uji kompetensi perawat terlengkap di www.kumpulanukom.blogspot.com dan Kumpulanukom.blogspot.com serta ukomperawat.blogspot.com
Status Wanita dimata Kesehatan. Jadi diharapkan agar wanita dapat di berikan kesempatan yang sama seperti lelaki. namun dengan adanya kesempatan yang sama perempuan tidak meninggalkan kewajibannya sebagai seorang wanita.
Makalah ini membahas tentang kebutuhan dasar manusia akan rasa aman dan nyaman, dengan mendefinisikan kedua konsep tersebut serta menjelaskan faktor-faktor yang mempengaruhinya. Selain itu, dibahas pula lingkungan yang aman, macam-macam bahaya, serta kebijakan rumah sakit terkait keselamatan pasien."
Dokumen ini berisi biodata pasien wanita berusia 22 tahun yang sedang hamil 37 minggu dengan keluhan perdarahan pervagina. Terdapat riwayat kehamilan dan persalinan yang lalu, serta hasil pemeriksaan fisik dan USG yang menunjukkan janin tunggal dengan presentasi kepala dan plasenta previa parsialis.
Evaluasi pemahaman tentang program KB dan organisasi LSM dilakukan terhadap 50 orang ibu dengan menggunakan tes pilihan ganda selama 60 menit. Hasilnya rata-rata 90, menunjukkan tingkat pemahaman yang baik.
Dokumen tersebut membahas tentang kelalaian dalam praktik keperawatan di rumah sakit. Kelalaian perawat dapat berupa kesalahan pemberian obat, mengabaikan keluhan pasien, atau salah mengidentifikasi pasien seperti yang terjadi pada kasus perawat yang salah menyuntik pasien. Kelalaian perlu diselesaikan sesuai undang-undang dan kode etik keperawatan untuk mencegah terjadinya kerugian bagi pasien.
Ringkasan dokumen tersebut adalah:
1) Akuntabilitas bidan dalam praktik kebidanan penting untuk keselamatan pasien dan harus berdasarkan kompetensi dan bukti;
2) Bidan memiliki otonomi dan mandiri untuk bertindak sesuai standar profesi dan etika;
3) Legislasi penting untuk melindungi masyarakat dan menjamin kualitas pelayanan kesehatan.
Original file name: _PERLINDUNGAN KONSUMEN2.ppt
Field of Study : Accounting, Management
Subject : Hukum Bisnis II
Author : Nurti Widayati, SH., MH.
Filetype : ppt
DOWNLOAD MATERI BIOLOGI KELAS X IPA GRATIS
JANGAN LUPA LIKE SHARE DAN KOMENTAR YA
DAPATKAN JUGA MATERI SBMPTN LAINNYA DENGAN JOIN KE BLOG KAMI ZONA-SBMPTN.BLOGSPOT.COM UNTUK UPDATE MATERI LAINNYA
SELAMAT BELAJAR DAN SEMANGAT !!!!
KB 1 Peranan Agama Dalam Mewujudkan Persatuan dan Kesatuan Bangsapjj_kemenkes
Modul ini membahas tentang peranan agama dalam mewujudkan persatuan dan kesatuan bangsa serta pandangan agama terhadap praktik kebidanan. Agama memainkan peran penting dalam mempersatukan umat dengan menganjurkan persatuan, larangan saling curiga, dan janji-ancaman bagi yang memecah belah. Sebagai bidan, penting memahami pandangan agama terhadap praktik, seperti aborsi dan keluarga berencana.
Dokumen tersebut membahas tentang kompetensi inti dan kompetensi dasar untuk program keahlian keperawatan pada bidang kesehatan dan pekerjaan sosial. Tujuan kurikulum mencakup empat aspek kompetensi yaitu sikap spiritual, sikap sosial, pengetahuan, dan keterampilan yang dicapai melalui pembelajaran intrakurikuler, kokurikuler, dan ekstrakurikuler.
This presentation is about the following points,
1. Handle Browser,
2. Handle Edit box / Text Box,
3. Handle Link Element,
4. Handle Button,
5. Handle Text Area / Message,
6. Handle Dropdown box /List box,
7. Handle Radio Button,
8. Handle Check Box
The document discusses continuous feature development. It defines a feature as a set of expected functional behaviors from a client. Continuous feature development involves incrementally building these expected behaviors. This approach is needed because clients' expectations, business needs, user perceptions, and competitive advantages are continually changing. Managing continuous feature development presents challenges like integrating new features, maintaining stability, seamless integration, and managing trust. The document recommends practices like acceptance test-driven development, test-driven development, behavior-driven development, continuous integration, coding in feature branches, code reviews, maintaining a production branch, using staging servers, and continuous integration to help address these challenges.
Dokumen ini berisi biodata pasien wanita berusia 22 tahun yang sedang hamil 37 minggu dengan keluhan perdarahan pervagina. Terdapat riwayat kehamilan dan persalinan yang lalu, serta hasil pemeriksaan fisik dan USG yang menunjukkan janin tunggal dengan presentasi kepala dan plasenta previa parsialis.
Evaluasi pemahaman tentang program KB dan organisasi LSM dilakukan terhadap 50 orang ibu dengan menggunakan tes pilihan ganda selama 60 menit. Hasilnya rata-rata 90, menunjukkan tingkat pemahaman yang baik.
Dokumen tersebut membahas tentang kelalaian dalam praktik keperawatan di rumah sakit. Kelalaian perawat dapat berupa kesalahan pemberian obat, mengabaikan keluhan pasien, atau salah mengidentifikasi pasien seperti yang terjadi pada kasus perawat yang salah menyuntik pasien. Kelalaian perlu diselesaikan sesuai undang-undang dan kode etik keperawatan untuk mencegah terjadinya kerugian bagi pasien.
Ringkasan dokumen tersebut adalah:
1) Akuntabilitas bidan dalam praktik kebidanan penting untuk keselamatan pasien dan harus berdasarkan kompetensi dan bukti;
2) Bidan memiliki otonomi dan mandiri untuk bertindak sesuai standar profesi dan etika;
3) Legislasi penting untuk melindungi masyarakat dan menjamin kualitas pelayanan kesehatan.
Original file name: _PERLINDUNGAN KONSUMEN2.ppt
Field of Study : Accounting, Management
Subject : Hukum Bisnis II
Author : Nurti Widayati, SH., MH.
Filetype : ppt
DOWNLOAD MATERI BIOLOGI KELAS X IPA GRATIS
JANGAN LUPA LIKE SHARE DAN KOMENTAR YA
DAPATKAN JUGA MATERI SBMPTN LAINNYA DENGAN JOIN KE BLOG KAMI ZONA-SBMPTN.BLOGSPOT.COM UNTUK UPDATE MATERI LAINNYA
SELAMAT BELAJAR DAN SEMANGAT !!!!
KB 1 Peranan Agama Dalam Mewujudkan Persatuan dan Kesatuan Bangsapjj_kemenkes
Modul ini membahas tentang peranan agama dalam mewujudkan persatuan dan kesatuan bangsa serta pandangan agama terhadap praktik kebidanan. Agama memainkan peran penting dalam mempersatukan umat dengan menganjurkan persatuan, larangan saling curiga, dan janji-ancaman bagi yang memecah belah. Sebagai bidan, penting memahami pandangan agama terhadap praktik, seperti aborsi dan keluarga berencana.
Dokumen tersebut membahas tentang kompetensi inti dan kompetensi dasar untuk program keahlian keperawatan pada bidang kesehatan dan pekerjaan sosial. Tujuan kurikulum mencakup empat aspek kompetensi yaitu sikap spiritual, sikap sosial, pengetahuan, dan keterampilan yang dicapai melalui pembelajaran intrakurikuler, kokurikuler, dan ekstrakurikuler.
This presentation is about the following points,
1. Handle Browser,
2. Handle Edit box / Text Box,
3. Handle Link Element,
4. Handle Button,
5. Handle Text Area / Message,
6. Handle Dropdown box /List box,
7. Handle Radio Button,
8. Handle Check Box
The document discusses continuous feature development. It defines a feature as a set of expected functional behaviors from a client. Continuous feature development involves incrementally building these expected behaviors. This approach is needed because clients' expectations, business needs, user perceptions, and competitive advantages are continually changing. Managing continuous feature development presents challenges like integrating new features, maintaining stability, seamless integration, and managing trust. The document recommends practices like acceptance test-driven development, test-driven development, behavior-driven development, continuous integration, coding in feature branches, code reviews, maintaining a production branch, using staging servers, and continuous integration to help address these challenges.
Test-driven security involves writing security-focused test cases to test for vulnerabilities during the development process. This helps enable continuous deployment by ensuring new code does not introduce security bugs. The key aspects discussed are:
1) Having developers or security experts write test cases to validate common vulnerabilities like authentication failures, input validation, and authorization checks.
2) Involving non-technical team members like project managers in writing test cases using plain language to specify scenarios.
3) Integrating security testing into continuous integration pipelines to automatically catch issues during code reviews.
Mastering Test Automation: How to Use Selenium Successfully Applitools
** WATCH FULL WEBINAR RECORDING HERE: https://youtu.be/06H-6hjyyvI **
What is Selenium? Why should you use it? And how do you use it successfully?
In this webinar, Automation expert Dave Haeffner answers these questions as he steps through the why, how, and what of Selenium.
Dave also discusses how to start from nothing and build out a well factored, maintainable, resilient, fast and scalable set of tests. These tests will not only work well, but across all of the browsers you care about, while exercising relevant functionality that matters to your business.
Watch this webinar and learn how to:
* Decompose an existing web application to identify what to test
* Pick the best language for you and your team
* Write maintainable and reusable Selenium tests that will be cross-browser compatible and performant
* Dramatically improve your test coverage with automated visual testing
* Build an integrated feedback loop to automate test runs and find issues fast
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupDave Haeffner
The document provides tips and strategies for using Selenium to write automated tests. It begins with an overview of Selenium and outlines a 10 step process to write successful tests. The steps include defining a test strategy, choosing a programming language, learning Selenium fundamentals, writing the first test, implementing page objects for maintainable code, making tests resilient to failures, adding cross-browser testing, creating an automated feedback loop through continuous integration, and finding additional information resources. The document emphasizes writing reusable, maintainable and resilient tests that can run across browsers to test an application.
This document discusses the importance of unit testing JavaScript code. It provides reasons for testing JavaScript, such as avoiding bugs when refactoring code or introducing errors. The document discusses how to write testable JavaScript by separating business logic from views. It also recommends choosing JavaScript unit testing tools like Jasmine and Siesta, and integrating tests into continuous integration processes to run automatically on commits. Functional testing tools like Selenium are also mentioned for testing user interactions across browsers.
In this webinar, Dave Haeffner (Elemental Selenium, USA) discusses how to:
- Build an integrated feedback loop to automate test runs and find issues fast
- Setup your own infrastructure or connect to a cloud provider
-Dramatically improve test times with parallelization
https://huddle.eurostarsoftwaretesting.com/resource/webinar/use-selenium-successfully/
- Testing JavaScript code helps ensure quality and allows for refactoring and code handovers. Unit, integration, and functional testing methodologies were discussed.
- Siesta was introduced as a JavaScript testing tool that supports unit and functional testing for Ext JS and Sencha Touch. It allows simulating user interactions and verifying results.
- Writing testable code through separation of concerns, avoiding direct DOM manipulation, and supporting dependency injection were recommended to facilitate automated testing. Continuous integration was also recommended for running tests regularly.
The document provides an overview of getting started with Selenium and outlines 8 steps to write automated tests:
1. Define a test strategy by determining what to test and which browsers to support
2. Choose a programming language like Java and set up dependencies
3. Learn Selenium fundamentals like locating elements and common actions
4. Write a first test to log in to a sample site
5. Create page objects and a base page to make tests reusable and maintainable
6. Add waits to make tests more resilient when waiting for elements
7. Set up a test harness for centralized setup/teardown, reporting and parallelization
8. Add cross-browser testing by using browser drivers locally or remotely
Browser automation testing frameworks like Nightwatch.js allow developers to automatically test their web applications. Nightwatch.js provides an easy way to write tests using JavaScript. Tests can launch browsers, fill forms, click links, and verify outputs. Nightwatch.js tests can help developers catch errors that might break functionality and ensure compatibility across browsers. The documentation is good and it is actively maintained with over 10,000 downloads per month. Developers can integrate Nightwatch.js tests into their own projects to avoid future issues.
The document discusses testing web applications using Selenium. It describes the unique challenges of testing heterogeneous systems with dynamic pages. It then provides an overview of Selenium and how it can be used to simulate user interactions and automate testing of web applications. Specific techniques discussed include using Selenium IDE to record tests and Selenium WebDriver to programmatically control browsers using various programming languages.
This document provides a 10 step guide to using Selenium successfully. It begins by defining a test strategy and choosing a programming language. It then covers Selenium fundamentals like locators and common actions. Steps include writing the first test, implementing page objects, making tests resilient with waits, and adding cross-browser execution. The guide also discusses test frameworks, continuous integration, and finding additional information. The overall goal is to write reusable, maintainable tests that run across browsers to provide automated feedback and catch issues early.
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...Ondřej Machulda
Annotated slides for phpCE workshop on November 3, 2017.
Workshop repository: https://github.com/OndraM/selenium-workshop-phpce
The workshop covered:
- setting up local development environment (using Docker)
- practical examples of functional tests implementation
- exploring possibilities of Selenium WebDriver
- parallel test execution using Steward
- hands-on Page Object design pattern
- dealing with asynchronous elements of web-pages (AJAX, JavaScript)
- general tips & tricks how to keep a maintainable suite of functional tests in a long-term
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
My slide deck from my session, AD113: Speed Up Your Applications with Nginx + PageSpeed, at MWLUG 2015 in Atlanta, GA at the Ritz-Carlton.
For more, see:
- https://edm00se.io/self-promotion/mwlug-ad113-success
- https://github.com/edm00se/AD113-Speed-Up-Your-Apps-with-Nginx-and-PageSpeed
This document discusses automated visual regression testing. It describes what visual regression testing is, when it should be used, and available libraries for implementing it like BackstopJS. The document then shares a case study of how BackstopJS was used to test a website rebuild project. It provides details on setting up and using BackstopJS, best practices, and limitations to consider when using automated visual regression testing.
How To Use Selenium Successfully (Java Edition)Sauce Labs
Dave Haeffner, a Selenium expert and active member of the Selenium project, steps through the why, how, and what of Selenium (the open-source automated web-testing tool for functional testing).
He also discusses how to start from nothing and build out a well-factored, maintainable, resilient, fast and scalable set of tests in Java. These will test your app across all of the browsers you care about, while exercising relevant functionality that matters to your business.
Want to learn how to use Selenium from the ground up? This presentation will show you how to start from nothing and build out a well factored, maintainable, resilient, and parallelized set of tests that will run locally, on a Continuous Integration server, and in the cloud. These tests will not only work well, but exercise relevant functionality that matters to the business.
Sauce Labs hosted a Selenium bootcamp webinar with guest speaker Dave Haeffner. This presentation will give you a basis for the detail given in Dave's like titled E-book and get you started with Selenium.
Autotests introduction discusses good practices for writing automated tests including using Codeception, Selenium, and Jenkins. It provides an overview of setting up testing environments and executing tests across different browsers and platforms. The document also covers best practices for writing tests such as navigating between pages, comparing actual and expected results, handling asynchronous elements, and using conditionals and loops. Overall, the document is an introduction to automated testing that outlines the tools, frameworks, and methodologies used for writing reliable and maintainable tests.
Similar to Testing mit Codeception: Full-stack testing PHP framework (20)
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfUndress Baby
The quest for the best AI face swap solution is marked by an amalgamation of technological prowess and artistic finesse, where cutting-edge algorithms seamlessly replace faces in images or videos with striking realism. Leveraging advanced deep learning techniques, the best AI face swap tools meticulously analyze facial features, lighting conditions, and expressions to execute flawless transformations, ensuring natural-looking results that blur the line between reality and illusion, captivating users with their ingenuity and sophistication.
Web:- https://undressbaby.com/
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
2. About me
• Susann Sgorzaly, 30
• Statistician and Software developer
• PHP developer for 3,5 years
• currently: Developer at ITEXIA GmbH
(on maternity leave)
@susgo
@susann_sg
3. Motivation
• Situation in the middle of 2017:
• quarterly releases
• before each release: weeks of manually testing and bug
fixing
• Problem:
• slow
• expensive
• late
• and …
5. Motivation
• How to change it?
• analyse the situation (testing strategy):
• project manager clicks his/her way though the software
• NO test scenarios list/plan
à there was no strategy at this point
à first of all: list of test cases (Excel list)
• search a way to automate this and for the moment only this
6. Motivation
• Searching for know-how:
1. own experiences from previous company (QuoData
GmbH)
• reproduce the test cases by building full navigation
scenarios with CasperJS
• take screenshots of all relevant pages
• product owner can confirm these screenshots as correct
• look at differences of the screenshots in a later run –
confirm if they are correct
• we had a web platform to confirm automatically created
screenshots as correct
9. Motivation
• Searching for know-how:
1. own experiences from previous company (QuoData
GmbH)
• Pros at first sight:
• result is easy to interpret
• notices design breaks
• confirmation by the product owner
• Cons at first sight:
• language / technology differs from product language
• manually confirmation of screenshots needed
13. Motivation
• Searching for know-how:
2. experiences from other company (portrino GmbH)
• Pros at first sight:
• PHP (uses the software language)
• simple to read
• possible simple to write and easy to maintain
• no manually confirmation needed
• Cons at first sight:
• no screenshots and therefore no design (“sexy
frontend”) confirmation by the product owner
16. What Is Codeception?
• powerful testing framework written in PHP
• inspired by BDD
• only requirements are basic knowledge of PHP and the theory
of automated testing
• kept as simple as possible for any kind of users
• powered by PHPUnit
„Describe what you test and how you test it. Use PHP to write
descriptions faster.“
17. What Does Codeception Do?
• multiple approaches:
• acceptance tests
• functional tests
• unit tests
18. What Kind Of Tests? – Acceptance Tests
• browser emulation (Selenium / Webdriver)
• can have no knowledge of the technologies
• can test any website
• testing done from a non-technical person
• readable by humans (managers)
• tests JavaScript / Ajax
• stability against code changes
• SLOW!
19. What Kind Of Tests? – Functional Tests
• web request and submit to application emulation
• assert against response and internal values
• the person testing knows how the software works
• uses different request variables to ensure the functionality of
the software for nearly all cases
• framework-based
• still readable by humans
• can‘t test JavaScript / Ajax
• less slow
20. What Kind Of Tests? – Unit Tests
• test the application core functions
• single isolated tests
• the testing person knows the internals of the application
• only readable by IT professionals
• fastest!
21. Codeception: How to? - Installation
• Install via composer
composer require “codeception/codeception“ --dev
• Execute it as:
./vendor/bin/codecept
22. Codeception: How to? - Setup
• Execute
./vendor/bin/codecept bootstrap
à creates configuration file codeception.yml and tests directory
and default test suites: acceptance, functional, unit
app
| -- tests
| | -- accpeptance
| | -- functional
| | -- unit
| | -- accpeptance.suite.yml
| | -- functional.suite.yml
| | -- unit.suite.yml
| -- codeception.yml
..
23. Codeception: How to? - Configuration
• example: configure acceptance test suite
• edit configuration file: tests/acceptance.suite.yml
actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: {YOUR APP'S URL}
- HelperAcceptance
24. Side Note: Actors and Modules?
• test classes use Actors to perform actions à act as a dummy user
• actor classes are generated from the suite configuration
• methods of actor classes are taken from Codeception Modules
• each module provides predefined actions for different testing
purposes
• modules can be combined to fit the testing environment
actor: AcceptanceTester
modules:
enabled:
…
25. Side Note: PHP Browser?
• doesn’t require running an actual browser
• runs in any environment: only PHP and cURL are required
• uses a PHP web scraper, which acts like a browser: sends a
request, receives and parses the response
• can’t work with JS (modals, datepickers, …)
• can’t test actual visibility of elements
• …
• fastest way to run acceptance tests
• But: not the situation a manager or customer is in
26. Side Note: Selenium WebDriver
• requires running an actual browser (Firefox, Chrome, …)
• can work with JS (modals, datepickers, …)
• can test actual visibility of elements
• …
• slower
• but: a manager or customer uses it too
27. Side Note: PhpBrowser vs WebDriver?
• doesn’t matter what you choose at the beginning
• most tests can be easily ported between the testing backends
• PhpBrowser tests can be executed inside a real browser with
Selenium WebDriver
• you only have to change the acceptance test suite
configuration file module and rebuild the AcceptanceTester
class
28. Codeception: How to? - Configuration
• Example: configure acceptance test suite
• Edit configuration file: tests/acceptance.suite.yml
• minimum: add your application url
actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: {YOUR APP'S URL}
- HelperAcceptance
29. Codeception: How to? - Generate Test
• Execute
./vendor/bin/codecept generate:cest acceptance Login
àgenerates new php class file
LoginCest.php for class LoginCest in the folder
‚tests/acceptance‘
Note: Cest is the class based format. Codeception also supports Cept which is a
scenario based format (see example from the Motivation slides)
30. Codeception: How to? - Write Test
<?php
class LoginCest
{
public function tryToLoginAsAdmin(AcceptanceTester $I)
{
$I->amOnPage('/site/login');
$I->see('Login', 'h1');
$I->wantTo('try to login as admin with correct credentials');
$I->fillField('input[name="LoginForm[username]"]', 'admin');
$I->fillField('input[name="LoginForm[password]"]', 'admin');
$I->click('login-button');
$I->dontSeeElement('#login-form');
$I->expectTo('see user info');
$I->see('Logout');
}
}
31. Codeception: How to? - Write Test
• Actions
$I->fillField('input[name="LoginForm[username]"]', 'admin');
$I->click('login-button');
• Assertions
$I->see('Login', 'h1');
$I->dontSeeElement('#login-form');
$I->see('Logout');
32. Codeception: How to? - Run Test!
./vendor/bin/codecept run --steps
./vendor/bin/codecept run --debug
./vendor/bin/codecept run acceptance
./vendor/bin/codecept run acceptance
LoginCest:ensureThatLoginWorks
./vendor/bin/codecept run
tests/acceptance/LoginCest.php::ensureThatLoginWorks
./vendor/bin/codecept run --xml
34. Codeception: Basic Features
• multiple backends, easily changed in configuration
• Selenium, PhpBrowser, PhantomJS
• elements matched by name, CSS, XPath
• data clean-up after each run
• integrates with different frameworks (e.g. Symfony2, Yii2,
Laravel)
• Dependency Injection
35. Codeception: Basic Features
• executes PHPUnit tests
• BDD-style
• WebService testing via REST and SOAP is possible
• generates reports: HTML, XML, JSON
• Fixtures (known test data)
• Database helpers
• Code Coverage
36. Codeception - solves all my problems!
YEAH!!!!
Seems to be easy. Let‘s go home and write some tests…
38. Codeception - solves all my problems?
NO!
My tests often broke!
My data are unstable!
So many tests,
so less structure!
NO!
NO!
NO!NO!
NO!
NO!
NO!
NO!
NO!
NO!
NO!
39. Best practice. My tests often broke
• use ids
• use the right / a good selector (CSS, name, XPath, label)
• use constants: PageObjects in Codeception
40. Best practice. My tests often broke
• PageObjects:
• represents a web page as a class
• the DOM elements on that page are its properties
• some basic interactions are its methods
• example:
./vendor/bin/codecept generate:pageobject Login
41. Best practice. My tests often broke
class LoginCest
{
public function tryToLoginAsAdmin(AcceptanceTester $I)
{
$I->amOnPage('/site/login');
$I->see('Login', 'h1');
$I->wantTo('try to login as admin with correct credentials');
$I->fillField('input[name="LoginForm[username]"]', 'admin');
$I->fillField('input[name="LoginForm[password]"]', 'admin');
$I->click('login-button');
$I->dontSeeElement('#login-form');
$I->expectTo('see user info');
$I->see('Logout');
}
}
42. Best practice. My tests often broke
namespace Page;
class Login
{
// include url of current page
public static $URL = '/site/login';
/**
* Declare UI map for this page here. CSS or XPath allowed.
*/
public static $form = '#login-form';
public static $usernameField = 'input[name="LoginForm[username]"]';
public static $passwordField = 'input[name="LoginForm[password]"]';
public static $formSubmitButton = 'login-button';
}
43. Best practice. My tests often broke
class LoginCest
{
public function tryToLoginAsAdmin(AcceptanceTester $I, PageLogin $loginPage)
{
$I->amOnPage($loginPage::$URL);
$I->seeElement($loginPage::$form);
$I->wantTo('try to login as admin with correct credentials');
$I->fillField($loginPage::$usernameField, 'admin');
$I->fillField($loginPage::$passwordField, 'admin');
$I->click($loginPage::$formSubmitButton);
$I->dontSeeElement($loginPage::$form);
$I->expectTo('see user info');
$I->see('Logout');
}
}
44. Best practice. My data are unstable
• try to search for stable elements on the website
• use fixtures instead of database dumps
• fixtures:
• sample data for tests
• data can be either generated, loaded from an array or taken
from a sample database
• usage with Db module:
$I->haveInDatabase('posts', array('title' => My title', 'body' => The body.'));
45. Best practice. My data are unstable
• use DataFactory module to generate the test data dynamically
• uses an ORM of your application to define, save and
cleanup data
• should be used with ORM or Framework modules
• requires package: "league/factory-muffin“
46. Best practice. My tests often broke
<?php
use LeagueFactoryMuffinFakerFacade as Faker;
$fm->define(User::class)->setDefinitions([
'name' => Faker::name(),
// generate email
'email' => Faker::email(),
'body' => Faker::text(),
// generate a profile and return its Id
'profile_id' => 'factory|Profile'
]);
• Generation rules can be defined in a factories file
47. Best practice. My tests often broke
modules:
enabled:
- Yii2:
configFile: path/to/config.php
- DataFactory:
factories: tests/_support/factories
depends: Yii2
• load factory definitions from a directory
48. Best practice. My data are unstable
• DataFactory module actions
• generate and save record:
$I->have('User');
$I->have('User', ['is_active' => true]);
• generate multiple records and save them:
$I->haveMultiple('User', 10);
• generate records (without saving):
$I->make('User');
49. Best practice. So many tests, so less
structure
• test code is source code and therefore should follow the same
rules
• reuse code
• extend AcceptanceTester class located inside the
tests/_support directory
• use StepObjects
• use PageObjects
50. Best practice. So many tests, so less
structure – Extend AcceptanceTester
class AcceptanceTester extends CodeceptionActor
{
// do not ever remove this line!
use _generatedAcceptanceTesterActions;
public function login($name, $password)
{
$I = $this;
$I->amOnPage('/site/login');
$I->submitForm('#login-form', [
'input[name="LoginForm[username]"]' => $name,
'input[name="LoginForm[password]"]' => $password
]);
$I->see($name, 'Logout');
}
}
51. Best practice. So many tests, so less
structure - StepObjects
• groups some common functionality for a group of tests
(for testing a part of a software: admin area, …)
• extends AcceptanceTester class
• example:
./vendor/bin/codecept generate:stepobject Admin
à generate a class in tests/_support/Step/Acceptance/Admin.php
52. Best practice. So many tests, so less
structure - StepObjects
namespace StepAcceptance;
class Admin extends AcceptanceTester
{
public function loginAsAdmin()
{
$I = $this;
// do login
}
}
53. Best practice. So many tests, so less
structure - StepObjects
class TestCest
{
function tryToTest(StepAcceptanceAdmin $I)
{
$I->loginAsAdmin();
// test something
}
}
54. Codeception: Nice to have
• session snapshots (for faster execution)
• share cookies between tests
• e.g. test user can stay logged in for other tests:
• $I->saveSessionSnapshot('login‘);
• $I->loadSessionSnapshot('login');
• group tests with @group annotation for test methods:
• e.g. @group important
• ./vendor/bin/codecept run acceptance -g important
55. Codeception: Nice to have
• before/after annotations
• example annotations
• dataProvider annotations
• environments
• dependencies
• multi session testing
• …
57. Codeception: Summary
• easy for developers but difficult for product owner
• layout tests missing
• should we use another tool?
58. Codeception: Summary
• Codeception is extendable
• solution: use module Visualception
• see https://github.com/Codeception/VisualCeption for more
information