Presented at .NET South West (2024-03-26)
https://www.meetup.com/dotnetsouthwest/events/299766807/
One of the greatest shifts in modern programming practices has been how programmers across many different domains, languages and environments have embraced unit testing. Good unit testing, however, is more than waving NUnit at your C# source. Tests help to make long-term product development cost effective rather than a cost centre, they underpin the effective flow of CI/CD and reduce failure demand on a team.
But the discussion of unit testing goes further than simply writing tests: what makes a good unit test? It is not enough to have tests; poor quality tests can hold back development just as good tests can streamline it. This session provides a perspective on what good unit tests (GUTs) can look like with a couple of examples.
Structure and Interpretation of Test CasesKevlin Henney
Presented at ACCU Cambridge (2018-10-23)
Throw a line of code into many codebases and it's sure to hit one or more testing frameworks. There's no shortage of frameworks for testing, each with their particular spin and set of conventions, but that glut is not always matched by a clear vision of how to structure and use tests — a framework is a vehicle, but you still need to know how to drive. The computer science classic, Structure and Interpretation of Computer Programs, points out that "Programs must be written for people to read, and only incidentally for machines to execute". The same is true of test code.
This talk takes a deep dive into unit testing, looking at examples and counterexamples across a number of languages and frameworks, from naming to nesting, exploring the benefits of data-driven testing, the trade-offs between example-based and property-based testing, how to get the most out of the common given–when–then refrain and knowing how far to follow it.
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Agile India
Writing and maintaining a suite of acceptance tests that can give you a high level of confidence in the behaviour and configuration of your system is a complex task. In this session, Dave will describe approaches to acceptance testing that allow teams to:
work quickly and effectively
build excellent functional coverage for complex enterprise-scale systems
manage and maintain those tests in the face of change, and of evolution in both the codebase and the understanding of the business problem.
This workshop will answer the following questions, and more:
How do you fail fast?
How do you make your testing scalable?
How do you isolate test cases from one-another?
How do you maintain a working body of tests when you radically change the interface to your system?
More details:
https://confengine.com/agile-india-2019/proposal/8539/acceptance-testing-for-continuous-delivery
Conference link: https://2019.agileindia.org
Scalable Learning Technologies for Big Data MiningGerard de Melo
These are slides of a tutorial by Gerard de Melo and Aparna Varde presented at the DASFAA 2015 conference.
As data expands into big data, enhanced or entirely novel data mining algorithms often become necessary. The real value of big data is often only exposed when we can adequately mine and learn from it. We provide an overview of new scalable techniques for knowledge discovery. Our focus is on the areas of cloud data mining and machine learning, semi-supervised processing, and deep learning. We also give practical advice for choosing among different methods and discuss open research problems and concerns.
This document discusses how Google tools can be used to measure, understand, and optimize digital assets through micro experiments. It highlights how Google Analytics allows deep insights into website and app traffic, marketing effectiveness, and performance. User data from various Google products can be analyzed to better understand user acquisition, engagement, loyalty, and monetization in order to personalize experiences and optimize campaigns, content, and monetization efforts through testing and machine learning. Constant testing and iteration is emphasized to continuously improve user experience and business metrics.
"How we killed 80% of features and increased outcomes of a/b testing by 100%"...Fwdays
In this talk, I’ll share our experience at Preply on how we approach the challenge of “Extracting the maximum business value, by keeping the product as simple as possible?”
We run more than 100 A/B tests simultaneously, meaning that there are no 2 users on the whole internet who would see the same version of Preply. I’ll share our vision on product development as well as technical details and challenges we faced during fostering and adopting the A/B testing culture at Preply. Among other topics I’ll cover:
How to build an A/B testing system and product that will handle more than 100 A/B tests simultaneously?
Can the A/B testing hurt the business?
Hidden costs of running a/b tests
Does it make sense to a/b test technical changes and refactorings?
How A/B testing can protect you from losing several million $ on a simple library update?
Team Capability Assessment PowerPoint Presentation Slides SlideTeam
Hiring the right team is extremely important for any business. So, utilize our team capability assessment PPT slideshow and attract top talent in your organization. Our team capability assessment presentation template helps you create a professional presentation where you can highlight the required capabilities and qualities your team members should have. It is important to recognize that most people will need some help and training to be able to complete the tasks and roles assigned to them. The members of your team should have an equal level of commitment towards the goals and objectives of your organization. They should be able to face any challenges which come in their way while achieving their set goals and targets. Our team capability assessment PPT deck helps you analyze your team’s performance as it includes ready-made templates by which you can measure the performance of your team. Showcase your aspects with this fully editable team capability assessment PowerPoint template. Our Team Capability Assessment PowerPoint Presentation Slides facilitate collation of information. It eases the burden of journalists.
Performance Review Process PowerPoint Presentation SlidesSlideTeam
Increase your performance graph in the market using this Performance Review Process PowerPoint Presentation Slides. This performance improvement plan professionally designed editable PPT deck contains twenty-two slides. You can maintain your business growth with the help of some key points which are mentioned in this performance improvement plan PowerPoint slide. The performance evaluation PPT includes various features such as employee assessments, promotion, appraisal, cost accounting, confidential records, etc. which are helpful in maintaining the reputation of the business. Use data-driven charts, graphs, diagrams, and professionally designed slides to improve your performance plan in minutes. The performance coaching presentation template helps you to review the productivity and profitability of your organization. This performance analysis PPT slideshow includes ready to use PowerPoint templates on systematic observations like decision making, visual feedback, data analysis, net fixed asset turnover, income statement, dividend per share, and profit after tax. Download this performance management presentation deck and accomplish your target in an effective manner.
Structure and Interpretation of Test CasesKevlin Henney
Presented at ACCU Cambridge (2018-10-23)
Throw a line of code into many codebases and it's sure to hit one or more testing frameworks. There's no shortage of frameworks for testing, each with their particular spin and set of conventions, but that glut is not always matched by a clear vision of how to structure and use tests — a framework is a vehicle, but you still need to know how to drive. The computer science classic, Structure and Interpretation of Computer Programs, points out that "Programs must be written for people to read, and only incidentally for machines to execute". The same is true of test code.
This talk takes a deep dive into unit testing, looking at examples and counterexamples across a number of languages and frameworks, from naming to nesting, exploring the benefits of data-driven testing, the trade-offs between example-based and property-based testing, how to get the most out of the common given–when–then refrain and knowing how far to follow it.
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Agile India
Writing and maintaining a suite of acceptance tests that can give you a high level of confidence in the behaviour and configuration of your system is a complex task. In this session, Dave will describe approaches to acceptance testing that allow teams to:
work quickly and effectively
build excellent functional coverage for complex enterprise-scale systems
manage and maintain those tests in the face of change, and of evolution in both the codebase and the understanding of the business problem.
This workshop will answer the following questions, and more:
How do you fail fast?
How do you make your testing scalable?
How do you isolate test cases from one-another?
How do you maintain a working body of tests when you radically change the interface to your system?
More details:
https://confengine.com/agile-india-2019/proposal/8539/acceptance-testing-for-continuous-delivery
Conference link: https://2019.agileindia.org
Scalable Learning Technologies for Big Data MiningGerard de Melo
These are slides of a tutorial by Gerard de Melo and Aparna Varde presented at the DASFAA 2015 conference.
As data expands into big data, enhanced or entirely novel data mining algorithms often become necessary. The real value of big data is often only exposed when we can adequately mine and learn from it. We provide an overview of new scalable techniques for knowledge discovery. Our focus is on the areas of cloud data mining and machine learning, semi-supervised processing, and deep learning. We also give practical advice for choosing among different methods and discuss open research problems and concerns.
This document discusses how Google tools can be used to measure, understand, and optimize digital assets through micro experiments. It highlights how Google Analytics allows deep insights into website and app traffic, marketing effectiveness, and performance. User data from various Google products can be analyzed to better understand user acquisition, engagement, loyalty, and monetization in order to personalize experiences and optimize campaigns, content, and monetization efforts through testing and machine learning. Constant testing and iteration is emphasized to continuously improve user experience and business metrics.
"How we killed 80% of features and increased outcomes of a/b testing by 100%"...Fwdays
In this talk, I’ll share our experience at Preply on how we approach the challenge of “Extracting the maximum business value, by keeping the product as simple as possible?”
We run more than 100 A/B tests simultaneously, meaning that there are no 2 users on the whole internet who would see the same version of Preply. I’ll share our vision on product development as well as technical details and challenges we faced during fostering and adopting the A/B testing culture at Preply. Among other topics I’ll cover:
How to build an A/B testing system and product that will handle more than 100 A/B tests simultaneously?
Can the A/B testing hurt the business?
Hidden costs of running a/b tests
Does it make sense to a/b test technical changes and refactorings?
How A/B testing can protect you from losing several million $ on a simple library update?
Team Capability Assessment PowerPoint Presentation Slides SlideTeam
Hiring the right team is extremely important for any business. So, utilize our team capability assessment PPT slideshow and attract top talent in your organization. Our team capability assessment presentation template helps you create a professional presentation where you can highlight the required capabilities and qualities your team members should have. It is important to recognize that most people will need some help and training to be able to complete the tasks and roles assigned to them. The members of your team should have an equal level of commitment towards the goals and objectives of your organization. They should be able to face any challenges which come in their way while achieving their set goals and targets. Our team capability assessment PPT deck helps you analyze your team’s performance as it includes ready-made templates by which you can measure the performance of your team. Showcase your aspects with this fully editable team capability assessment PowerPoint template. Our Team Capability Assessment PowerPoint Presentation Slides facilitate collation of information. It eases the burden of journalists.
Performance Review Process PowerPoint Presentation SlidesSlideTeam
Increase your performance graph in the market using this Performance Review Process PowerPoint Presentation Slides. This performance improvement plan professionally designed editable PPT deck contains twenty-two slides. You can maintain your business growth with the help of some key points which are mentioned in this performance improvement plan PowerPoint slide. The performance evaluation PPT includes various features such as employee assessments, promotion, appraisal, cost accounting, confidential records, etc. which are helpful in maintaining the reputation of the business. Use data-driven charts, graphs, diagrams, and professionally designed slides to improve your performance plan in minutes. The performance coaching presentation template helps you to review the productivity and profitability of your organization. This performance analysis PPT slideshow includes ready to use PowerPoint templates on systematic observations like decision making, visual feedback, data analysis, net fixed asset turnover, income statement, dividend per share, and profit after tax. Download this performance management presentation deck and accomplish your target in an effective manner.
Practical A/B Testing Statistics: 5 Tips To Help You Get Reliable DataHanapin Marketing
This document discusses best practices for running A/B tests, including collecting enough data over multiple weeks and business cycles, avoiding relying solely on significance levels to determine a winner, and integrating test data with web analytics. It also emphasizes formulating a clear hypothesis by outlining why a change is needed and how its impact will be measured. The presenter advocates getting familiar with key statistical concepts and learning statistics.
This session from the BCS EASG (British Computer Society Enterprise Architecture Special Group) conference, London, 26 June 2018, introduces a simple tool and technique that anyone can use to explore options for or in response to a business-change.
Points 200Term Paper Using Agile Project Management to Impleme.docxharrisonhoward80223
Points: 200
Term Paper: Using Agile Project Management to Implement a Complex Marketing Campaign System
Criteria
Unacceptable
Below 60% F
Meets Minimum Expectations
60-69% D
Fair
70-79% C
Proficient
80-89% B
Exemplary
90-100% A
Section 1: Written Project Plan
1. Write a ten to fifteen (10-15) page paper in which you:
1a. Suggest an Agile project management framework to the sponsors and justify why the framework you suggested is best suited for this project.
Weight: 5%
Did not submit or incompletely suggested an Agile project management framework to the sponsors and did not submit or incompletely justified why the framework you suggested is best suited for this project.
Insufficientlysuggested an Agile project management framework to the sponsors and insufficiently justified why the framework you suggested is best suited for this project.
Partially suggested an Agile project management framework to the sponsors and partially justified why the framework you suggested is best suited for this project.
Satisfactorily suggested an Agile project management framework to the sponsors and satisfactorily justified why the framework you suggested is best suited for this project.
Thoroughly suggested an Agile project management framework to the sponsors and thoroughly justified why the framework you suggested is best suited for this project.
1b. Develop a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Weight: 5%
Did not submit or incompletely developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Insufficiently developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Partially developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Satisfactorily developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Thoroughly developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
1c. Explain how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Weight: 5%
Did not submit or incompletely explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Insufficiently explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Partially explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Satisfactorily explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Thoroughly explained how to use Agile methods to scale the release plan you developed for retiring the legacy a.
Your Tests are Lying to You - Improving your Testing by Testing What Really M...Brian Childress
Do your tests keep you up at night? In this talk we’ll remove the mystery and fear around testing by understanding what a good test looks like. Through real world examples we’ll explore ways to improve your overall test coverage by identifying key areas in your application, unique edge cases and more. We’ll use some uncommon tools and approaches, like mutation testing, to literally test our tests and produce a much better test result. I’ll show you ways to test that actually matter. You will be able to tell a good test from a bad one and know which type of test to use for each scenario.
All testers know that we can identify many more test cases than we will ever have time to design and execute. The key problem in testing is choosing a small, “smart” subset from the almost infinite number of possibilities available. Join Lee Copeland to discover how to design test cases using formal black-box techniques, including equivalence class and boundary value testing, decision tables, state-transition diagrams, and all-pairs testing. Explore white-box techniques with their associated coverage metrics. Evaluate more informal approaches, such as random and hunch-based testing, and learn the importance of using exploratory testing to enhance your testing ability. Choose the right test case design approaches for your projects. Use the test results to evaluate the quality of both your products and your test designs.
The document discusses several approaches to address a machine learning model that is making unacceptably large errors on new data. These approaches include collecting more training samples, reducing or increasing the number of features, adding regularization, using a bigger model, and tuning hyperparameters.
An Introduction to Saville Comprehension Aptitude JobTestPrep
The document provides an overview of Saville's Comprehension Aptitude test, which assesses verbal, numerical, and error checking comprehension. It consists of either a single or swift test, with different time limits and question numbers for each subtest. The single test can be taken online or with paper, while the swift is always online. Test-takers should clarify the format and prepare using practice tests that simulate the actual exam structure and skills.
This document describes how to use the SKLL machine learning library to predict survival on the Titanic dataset. It shows how to:
1. Split the dataset into training and development sets for model training and evaluation.
2. Create a configuration file to specify learners (random forest, SVM, naive bayes), feature files, and input/output directories.
3. Run the experiment to train models on the training set and evaluate performance on the development set.
4. Examine and aggregate the evaluation results to compare learner performance.
Teachers should ensure tests have content validity by aligning test items to learning outcomes. A Table of Specifications (TOS) helps achieve this by specifying how learning outcomes will be assessed. The document discusses using a TOS to formulate test items that accurately measure intended learning outcomes based on time spent on each outcome. It provides examples of TOS and analyzes whether test items match what a TOS specifies.
Teachers should ensure test items align with learning outcomes to have content validity. A Table of Specifications (TOS) is a tool that specifies learning outcomes, time spent on each, and corresponding test items to achieve alignment. The document discusses constructing a TOS, applying outcomes-based education, analyzing sample TOS, and ensuring assessment tasks measure intended learning outcomes to have content validity.
Points 100Assignment 3 Presentation of Leadership and Manageme.docxLeilaniPoolsy
Points: 100
Assignment 3: Presentation of Leadership and Management Strategy
Criteria
Unacceptable
Below 60% F
Meets Minimum Expectations
60-69% D
Fair
70-79% C
Proficient
80-89% B
Exemplary
90-100% A
1. Develop a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Weight: 10%
Did not submit or incompletely developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Insufficiently developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Partially developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Satisfactorily developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Thoroughly developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
2. Choose two (2) different business leaders that you learned about from the previous two assignments, and describe two to three (2-3) fundamental aspects of each of their most important business philosophies. Provide examples of the application of such philosophies to support your response.
Weight: 20%
Did not submit or incompletely chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Did not submit or incompletely provided examples of the application of such philosophies to support your response.
Insufficiently chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Insufficiently provided examples of the application of such philosophies to support your response.
Partially chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Partially provided examples of the application of such philosophies to support your response.
Satisfactorily chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Satisfactorily provided examples of the application of such philosophies to support your response.
Thoroughly chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Thoroughly provided examples of the application of such philosophies to support your response.
3. Identify three to four (3-4) characteristics, three to four (3-4) traits, and three to four (3-4).
"Sagar Sir Coaching" is the best private tutor like coaching institute for CAT, MAT, SSC CGL, IBPS, Bank, Quantitative Aptitude, and other competitive exams in Kolkata, West Bengal, India. Introducing best teacher for CAT, MAT, SNAP - Sagar Sir: He has done his post-graduation at "Calcutta University". And He has cracked various competitive examinations (CAT 99% iler, SSC CGL). Having a rich experience of over 10 years of MAT, CMAT, SSC, CAT coaching in Kolkata. You can go for an individual class (One on one) or choose the batch of 10 students for your study at a nominal monthly fee. CAT Coaching In Kolkata. Best CAT Coaching In Kolkata. CAT Coaching Near Me. Best MAT Coaching In Kolkata, Best Online MAT Class In Kolkata
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Standardized tests aim to objectively measure students' mastery of prescribed competencies through standardized procedures and scoring. They are developed through a rigorous process including determining the test purpose, specifying objectives, designing test sections, developing and selecting test items, and evaluating items. Some advantages are they are pre-validated, can be administered to large groups efficiently, and scored quickly. Disadvantages include potential misuse and misunderstanding differences between direct and indirect testing.
I gave this presentation at Lean Kanban Asia-Pacific conference in Bangalore, India on December 11th, 2014 and at AgileDC on Washington, USA on October 21st, 2014.
I have several recent blog posts on this topic, This search link should get most of them: http://connected-knowledge.com/?s=lead+time. If you need one "best" post, here it is, Inside a Lead Time Distribution: http://connected-knowledge.com/2014/09/07/inside-lead-time-distribution/
1. Usability testing can provide quantitative data on efficiency, effectiveness, satisfaction, learning, and errors that can be used to calculate ROI.
2. It is important to recognize the margin of error in usability test results and not overstate findings. Larger sample sizes are needed for more accurate results.
3. Usability test metrics like time-on-task and task success rates can be converted to estimates of productivity increases and confidence levels for meeting effectiveness targets to quantify the benefits of improvements.
1. The document discusses testing approaches in Agile development where testing is not a separate phase but is integrated throughout development. It is everyone's responsibility with developers automating most tests.
2. Executable specifications that combine requirements and tests are recommended over traditional documents. Automated unit and integration tests are prioritized over automated functional UI tests.
3. Manual testing focuses on usability and exploratory testing to identify issues beyond scripted tests. Testing begins on the first day of development in short iterations.
Software testing with examples in Angular (and AngularJS)Paweł Żurowski
This document summarizes an agenda for a presentation on software testing with examples in Angular and AngularJS. The agenda includes introducing testing concepts like test-driven development (TDD) and best practices for testing. It also describes splitting the audience into groups to complete a quiz about testing beliefs and practices. The presentation covers general testing topics, live coding of TDD, and addresses common questions about testing.
The Three Pillars Approach to an Agile Testing StrategyTechWell
Far too often, organizations focus solely on the development teams and their technical practices as their agile adoption strategy. And then there’s the near constant focus on acquiring development tools. Often the testing activity and the testing teams are left behind in agile adoption, or even worse, they’re simply along for the ride. This is not an effective transformation strategy. Join experienced agile coach Bob Galen as he shares the Three Pillars framework for establishing a balanced strategic plan for quality and testing. The Three Pillars focus on development and test automation, testing practices, and collaboration activities that ensure you have a balanced approach to agile testing. Specifically, Bob explores risk-based testing, exploratory testing, paired collaboration around agile requirements, agile test design, and TDD-BDD-functional testing automation as tactics within a balanced framework. Leave with ideas to immediately initiate or re-tool a much more effective and balanced agile testing strategy.
Presented at Agile meets Architecture (2023-10-05)
Video at https://www.youtube.com/watch?v=LLEXAdO3X1o
One of the (most overlooked) principles of the Manifesto for Agile Software Development is that "Continuous attention to technical excellence and good design enhances agility". All too often, work that focuses on addressing technical issues is deprioritised in the name of focusing on business value.
Is there a case for technical excellence — in code, in architecture, in people — beyond its appearance on a might-as-well-be-hidden page on a manifesto that's over two decades old? Is technical excellence only the concern of technical roles? Is a good architecture in conflict with business value or a vehicle for it?
This session looks to go beyond buzzwords to build a case for technical excellence that appeals to all roles in a development organisation, noting that "The best architectures, requirements, and designs emerge from self-organizing teams".
This document provides contact information for Kevlin Henney, including his Twitter handle, Mastodon profile, about.me page, LinkedIn profile, Medium page, and email address. It also includes the dictionary definition of "empirical" as based on observation or experience rather than theory, and a quote from Neil Gaiman about learning by finishing things.
Practical A/B Testing Statistics: 5 Tips To Help You Get Reliable DataHanapin Marketing
This document discusses best practices for running A/B tests, including collecting enough data over multiple weeks and business cycles, avoiding relying solely on significance levels to determine a winner, and integrating test data with web analytics. It also emphasizes formulating a clear hypothesis by outlining why a change is needed and how its impact will be measured. The presenter advocates getting familiar with key statistical concepts and learning statistics.
This session from the BCS EASG (British Computer Society Enterprise Architecture Special Group) conference, London, 26 June 2018, introduces a simple tool and technique that anyone can use to explore options for or in response to a business-change.
Points 200Term Paper Using Agile Project Management to Impleme.docxharrisonhoward80223
Points: 200
Term Paper: Using Agile Project Management to Implement a Complex Marketing Campaign System
Criteria
Unacceptable
Below 60% F
Meets Minimum Expectations
60-69% D
Fair
70-79% C
Proficient
80-89% B
Exemplary
90-100% A
Section 1: Written Project Plan
1. Write a ten to fifteen (10-15) page paper in which you:
1a. Suggest an Agile project management framework to the sponsors and justify why the framework you suggested is best suited for this project.
Weight: 5%
Did not submit or incompletely suggested an Agile project management framework to the sponsors and did not submit or incompletely justified why the framework you suggested is best suited for this project.
Insufficientlysuggested an Agile project management framework to the sponsors and insufficiently justified why the framework you suggested is best suited for this project.
Partially suggested an Agile project management framework to the sponsors and partially justified why the framework you suggested is best suited for this project.
Satisfactorily suggested an Agile project management framework to the sponsors and satisfactorily justified why the framework you suggested is best suited for this project.
Thoroughly suggested an Agile project management framework to the sponsors and thoroughly justified why the framework you suggested is best suited for this project.
1b. Develop a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Weight: 5%
Did not submit or incompletely developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Insufficiently developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Partially developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Satisfactorily developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
Thoroughly developed a release plan through the use of graphical tools in Microsoft Word or Visio, or an open source alternative such as Dia.
1c. Explain how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Weight: 5%
Did not submit or incompletely explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Insufficiently explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Partially explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Satisfactorily explained how to use Agile methods to scale the release plan you developed for retiring the legacy applications.
Thoroughly explained how to use Agile methods to scale the release plan you developed for retiring the legacy a.
Your Tests are Lying to You - Improving your Testing by Testing What Really M...Brian Childress
Do your tests keep you up at night? In this talk we’ll remove the mystery and fear around testing by understanding what a good test looks like. Through real world examples we’ll explore ways to improve your overall test coverage by identifying key areas in your application, unique edge cases and more. We’ll use some uncommon tools and approaches, like mutation testing, to literally test our tests and produce a much better test result. I’ll show you ways to test that actually matter. You will be able to tell a good test from a bad one and know which type of test to use for each scenario.
All testers know that we can identify many more test cases than we will ever have time to design and execute. The key problem in testing is choosing a small, “smart” subset from the almost infinite number of possibilities available. Join Lee Copeland to discover how to design test cases using formal black-box techniques, including equivalence class and boundary value testing, decision tables, state-transition diagrams, and all-pairs testing. Explore white-box techniques with their associated coverage metrics. Evaluate more informal approaches, such as random and hunch-based testing, and learn the importance of using exploratory testing to enhance your testing ability. Choose the right test case design approaches for your projects. Use the test results to evaluate the quality of both your products and your test designs.
The document discusses several approaches to address a machine learning model that is making unacceptably large errors on new data. These approaches include collecting more training samples, reducing or increasing the number of features, adding regularization, using a bigger model, and tuning hyperparameters.
An Introduction to Saville Comprehension Aptitude JobTestPrep
The document provides an overview of Saville's Comprehension Aptitude test, which assesses verbal, numerical, and error checking comprehension. It consists of either a single or swift test, with different time limits and question numbers for each subtest. The single test can be taken online or with paper, while the swift is always online. Test-takers should clarify the format and prepare using practice tests that simulate the actual exam structure and skills.
This document describes how to use the SKLL machine learning library to predict survival on the Titanic dataset. It shows how to:
1. Split the dataset into training and development sets for model training and evaluation.
2. Create a configuration file to specify learners (random forest, SVM, naive bayes), feature files, and input/output directories.
3. Run the experiment to train models on the training set and evaluate performance on the development set.
4. Examine and aggregate the evaluation results to compare learner performance.
Teachers should ensure tests have content validity by aligning test items to learning outcomes. A Table of Specifications (TOS) helps achieve this by specifying how learning outcomes will be assessed. The document discusses using a TOS to formulate test items that accurately measure intended learning outcomes based on time spent on each outcome. It provides examples of TOS and analyzes whether test items match what a TOS specifies.
Teachers should ensure test items align with learning outcomes to have content validity. A Table of Specifications (TOS) is a tool that specifies learning outcomes, time spent on each, and corresponding test items to achieve alignment. The document discusses constructing a TOS, applying outcomes-based education, analyzing sample TOS, and ensuring assessment tasks measure intended learning outcomes to have content validity.
Points 100Assignment 3 Presentation of Leadership and Manageme.docxLeilaniPoolsy
Points: 100
Assignment 3: Presentation of Leadership and Management Strategy
Criteria
Unacceptable
Below 60% F
Meets Minimum Expectations
60-69% D
Fair
70-79% C
Proficient
80-89% B
Exemplary
90-100% A
1. Develop a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Weight: 10%
Did not submit or incompletely developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Insufficiently developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Partially developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Satisfactorily developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
Thoroughly developed a PowerPoint presentation in which you focus on overall best practices in organizational leadership.
2. Choose two (2) different business leaders that you learned about from the previous two assignments, and describe two to three (2-3) fundamental aspects of each of their most important business philosophies. Provide examples of the application of such philosophies to support your response.
Weight: 20%
Did not submit or incompletely chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Did not submit or incompletely provided examples of the application of such philosophies to support your response.
Insufficiently chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Insufficiently provided examples of the application of such philosophies to support your response.
Partially chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Partially provided examples of the application of such philosophies to support your response.
Satisfactorily chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Satisfactorily provided examples of the application of such philosophies to support your response.
Thoroughly chose two (2) different business leaders that you learned about from the previous two assignments, and described two to three (2-3) fundamental aspects of each of their most important business philosophies. Thoroughly provided examples of the application of such philosophies to support your response.
3. Identify three to four (3-4) characteristics, three to four (3-4) traits, and three to four (3-4).
"Sagar Sir Coaching" is the best private tutor like coaching institute for CAT, MAT, SSC CGL, IBPS, Bank, Quantitative Aptitude, and other competitive exams in Kolkata, West Bengal, India. Introducing best teacher for CAT, MAT, SNAP - Sagar Sir: He has done his post-graduation at "Calcutta University". And He has cracked various competitive examinations (CAT 99% iler, SSC CGL). Having a rich experience of over 10 years of MAT, CMAT, SSC, CAT coaching in Kolkata. You can go for an individual class (One on one) or choose the batch of 10 students for your study at a nominal monthly fee. CAT Coaching In Kolkata. Best CAT Coaching In Kolkata. CAT Coaching Near Me. Best MAT Coaching In Kolkata, Best Online MAT Class In Kolkata
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Standardized tests aim to objectively measure students' mastery of prescribed competencies through standardized procedures and scoring. They are developed through a rigorous process including determining the test purpose, specifying objectives, designing test sections, developing and selecting test items, and evaluating items. Some advantages are they are pre-validated, can be administered to large groups efficiently, and scored quickly. Disadvantages include potential misuse and misunderstanding differences between direct and indirect testing.
I gave this presentation at Lean Kanban Asia-Pacific conference in Bangalore, India on December 11th, 2014 and at AgileDC on Washington, USA on October 21st, 2014.
I have several recent blog posts on this topic, This search link should get most of them: http://connected-knowledge.com/?s=lead+time. If you need one "best" post, here it is, Inside a Lead Time Distribution: http://connected-knowledge.com/2014/09/07/inside-lead-time-distribution/
1. Usability testing can provide quantitative data on efficiency, effectiveness, satisfaction, learning, and errors that can be used to calculate ROI.
2. It is important to recognize the margin of error in usability test results and not overstate findings. Larger sample sizes are needed for more accurate results.
3. Usability test metrics like time-on-task and task success rates can be converted to estimates of productivity increases and confidence levels for meeting effectiveness targets to quantify the benefits of improvements.
1. The document discusses testing approaches in Agile development where testing is not a separate phase but is integrated throughout development. It is everyone's responsibility with developers automating most tests.
2. Executable specifications that combine requirements and tests are recommended over traditional documents. Automated unit and integration tests are prioritized over automated functional UI tests.
3. Manual testing focuses on usability and exploratory testing to identify issues beyond scripted tests. Testing begins on the first day of development in short iterations.
Software testing with examples in Angular (and AngularJS)Paweł Żurowski
This document summarizes an agenda for a presentation on software testing with examples in Angular and AngularJS. The agenda includes introducing testing concepts like test-driven development (TDD) and best practices for testing. It also describes splitting the audience into groups to complete a quiz about testing beliefs and practices. The presentation covers general testing topics, live coding of TDD, and addresses common questions about testing.
The Three Pillars Approach to an Agile Testing StrategyTechWell
Far too often, organizations focus solely on the development teams and their technical practices as their agile adoption strategy. And then there’s the near constant focus on acquiring development tools. Often the testing activity and the testing teams are left behind in agile adoption, or even worse, they’re simply along for the ride. This is not an effective transformation strategy. Join experienced agile coach Bob Galen as he shares the Three Pillars framework for establishing a balanced strategic plan for quality and testing. The Three Pillars focus on development and test automation, testing practices, and collaboration activities that ensure you have a balanced approach to agile testing. Specifically, Bob explores risk-based testing, exploratory testing, paired collaboration around agile requirements, agile test design, and TDD-BDD-functional testing automation as tactics within a balanced framework. Leave with ideas to immediately initiate or re-tool a much more effective and balanced agile testing strategy.
Presented at Agile meets Architecture (2023-10-05)
Video at https://www.youtube.com/watch?v=LLEXAdO3X1o
One of the (most overlooked) principles of the Manifesto for Agile Software Development is that "Continuous attention to technical excellence and good design enhances agility". All too often, work that focuses on addressing technical issues is deprioritised in the name of focusing on business value.
Is there a case for technical excellence — in code, in architecture, in people — beyond its appearance on a might-as-well-be-hidden page on a manifesto that's over two decades old? Is technical excellence only the concern of technical roles? Is a good architecture in conflict with business value or a vehicle for it?
This session looks to go beyond buzzwords to build a case for technical excellence that appeals to all roles in a development organisation, noting that "The best architectures, requirements, and designs emerge from self-organizing teams".
This document provides contact information for Kevlin Henney, including his Twitter handle, Mastodon profile, about.me page, LinkedIn profile, Medium page, and email address. It also includes the dictionary definition of "empirical" as based on observation or experience rather than theory, and a quote from Neil Gaiman about learning by finishing things.
Presented online for C++ on Sea (2020-07-17)
Video at https://www.youtube.com/watch?v=Bai1DTcCHVE
Lambdas. All the cool kid languages have them. But does lambda mean what C++ and other languages, from Java to Python, mean by lambda? Where did lambdas come from? What were they originally for? What is their relationship to data abstraction?
In this session we will into the history, the syntax, the uses and abuses of lambdas and the way in which lambda constructs in C++ and other languages do (or do not) match the original construct introduced in lambda calculus.
Presented online for javaBin (2020-04-14)
Video at https://www.youtube.com/watch?v=orcSUE0Jjdc
Lambdas. All the cool kid languages have them. But does ‘lambda’ mean what Java, JavaScript, etc. mean by ‘lambda’? Where did lambdas come from? What were they originally for? What is their relationship to data abstraction?
In this session we will look into the history, the syntax and the uses of lambdas and the way in which lambda constructs in Java and other languages do (or do not) match the original construct introduced in lambda calculus.
Presented at DevSum (2018-05-31)
The SOLID principles are often presented as being core to good code design practice. Each of S, O, L, I and D do not, however, necessarily mean what programmers expect they mean or are taught. By understanding this range of beliefs we can learn more about practices for objects, components and interfaces than just S, O, L, I and D.
This talk reviews the SOLID principles and reveals contradictions and different interpretations. It is through paradoxes and surprises we often gain insights. We will leave SOLID somewhat more fluid, but having learnt from them more than expected.
Presented at Foo Café (2019-03-21)
Video at https://www.youtube.com/watch?v=tLSKLLxrZyY
Programmers use coding katas to kick the tyres of their programming languages, paradigms and practices. Typically anchored in a TDD cycle, katas are simple problems that give programmers the opportunity to exercise deliberate practice and explore different approaches, whether programming style, pair programming or test-first programming.
But the simplicity can be deceptive, with many programmers tiring of these katas too soon, missing out on some of the more mind-bending and paradigm-expanding opportunities on offer.
This session will pick on a couple of katas and dig deeper into TDD, lambdas, language(s), (dys)functional programming and Alcubierre drive. It will present code in a variety of languages, highlight the weaknesses of some common mantras, play around with ideas — and blend code, humour and general nerdiness to be both an enjoyable and educational session.
Procedural Programming: It’s Back? It Never Went AwayKevlin Henney
This document discusses procedural programming and the iterative process of designing systems through modularization and testing. It provides examples of early programming languages like Fortran that used procedural approaches with GOTOs and examples of refining algorithms through iterative testing against specifications. The document emphasizes writing modular, testable code and iterating the design process through refinement based on tests and specifications.
Keynote present at Agile Tour Vienna (2018-10-06)
Velocity. Sprints. More points, more speed. An obsession with speed often overtakes the core values of agile software development. It’s not just development of software; it’s development of working software. Sprints are not about sprinting; they’re about sustainable pace. Time to market is less important than time in market. Full-stack development is normally a statement about technology, but it also applies to individuals and interactions. The full stack touches both the code and the world outside the code, and with that view comes responsibility and pause for thought. Doing the wrong thing smarter is not smart. The point of a team is its group intelligence not its numbers. Is scaling up the challenge, or is scaling down the real challenge? The distraction and misuse of speed, velocity, point-based systems, time, team size, scale, etc. is not the accelerant of agile development. Agility lies in experimentation, responsiveness and team intelligence.
Keynote presented at NewCrafts (2018-06-18)
Video available at https://vimeo.com/276832516
It has been said that immutability changes everything. But what does that mean in practice? What does it mean for existing code that looks more like the mutant apocalypse than an elegant application of mathematical thinking? Immutability can be an ideal that is hard to reach. Refactoring, on the other hand, is all about the art of the possible. In this talk we'll be clarifying motivation and exploring some approaches to help reducing state mutability in code.
Keynote presented at GOTO Chicago (2018-04-26)
Video available at https://www.youtube.com/watch?v=AbgsfeGvg3E
Everything is changing. Everything is new. Frameworks, platforms and trends are displaced on a weekly basis. Skills are churning.
And yet... Beneath this seemingly turbulent flow there is a slow current, strong and steady, changing relatively little over the decades. Concepts with a long history appear in new forms and fads and technologies. Principles are revisited. Ideas once lost to the mainstream are found again.
In this keynote we revisit the present through the past, looking at the enduring principles that shape programming languages, architecture, development practice and development process, the ideas that cycle round, each time becoming perhaps a little better defined, a little more mature, and look to see what else might be on the horizon.
Presented at SwanseaCon (2017-09-26)
We default to considering systems from an insider's perspective; the view from outside can be quite different. Can we apply this inversion to more than just requirements?
We may say we want testing, but what do we want from testing? We may say we want logging, but what do we want from logging? We may say we want clean code, but what do we want from clean code? We may say we want an agile process, but what do we want from an agile process? These are harder questions, but their answers can make for better solutions.
Presented at .NET South West (2017-07-25)
Code is basically made up of three things: names, spacing and punctuation. With these three tools a programmer needs to communicate intent, and not simply instruct. But if we look at most approaches to naming, they are based on the idea that names are merely labels, so that discussion of identifier naming becomes little more than a discussion of good labelling.
A good name is more than a label; a good name should change the way the reader thinks. A good name should describe structure with intention, as opposed to the affix-heavy approach common to many naming conventions in current use, where the addition of more prefixes and suffixes becomes homeopathic, diluting the meaning. Good naming is part of good design. This session looks at why and what it takes to get a good name.
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Kevlin Henney
Presented at code::dive (2016-11-15)
Video available at https://www.youtube.com/watch?v=brfqm9k6qzc
It is all to easy to dismiss problematic codebases on some nebulous idea of bad practice or bad programmers. Poor code, however, is rarely arbitrary and random in its structure or formulation. Systems of code, well or poorly structured, emerge from systems of practice, whether effective or ineffective. To improve code quality, it makes more sense to pick apart the specific practices and see their interplay — the cause — than to simply focus on the code itself — the effect. This talk looks at how a handful of coding habits, design practices and assumptions can systematically balloon code and compound its accidental complexity.
Thinking Outside the Synchronisation QuadrantKevlin Henney
Presented at code::dive (2016-11-16)
Video available at https://www.youtube.com/watch?v=yl25p91flLY
Ask programmers what comes to mind when you say concurrency and most are likely to say threads. Ask what comes to mind when you say threads and most are likely to say locks or synchronisation. These assumptions are so deeply held that they define and constrain how programmers are taught and think about concurrency: thread safety is almost synonymous with the avoidance of race conditions and the guarded protection of mutable state. But this is only one quadrant of four possibilities, a quadrant diagram partitioned by mutable–immutable along one axis and shared–unshared along another. Modern C++ supports programmers in all four quadrants, not just the synchronisation quadrant. From immutability to actors, this talk will take a look at patterns and practices that encourage thinking and coding outside the locked box.
Presented at GOTO Amsterdam (2017-06-13)
Video available at https://www.youtube.com/watch?v=YyhfK-aBo-Y
What is risk? Many people aren't sure, but it's not just uncertainty: risk is exposure to uncertainty.
Instead of just plastering over the cracks, security should also involve reducing the size and number of cracks, reducing the opportunities for cracks to appear, reducing the class of errors and oversights that can open a system to failure instigated from the outside. We can learn a lot from other kinds of software failure, because every failure unrelated to security can be easily reframed as a security-failure opportunity.
This is not a talk about access control models, authentication, encryption standards, firewalls, etc. This is a talk about reducing risk that lives in the code and the assumptions of architecture, reducing the risk in development practices and in the blind spot of development practices.
Keynote presented at SATURN (2nd May 2017)
Video available at https://www.youtube.com/watch?v=MS3c9hz0bRg
"It's just a detail." Have you ever said that or been told that? Whether it's about implementation or requirements, we often use the word detail to suggest that something is not important enough to worry about. There are so many things to worry about in software development that we need to prioritize—too much detail, not enough focus. The problem is that in software, the details matter because that is what software is: lots of details brought together in combination. If we don't focus on the details, we get debt, defects, and delays.
Presented at Agile Bath & Bristol (21st March 2017)
If software development is a co-operative game, as Alistair Cockburn observed, then what kind of game is Scrum? Lots of people are playing it — or say they are — but there seems to be some disagreement about what the point of the game is, how to play it and even, in many cases, what the rules are. This talk looks at Scrum and other agile approaches through the lens of nomic games, hypothesis-driven development and fun.
Presented at the European Bioinformatics Institute (17th March 2017)
We often talk about good code — that we would like to write it, that there isn't enough of it, that it should not be considered an optional attribute of a codebase. We often talk about it but, when it comes to being precise, we don't always agree what constitutes good code, nor do we necessarily share a common view on its value.
A spreadsheet error in a 2010 research paper by Carmen Reinhart and Kenneth Rogoff undermined their conclusion that high debt-to-GDP ratios correlate with lower economic growth. Specifically, the paper incorrectly excluded several countries with debt over 90% GDP from its analysis, weakening the claimed relationship between high debt and slow growth that was influential in policymaking. The error was revealed in 2013 through independent research, demonstrating how easily mistakes can propagate in spreadsheets and the importance of transparent data and methodology.
Seven Ineffective Coding Habits of Many ProgrammersKevlin Henney
Presented at DevTernity (1st December 2016)
Video available at https://www.youtube.com/watch?v=SUIUZ09mnwM
Habits help you manage the complexity of code. You apply existing skill and knowledge automatically to the detail while focusing on the bigger picture. But because you acquire habits largely by imitation, and rarely question them, how do you know your habits are effective? Many of the habits that programmers have for naming, formatting, commenting and unit testing do not stand up as rational and practical on closer inspection. This talk examines seven coding habits that are not as effective as programmers believe, and suggests alternatives.
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
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
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
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.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
Mobile app Development Services | Drona InfotechDrona Infotech
Drona Infotech is one of the Best Mobile App Development Company In Noida Maintenance and ongoing support. mobile app development Services can help you maintain and support your app after it has been launched. This includes fixing bugs, adding new features, and keeping your app up-to-date with the latest
Visit Us For :
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
UI5con 2024 - Bring Your Own Design SystemPeter Muessig
How do you combine the OpenUI5/SAPUI5 programming model with a design system that makes its controls available as Web Components? Since OpenUI5/SAPUI5 1.120, the framework supports the integration of any Web Components. This makes it possible, for example, to natively embed own Web Components of your design system which are created with Stencil. The integration embeds the Web Components in a way that they can be used naturally in XMLViews, like with standard UI5 controls, and can be bound with data binding. Learn how you can also make use of the Web Components base class in OpenUI5/SAPUI5 to also integrate your Web Components and get inspired by the solution to generate a custom UI5 library providing the Web Components control wrappers for the native ones.
4. So you’re writing unit tests?
Great!
Are they any good?
Kevlin Henney
“Program with GUTs”
medium.com/97-things/program-with-guts-828e69dd8e15
5. Do you have GUTs?
Kevlin Henney
“Program with GUTs”
medium.com/97-things/program-with-guts-828e69dd8e15
6. Very many people say “TDD”
when they really mean,
“I have good unit tests”
(“I have GUTs”?)
Alistair Cockburn
“The modern programming professional has GUTs”
8. Or have you landed someone
(future you?) with interest-
accumulating technical debt
in their testbase?
Kevlin Henney
“Program with GUTs”
medium.com/97-things/program-with-guts-828e69dd8e15
9. What do I mean by good?
Kevlin Henney
“Program with GUTs”
medium.com/97-things/program-with-guts-828e69dd8e15
10. We think in generalities,
but we live in detail.
Alfred North Whitehead
29. A year divisible by 4 is a leap year
A year divisible by 400 is a leap year
A year not divisible by 4 is not a leap year
A year divisible by 100 is not a leap year
30. [Test] public void
A_year_divisible_by_4_is_a_leap_year()
[Test] public void
A_year_divisible_by_400_is_a_leap_year()
[Test] public void
A_year_not_divisible_by_4_is_not_a_leap_year()
[Test] public void
A_year_divisible_by_100_is_not_a_leap_year()
48. A failing test should tell you exactly what is
wrong quickly, without you having to spend a lot
of time analyzing the failure.
This means...
Marit van Dijk
“Use Testing to Develop Better Software Faster”
medium.com/97-things/use-testing-to-develop-better-software-faster-9dd2616543d3
49. Each test should test one thing.
Marit van Dijk
“Use Testing to Develop Better Software Faster”
medium.com/97-things/use-testing-to-develop-better-software-faster-9dd2616543d3
50. Use meaningful, descriptive names.
Don’t just describe what the test does either (we
can read the code), tell us why it does this. This
can help decide whether a test should be
updated in line with changed functionality or
whether an actual failure that should be fixed
has been found.
Marit van Dijk
“Use Testing to Develop Better Software Faster”
medium.com/97-things/use-testing-to-develop-better-software-faster-9dd2616543d3
51. Never trust a test you haven’t seen fail.
Marit van Dijk
“Use Testing to Develop Better Software Faster”
medium.com/97-things/use-testing-to-develop-better-software-faster-9dd2616543d3
52. public class Leap_year_spec
{
public class A_year_is_a_leap_year
{
[Test]
public void if_it_is_divisible_by_4_but_not_by_100()
[Test]
public void if_it_is_divisible_by_400()
}
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4()
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
53. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
{
[Test]
public void if_it_is_divisible_by_4_but_not_by_100()
[Test]
public void if_it_is_divisible_by_400()
}
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4()
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
54. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
{
[Test]
public void if_it_is_divisible_by_4_but_not_by_100()
[Test]
public void if_it_is_divisible_by_400()
}
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4()
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
55. Nat Pryce & Steve Freeman
Are your tests really driving your development?
For tests to drive development they must do
more than just test that code performs its
required functionality: they must clearly express
that required functionality to the reader.
That is, they must be clear specifications of the
required functionality.
57. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4()
{
Assert.IsFalse(IsLeapYear(2023));
}
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
58. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4()
{
Assert.IsFalse(IsLeapYear(2023));
Assert.IsFalse(IsLeapYear(2022));
Assert.IsFalse(IsLeapYear(1999));
Assert.IsFalse(IsLeapYear(3));
}
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
59. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
{
[TestCase(2023)]
[TestCase(2022)]
[TestCase(1999)]
[TestCase(3)]
public void if_it_is_not_divisible_by_4(int year)
{
Assert.IsFalse(IsLeapYear(year));
}
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
60. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4(
[Values(2023, 2022, 1999, 3)] int year)
{
Assert.IsFalse(IsLeapYear(year));
}
[Test]
public void if_it_is_divisible_by_100_but_not_by_400()
}
}
61. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
{
[Test]
public void if_it_is_divisible_by_4_but_not_by_100(
[Values(2024, 2016, 1984, 4) int year)
[Test]
public void if_it_is_divisible_by_400(
[Range(400, 4000, 400)] int year)
}
public class A_year_is_not_a_leap_year
{
[Test]
public void if_it_is_not_divisible_by_4(
[Values(2023, 2022, 1999, 3)] int year)
[Test]
public void if_it_is_divisible_by_100_but_not_by_400(
[Values(2100, 1900, 1800, 100)] int year)
}
}
66. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
public class A_year_is_not_supported
{
[Test]
public void if_it_is_0()
{
Assert.Throws<ArgumentOutOfRangeException>(() => IsLeapYear(0));
}
}
}
67. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
public class A_year_is_not_supported
{
[Test]
public void if_it_is_0()
{
Assert.Catch<ArgumentOutOfRangeException>(() => IsLeapYear(0));
}
}
}
68. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
public class A_year_is_not_supported
{
[Test]
public void if_it_is_0()
{
Assert.Catch<ArgumentOutOfRangeException>(() => IsLeapYear(0));
}
[Test]
public void if_it_is_negative(
[Values(-1, -4, -100, -400)] int year)
{
Assert.Catch<ArgumentOutOfRangeException>(() => IsLeapYear(year));
}
}
}
69. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
public class A_year_is_not_supported
{
[Test]
public void if_it_is_0()
{
Assert.Catch<ArgumentOutOfRangeException>(() => IsLeapYear(0));
}
[Test]
public void if_it_is_negative(
[Values(-1, -4, -100, -400, int.MinValue)] int year)
{
Assert.Catch<ArgumentOutOfRangeException>(() => IsLeapYear(year));
}
}
}
70. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
public class A_year_is_supported
public class A_year_is_not_supported
}
71. namespace Leap_year_spec
{
public class A_year_is_a_leap_year
public class A_year_is_not_a_leap_year
public class A_year_is_supported
{
[Test]
public void if_it_is_positive(
[Values(1, 10000, int.MaxValue)] int year)
{
Assert.DoesNotThrow(() => IsLeapYear(year));
}
}
public class A_year_is_not_supported
}
73. namespace Leap_year_spec
public class A_year_is_a_leap_year
public void if_it_is_divisible_by_4_but_not_by_400()
public void if_it_is_divisible_by_400()
public class A_year_is_not_a_leap_year
public void if_is_not_divisible_by_4()
public void if_it_is_divisible_by_100_but_not_by_400()
public class A_year_is_supported
public void if_it_is_positive()
public class A_year_is_not_supported
public void if_it_is_0()
public void if_it_is_negative()
74. namespace Leap_year_spec
public class A_year_is_a_leap_year
public void if_it_is_divisible_by_4_but_not_by_400()
public void if_it_is_divisible_by_400()
public class A_year_is_not_a_leap_year
public void if_is_not_divisible_by_4()
public void if_it_is_divisible_by_100_but_not_by_400()
public class A_year_is_supported
public void if_it_is_positive()
public class A_year_is_not_supported
public void if_it_is_0()
public void if_it_is_negative()
77. public class Queue<T>
{
...
public Queue(int capacity) ...
public int Capacity => ...
public int Length => ...
public bool Enqueue(T toBack) ...
public bool Dequeue(out T fromFront) ...
}
78. Nat Pryce & Steve Freeman
Are your tests really driving your development?
Tests that are not written with their role as
specifications in mind can be very confusing to
read. The difficulty in understanding what they
are testing can greatly reduce the velocity at
which a codebase can be changed.
79. public class QueueTests
{
[Test]
public void TestConstructor() ...
[Test]
public void TestCapacity() ...
[Test]
public void TestLength() ...
[Test]
public void TestEnqueue() ...
[Test]
public void TestDequeue() ...
}
80. public class QueueTests
{
[Test]
public void Constructor() ...
[Test]
public void Capacity() ...
[Test]
public void Length() ...
[Test]
public void Enqueue() ...
[Test]
public void Dequeue() ...
}
81. public class QueueTests
{
[Test]
public void CanBeConstructed() ...
[Test]
public void HasCapacity() ...
[Test]
public void HasLength() ...
[Test]
public void CanBeEnqueuedOn() ...
[Test]
public void CanBeDequeuedFrom() ...
}
82. public class QueueTests
{
[Test]
public void CanSometimesBeConstructed() ...
[Test]
public void HasCapacity() ...
[Test]
public void HasLength() ...
[Test]
public void CanSometimesBeEnqueuedOn() ...
[Test]
public void CanSometimesBeDequeuedFrom() ...
}
84. namespace Queue_spec
public class Creating_a_queue
public void leaves_it_empty()
public void preserves_positive_bounding_capacity()
public void fails_with_non_positive_bounding_capacity()
public class Enqueuing_on
public void an_empty_queue_makes_it_longer()
public void a_non_empty_queue_makes_it_longer()
public void a_non_full_queue_up_to_capacity_makes_it_full()
public void a_full_queue_is_ignored()
public class Dequeuing_from
public void an_empty_queue_is_ignored_with_default_value()
public void a_non_empty_queue_gives_values_in_order_enqueued()
public void a_full_queue_makes_it_non_full()
85. namespace Queue_spec
public class Creating_a_queue
public void leaves_it_empty()
public void preserves_positive_bounding_capacity()
public void fails_with_non_positive_bounding_capacity()
public class Enqueuing_on
public void an_empty_queue_makes_it_longer()
public void a_non_empty_queue_makes_it_longer()
public void a_non_full_queue_up_to_capacity_makes_it_full()
public void a_full_queue_is_ignored()
public class Dequeuing_from
public void an_empty_queue_is_ignored_with_default_value()
public void a_non_empty_queue_gives_values_in_order_enqueued()
public void a_full_queue_makes_it_non_full()
86. public class Enqueuing_on
public void an_empty_queue_makes_it_longer(string value)
{
var queue = new Queue<string>(2);
var enqueued = queue.Enqueue(value);
Assert.IsTrue(enqueued);
Assert.AreEqual(1, queue.Length);
}
87. public class Enqueuing_on
public void an_empty_queue_makes_it_longer(string value)
{
var queue = new Queue<string>(2);
var enqueued = queue.Enqueue(value);
Assert.IsTrue(enqueued);
Assert.AreEqual(1, queue.Length);
}
89. public class Enqueuing_on
public void an_empty_queue_makes_it_longer(string value)
{
// Arrange:
var queue = new Queue<string>(2);
// Act:
var enqueued = queue.Enqueue(value);
// Assert:
Assert.IsTrue(enqueued);
Assert.AreEqual(1, queue.Length);
}
90. public class Enqueuing_on
public void an_empty_queue_makes_it_longer(string value)
{
// Establish precondition for operation:
var queue = new Queue<string>(2);
// Perform operation of interest:
var enqueued = queue.Enqueue(value);
// Confirm postcondition of operation:
Assert.IsTrue(enqueued);
Assert.AreEqual(1, queue.Length);
}
91. public class Enqueuing_on
public void an_empty_queue_makes_it_longer(string value)
{
// Given:
var queue = new Queue<string>(2);
// When:
var enqueued = queue.Enqueue(value);
// Then:
Assert.IsTrue(enqueued);
Assert.AreEqual(1, queue.Length);
}
92. Thinking in States
In most real-world situations, people’s
relaxed attitude to state is not an issue.
Unfortunately, however, many
programmers are quite vague about
state too — and that is a problem.
Niclas Nilsson
97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_84
95. namespace Queue_spec
public class A_new_queue
public void is_empty()
public void preserves_positive_bounding_capacity()
public void fails_with_non_positive_bounding_capacity()
public class An_empty_queue
public void ignores_dequeuing_with_default_value()
public void becomes_non_empty_when_value_enqueued()
public class A_non_empty_queue
public class that_is_not_full
public void becomes_longer_when_value_enqueued()
public void becomes_full_when_enqueued_up_to_capacity()
public class that_is_full
public void ignores_further_enqueued_values()
public void becomes_non_full_when_dequeued()
public void dequeues_values_in_order_enqueued()
96. namespace Queue_spec
public class A_new_queue
public void is_empty()
public void preserves_positive_bounding_capacity()
public void fails_with_non_positive_bounding_capacity()
public class An_empty_queue
public void ignores_dequeuing_with_default_value()
public void becomes_non_empty_when_value_enqueued()
public class A_non_empty_queue
public class that_is_not_full
public void becomes_longer_when_value_enqueued()
public void becomes_full_when_enqueued_up_to_capacity()
public class that_is_full
public void ignores_further_enqueued_values()
public void becomes_non_full_when_dequeued()
public void dequeues_values_in_order_enqueued()
98. Given can be used to group
tests for operations with
respect to common
initial state
99. When can be used to group
tests by operation,
differentiated by initial
state or outcome
100. Then can be used to group
tests by common
outcome, regardless of
initial state
101. I hope that’s been useful.
You’re off to do revisit some
tests?
OK, catch you later.
Kevlin Henney
“Program with GUTs”
medium.com/97-things/program-with-guts-828e69dd8e15