Hamcrest Quick Start: Enhanced JUnit syntax and capabilities

How to use Hamcrest to make unit tests more expressive

How to use Hamcrest to increase unit testing capability

How to use Hamcrest to ease unit testing development

How to write and run custom Hamcrest matchers

Requirements

  • Basic abilities with Java and Junit.
  • Basic abilities with an IDE.

Description

JUnit is one of Java’s most popular unit testing frameworks.  Hamcrest is an additional layer that sits on top of JUnit, and it allows you to write expressive and developer-friendly unit tests.  In this course, you will learn which imports to use, how to write and run Hamcrest tests, how to use Hamcrest’s fundamental methods, and how to write your own custom Hamcrest matchers.  No prior knowledge of Hamcrest is necessary. The course is example-driven instruction and includes guided practice and quizzes to strengthen your understanding. Basic knowledge of Java programming and JUnit is required.

Who this course is for:

  • Developers looking to add Hamcrest into their unit testing
  • Students wishing to learn Hamcrest
  • Academics wishing to learn development tools used in industry
  • Software team leaders looking to evaluate Hamcrest as a development tool

Course content

5 sections • 18 lectures • 44m total lengthExpand all sections

Introduction8 lectures • 15min

  • Hamcrest source code.00:03
  • Introduction00:49
  • assertThat(), equalTo() methods02:07
  • String methods02:33
  • Number methods02:50
  • Expressive syntax01:33
  • Matcher practice 102:49
  • Matcher practice 201:58
  • Quiz 15 questions

Hamcrest In Greater Depth4 lectures • 12min

  • Array methods02:05
  • Collection methods04:23
  • Object methods, anything()03:56
  • Matcher practice 302:00
  • Quiz 26 questions

Custom Hamcrest Matchers4 lectures • 14min

  • Custom Hamcrest matcher: IsOdd03:46
  • Custom Hamcrest Matcher: Sum03:13
  • Write Your Own Custom Matcher: StartsWith03:40
  • Write Your Own Custom Matcher: AlphaNumeric03:32

Beans1 lecture • 3min

  • Methods for Java Beans02:38

Course Conclusion1 lecture • 1min

  • Course Conclusion00:35

Unit Testing en C#

Unit testing automatizado

Requirements

  • Conocimientos de .Net/C#

Description

Este curso está destinado a programadores C# con poca o ninguna experiencia en la automatización de pruebas. Presenta los conceptos básicos de pruebas unitarias. Si bien se utiliza la herramienta NUnit todos los conceptos son perfectamente aplicables a otras herramientas como MSTest y xUnit sin mayores dificultades. Más aún, los conceptos también pueden extrapolarse fácilmente a herramientas de otras tecnologías como JUnit (java), RubyTest(ruby) y SUnit(smalltalk).

El curso consta de dos horas de video, repartidas en varios videos de no más de 10 minutos cada uno. Adicionalmente a los videos el curso provee un conjunto de recursos que incluyen lecturas complementarias y ejercicios de programación con sus respectivas soluciones para que puedas comparar con tu propia solución. El curso también puede ser de gran utilidad para programadores que ya tengan experiencia haciendo pruebas automatizadas ya que además de los conceptos fundacionales de la materia, se ofrecen también varias recomendaciones surgidas de la experiencia de haber trabajado por más de 15 años en la temática.

Si bien puedes hacer el curso al ritmo que gustes, mi recomendación para un aprendizaje efectivo es que planifiques para hacerlo en una  semana, reservando 4 bloques de 1 hora en los cuales alternes videos, lecturas y ejercicios. Es fundamental que hagas los ejercicios, son pocos, pero te ayudarán a afianzar los conceptos.

Who this course is for:

  • Desarrollo de .Net/C#

Course content

3 sections • 15 lectures • 1h 57m total lengthExpand all sections

Fundamentos7 lectures • 51min

  • Fundamentos de unit testing08:06
  • Un primer test sin framework de testing08:05
  • Hacia un framework de testing06:53
  • Primeros pasos con NUnit06:49
  • Posibles resultados de un test09:28
  • NUnit, VSCode & Rider03:08
  • Test Runner & Nunit Test Adapter08:20

Convenciones de NUnit4 lectures • 35min

  • Un ejemplo más real de NUnit10:30
  • Inicialización y finalización de test en NUnit06:57
  • Test de situaciones de excepción07:47
  • Tipos de Asserts09:17

Organización de casos de prueba4 lectures • 33min

  • Generación de Casos de Prueba con NUnit08:28
  • Agrupamiento de test en NUnit07:23
  • Consideraciones de diseño de Casos de Prueba07:11
  • Cierre y Siguientes pasos09:35

Introduction to Unit Testing in C#

Understand how to create and run unit tests for a library in C#

Learn how to apply unit tests to a test driven development process

Gain knowledge on what to test and what NOT to test

Hands-on lab – create unit tests and apply them to a project

Requirements

  • Some programming experience. Understand the basic of creating and assigning variables and using logic comparisons
  • Able to use Visual Studio (Community or Code – free to install and use!).
  • Able to create simple methods in C# – understanding of flow control (if-else, while, for, foreach) and assignment of values to variables.

Description

Through the use of hands-on work, you will learn how to create and work with unit tests in C# using the Visual Studio integrated development environment. Get professional tips on creating, debugging, and improving your tests in a practical way.

The introduction uses a two iteration cycle to create unit tests that address the product code as it is being developed, giving you the basis for not only creating and improving your unit testing ability, but also pointing the way towards exercising these new concepts in BDD (Business/Behavior Driven Development) or TDD (Test Driven Development).

We do more than just talk about how to do this, we provide step-by-step labs detailing how to create your automation and how to improve it as we progress.

For this course, starter code projects are supplied, as well as finished projects you can adapt to fit your needs, or use for reference for further projects.

This course is designed this to help those who want to expand their capabilities in creating software test automation.

Whether you are a student, a manual tester, or are already a software test professional, this course can help you become more effective in your role.

Start your journey towards effective unit testing today!

Who this course is for:

  • Beginning software professionals looking to increase their skillsets
  • Software professionals who want to learn about unit tests and Test Driven Development

Course content

4 sections • 5 lectures • 32m total lengthExpand all sections

Introduction2 lectures • 5min

  • Introduction00:20
  • Setting Up04:55

Unit Testing, Iteration 11 lecture • 10min

  • Unit Testing, Iteration 110:06

Unit Testing, Iteration 21 lecture • 12min

  • Unit Testing, Iteration 212:10

Wrapping up1 lecture • 5min

  • Wrapping Up05:17

Software Testing Tutorial

What you learn in Software Testing Tutorial ?

Software testing basics

SDLC

Documentation testing

Testing models

About this Free Certificate Course

The Software Testing course is a 1-hour program that begins by giving you insights into the different phases of the software development life cycle (SDLC) and different models in SDLC. The testing course also includes answers to questions like what testing is and why it is essential. In the later part of the course, you will understand the strategic approach to testing, its different levels, and how to document the development process. Take up the assessment at the end of the course to test your skills and evaluate your gains to avail of the course completion certificate. 

After this free, self-paced, beginner’s guide to Software Testing, you can embark on your Software Engineering Career with the top-rated Postgraduate and Master’s Degree Programs and learn various concepts in depth with millions of aspirants across the globe!

SDLC

This module defines the Software Development Life Cycle and briefly discusses the various processes, from collecting requirements to maintaining the software. It later continues with helping you understand planning, designing, constructing, testing and maintenance. 

What is Testing?

Testing is a significant phase in software development. This module gives you a brief overview of the testing phase and its types.

Why do We Need Testing?

The necessity to test the software before it is deployed goes beyond just cost margins. In this module, you will understand why software testing is performed and be able to verify all the reasons while developing software. 

Models

This section will tell you about the famous waterfall, spiral, and V-models. At the end of this module, you can decide what model to use for your project depending on the requirements and the design. 

Strategic Approach

This section briefly explains different strategies used in different phases of SDLC. You will understand where and why system testing, validation, integration, and unit testing methods are used.

Strategic Approach

This section briefly explains different strategies used in different phases of SDLC. You will understand where and why system testing, validation, integration, and unit testing methods are used.

Introduction to Software Testing

Learn about the principles and methodologies used in software testing with this free online course.

This free online software testing course will familiarize you with the principles behind software and why it’s so important for software development. By the end of this course you will understand software testing processes, how to identify when to begin testing during a project’s development, verification and validation within testing, and different levels of software tests. This free online course will help you grow your skills as a developer.

In This Free Course, You Will Learn How To

  • Distinguish between verification and validation processes in testing
  • Describe the different levels of testing software
  • List methods that can be used to reduce errors in software programs
  • Discuss the pesticide effect in testing software
  • Describe unit testing and when it is performed
  • Identify the main approaches to designing a test case

Course Modules

MODULE 01

Introduction to Levels of Testing

In this module you will be introduced to software testing. You will learn about when testing begins in the software development life cycle. You will learn about the verification and validation processes of testing, about the different testing levels, and what the different levels test.

  • Learning Outcomes – Introduction to Levels of Testing
  • Introduction to Software Testing
  • Levels of Testing
  • Lesson Summary – Introduction to Levels of Testing

MODULE 02

Basic Concepts in Testing and Unit Testing

In this module you will learn about the pesticide effect for software testing. You will learn about the software development life cycle V model, its strengths and weaknesses. You will learn about the evolution of test automation, comparing the testing tools available. You will learn about the fault model and how it outlines the types of faults in the program. You will learn about test cases, and design and planning and strategies for test cases. Finally, you will learn about unit testing.

  • Learning Outcomes – Basic Concepts in Testing and Unit Testing
  • Basic Concepts in Testing – Part I
  • Basic Concepts in Testing – Part 2
  • Unit Testing
  • Lesson Summary – Basic Concepts in Testing and Unit Testing

MODULE 03

Course assessment

Introduction to Software Testing – Course Assessment

Course Description

This software testing course clearly discusses the principles of testing software and the methodologies involved in testing. Here, you will learn about the pesticide paradox in software testing as well as the strengths and weaknesses of the software development lifecycle V-model. You will also learn about the fault model and how it identifies the most importants types of faults in a program. You will then be introduced to test cases and the design, planning, and strategies used in a test case.


Next, the course will tackle unit testing and what parts of the program it tests, before showing you how to remove bugs from programs. You will then learn how to distinguish between the verification and validation processes in software testing. At every stage, the course is designed to expand your understanding of essential programming concepts and software development life cycles though simple, easy-to-follow lessons.


Upon completion, you will be able to describe the different levels of testing software, list methods that can be used to reduce errors in software programs, and describe the pesticide effect in testing software. If you are an aspiring computer programmer or IT developer, this will be a strong (as well as quick and free) boost for you résumé. So, start the course now, and you will be fully up-to-date with the best approaches for designing a test case in no time at all.

Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability

About this course

Software testinggets a bad rap for being difficult, time-consuming, redundant, and above all – boring. But in fact, it is a proven way to ensure that your software will work flawlessly andcan meet release schedules.

In a two-course series, we will teach you automated software testing in an inspiring way. We will show you that testing is not as daunting a task as you might think, and how automated testing will make you a better developer who programs excellent software.

This first course will teach you specification-based testing, boundary testing, test adequacy and code coverage, unit vs system testing, mock objects, design for testability, and test code quality.

This is a highly practical course. Throughout the lessons, you will test various programs by means of different techniques. By the end, you will be able to choose the best testing strategies for different projects.

If you are or want to become a five-star software developer, QA engineer, or software tester, join this course. Testing will never be the same again!

At a glance

  • Institution: DelftX
  • Subject: Computer Science
  • Level: Intermediate
  • Prerequisites:Introductory knowledge of programming, specifically with Java.
  • Language: English
  • Video Transcript: English
  • Associated programs:
    • Professional Certificate in Automated Software Testing
  • Associated skills: Software Quality (SQA/SQC), Software Testing, Unit Testing, Automation, Testability, System Testing, Test Automation, Code Coverage, Boundary Testing, Safety Assurance

What you’ll learn

  • How to test any software system using current state-of-the-arttechniques
  • How to derive test cases that deal with exceptional, corner, and bad-weather cases by means of several different techniques
  • The limitations of current testing techniques and how to decide on the best testing strategies for a given context
  • How to develop testable architectures and to write maintainable test code

Syllabus

Topic 1: Automated software testing

  • Understand some basic principles of testing and whyit requires creativity.
  • Get familiar withsome testing vocabulary, which improves our communication.
  • Devise our first set of tests for a Java program and automatethese testsusing JUnit.
  • Understand the differences between unit, integration, and system testing, as well as the testing pyramid.

Topic 2: Functional testing

  • Learn how to read a requirement and derive the partitions, which are the actual concrete tests we will perform to make sure our system works (we call it “partitioning” and “equivalent partitioning”).
  • Learn how to think about and test possible corner cases, as developersoften forget to deal with such cases (we call itboundary testing).
  • Get a few tips, based on experience, on common corner cases.

Topic 3: Structural testing and code coverage

  • Learn how to analyze the structure of your source code and derive meaningful tests.
  • Be able to use the most popular structural testing adequacy criteria, such as line coverage, branch coverage, and path coverage as well as to understand their differences.
  • Derive a minimal set of tests when your branches (e.g., ifs) are too complex.
  • Use a standard industry code coverage tool and interpret its results.

Topic 4: Testability and mock objects

  • Understand the differences between different test levels (e.g., unit, integration, and system tests)
  • Understand what makes a system more or less testable.
  • Propose refactoring opportunities for increasing testability.
  • Be able to apply mock objects in order to unit test a class.
  • Understand when not to apply mock objects and go for integration tests.

Topic 5 : Test code smells

  • Judge the internal code quality of your test suite and advice possible improvements.
  • Understand and avoid flaky tests.
  • Refactor and clean smelly test code.

More about this course

LICENSE

The course materials of this course are Copyright Delft University of Technology and are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) 4.0 International License.

Pragmatic Unit Testing in Java 8 with JUnit

Takeaway Skills

Learn how to effectively test Java applications using JUnit

Get to know the core quality principles of unit testing

Master writing cleaner and refactored JUnit tests

Course Overview

In this course, you will learn how to write a unit test for Java applications using JUnit. You’ll start by covering unit-testing foundations, which provide you with a starter set of information about writing basic tests in JUnit. You’ll learn about JUnit organization and assertions, and you’ll pick up a few core quality practices for unit testing such as the Right BICEP and the CORRECT way. Towards the end, the bigger design picture focuses on the relevance of design to unit testing and vice versa. You’ll refactor your tests, and you’ll learn how to use mock objects to deal with trouble-some dependencies.

Course Contents

  1. Before We Begin
  • Why This Course?
  • Course Structure
  • Why Unit Testing?

2. JUnit Test Foundations

  • Reasons to Write Unit Tests
  • Introduction to Building JUnit Test
  • Our First Passing Test
  • Arrange, Act, and Assert Your Way to a Test
  • Understanding What We’re Testing: The Profile Class
  • Let’s Write Tests
  • Initializing Tests with @Before Methods
  • Quiz on JUnit Test Bits

3. Digging Deeper into JUnit Assertions

  • Introduction to Assertions in JUnit
  • A Classic-Style Assertion: assertTrue
  • Hamcrest Assertions
  • Decorators
  • Comparing Two Floating-Point Numbers
  • Assertion Messages
  • Testing the Expected Exceptions
  • Expected Exceptions using JUnit
  • Quiz Time

4. Organizing Your Tests

  • Follow the AAA Pattern
  • Test Behaviors not Methods
  • Relationship Between Test and Production Code
  • Focused and Single-purpose Tests
  • Test Documentation
  • Using Annotations
  • Green Is Good
  • Quiz Time

5. Mastering Manic Mnemonics!

  • FIRST: Properties of Good Tests
  • [F]IRST: [F]ast
  • F[I]RST: [I]solate Your Tests
  • FI[R]ST: Good Tests Should Be [R]epeatable
  • FIR[S]T: [S]elf-Validating
  • FIRS[T]: [T]imely
  • Quiz Time

6. What to Test: The Right-BICEP

  • The Right-BICEP
  • [Right]-BICEP: Are the Results Right?
  • Right-[B]ICEP: Boundary Conditions
  • Right-B[I]CEP: Checking Inverse Relationships
  • Right-BI[C]EP: Cross-Checking Using Other Means
  • Right-BIC[E]P: Forcing Error Conditions
  • Right-BICE[P]: Performance Characteristics
  • Quiz time

7. Boundary Conditions: The CORRECT Way

  • The CORRECT Way
  • [C]ORRECT: [C]onformance
  • C[O]RRECT: [O]rdering
  • CO[R]RECT: [R]ange
  • COR[R]ECT: [R]eference
  • CORR[E][C]T: [C]ardinality and [E]xistence
  • CORREC[T]: [T]ime
  • Quiz time

8. The Bigger Design Picture

  • Refactoring to Cleaner Code
  • Finding Better Homes for Our Methods
  • Automated and Manual Refactorings
  • How much Refactoring?
  • Quiz time

9. Bigger Design Issues

  • SOLID class design principles
  • The SRP and Profile class
  • Command-query separation principle
  • Test Maintenance Cost
  • Other Design Thoughts
  • Quiz Time

10. Using Mock Objects

  • A Testing Challenge
  • Replacing Troublesome Behavior with Stubs
  • Changing Our Design to Support Testing
  • Simplifying Testing using a Mock Tool
  • One Last Simplification: Introducing an Injection Tool
  • What’s Important to Get Right When Using Mocks?
  • Quiz Time

11. Refactoring Tests

  • Searching for an Understanding
  • Test Smell: Unnecessary Test Code
  • Test Smell: Missing Abstractions
  • Test Smell: Irrelevant Information
  • Test Smell: Bloated Construction
  • Test Smell: Multiple Assertions
  • Test Smell: Irrelevant Details
  • Test Smell: Implicit Meaning and Misleading Organization
  • Adding a New Test
  • Quiz Time

12. The Bigger Unit-Testing Picture

  • Test-Driven Development
  • TDD Cycle
  • Smallest Possible Increment
  • Code Refactoring
  • Another Small Increment
  • Supporting Multiple Answers: A Small Design Detour
  • Expanding the Interface
  • Last Tests
  • Tests As Documentation
  • Quiz Time

13. Testing Some Tough Stuff

  • Testing Multithreaded Code
  • Extracting Application Logic
  • Redesigning the Threading Logic
  • Testing Databases
  • The Data Problem
  • Cleaning the Database and Mocking the Controller

14. Testing on a Project

  • Coming up to Speed
  • One Team, One Unit
  • Convergence with Continuous Integration
  • Code Coverage

15. Wrapping Up

  • Conclusion

16. Appendix – Setting up JUnit

  • IntelliJ IDEA
  • NetBeans

How You’ll Learn

Hands-on Coding Environments

You don’t get better at swimming by watching others. Coding is no different. Practice as you learn with live code environments inside your browser.

2x Faster Than Videos

Videos are holding you back. The average video tutorial is spoken at 150 words per minute, while you can read at 250. That‘s why our courses are text-based.

No Set-up Required

Start learning immediately instead of fiddling with SDKs and IDEs. It‘s all on the cloud.

Progress You Can Show

Built in assessments let you test your skills. Completion certificates let you show them off.

Software Testing and Automation Specialization

WHAT YOU WILL LEARN

  • Distinguish between verification and validation describing the key differences between them.
  • Write automated functional tests for both front-end and back-end code
  • Measure the fault-finding effectiveness of a functional test suite using mutation testing.
  • Defend program correctness through the use of formal methods, specifically proof obligations and model checking.

SKILLS YOU WILL GAIN

  • Black-box Testing Techniques
  • White-box Testing Techniques
  • Unit Testing
  • Static Analysis
  • Testing Automation
  • Writing Test Plans
  • Writing Defect Reports
  • Understanding of Testing Theory
  • Writing Tests
  • Testing Vocabulary
  • Executing Tests
  • Software Testing

About this Specialization

This Specialization is intented for beginning to intermediate software developers seeking to develop knowledge and skill in implementing testing techniques and tools in the development of their projects. Through four courses, you will cover black-box and white-box testing, automated testing, web & mobile testing, and formal testing theory and techniques, which will prepare to you to plan and perform effective testing of your software.

Applied Learning Project

Learners will build test plans, test suites, and test analysis reports. Learners will develop properties and assertions in code to facilitate automated test generation. Learners will also create pre-conditions for methods to facilitate formal proofs of correctness.

There are 4 Courses in this Specialization

COURSE1

Introduction to Software Testing

After completing this course, you will have an understanding of the fundamental principles and processes of software testing. You will have actively created test cases and run them using an automated testing tool. You will being writing and recognizing good test cases, including input data and expected outcomes.

After completing this course, you will be able to… – Describe the difference between verification and validation. – Explain the goal of testing. – Use appropriate test terminology in communication; specifically: test fixture, logical test case, concrete test case, test script, test oracle, and fault. – Describe the motivations for white and black box testing. – Compare and contrast test-first and test-last development techniques. – Measure test adequacy using statement and branch coverage. – Reason about the causes and acceptability of and poor coverage – Assess the fault-finding effectiveness of a functional test suite using mutation testing. – Critique black-box and white-box testing, describing the benefits and use of each within the greater development effort. – Distinguish among the expected-value (true), heuristic, consistency (as used in A/B regression), and probability test oracles and select the one best-suited to the testing objective. – Craft unit and integration test cases to detect defects within code and automate these tests using JUnit. To achieve this, students will employ test doubles to support their tests, including stubs (for state verification) and mocks (for behavioral verification) (https://martinfowler.com/articles/mocksArentStubs.html). This course is primarily aimed at those learners interested in any of the following roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you should have an understanding of the Java programming language (or any similar object-oriented language and the ability to pick up Java syntax quickly) and some knowledge of the Software Development Lifecycle.

COURSE2

Black-box and White-box Testing

After completing this course, learners will have an understanding of a variety of black-box and white-box testing techniques. The learner will have put this understanding into practice, creating effective sets of test cases (called a test suite) to properly exercise software for defect finding. The learner will have examined requirements for testability, created an oracle for automated testing, assessed fault-finding effectiveness of test suites, and generated inputs using a variety of techniques.

After completing this course, you will be able to: – evaluate testability of requirements – define testable units within a program specification – apply black-box test input selection methods – specifically boundary-value analysis, fuzzing, and random selection – and select the method most-suited to achieve the given testing objective – assess the fault-finding effectiveness of a functional test suite using mutation testing – use category partitioning to develop automated functional tests (with Cucumber) based on a given software specification – create an expected-value oracle from a program description to use within the generated tests In order to do well in this course, you should have experience with an OOP language (like Java), have an IDE installed (e.g., Eclipse), and be familiar with testing terminology (see Intro to Software Testing course within this specialization). we also expect a familiarity with the Software Development Lifecycle and the context in which the testing stage sits. This course is primarily aimed at those learners interested in any of the following roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast.

COURSE3

Introduction to Automated Analysis

This course introduces state-of-the-art techniques for automated analysis. Automated analysis encompasses both approaches to automatically generate a very large number of tests to check whether programs meet requirements, and also means by which it is possible to *prove* that software meets requirements and that it is free from certain commonly-occurring defects, such as divide-by-zero, overflow/underflow, deadlock, race-condition freedom, buffer/array overflow, uncaught exceptions, and several other commonly-occurring bugs that can lead to program failures or security problems. The learner will become familiar with the fundamental theory and applications of such approaches, and apply a variety of automated analysis techniques on example programs.

After completing this course, a learner will be able to: – Understand the foundations of automated verification: randomization and symbolic representations – Distinguish the strengths and weaknesses of random testing, symbolic analysis, static analysis, and model checking – Use a variety of state-of-the-art static analysis and automated testing tools for automated verification – Create executable requirements as an oracle suitable for automated testing and symbolic analysis – Understand how the choice of oracle affects fault-finding for automated analysis strategies. – Use automated testing to achieve full mutation coverage – Create a test plan that utilizes both manually-written tests and automated tests towards maximizing rigor, minimizing effort and time, and minimizing test costs. This course is intended for learners interested in understanding the principles of automation and the application of tools for analysis and testing of software This knowledge would benefit several typical roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you have some familiarity with the Software development Life-Cycle, an understanding of the fundamentals of software testing, similar to what is covered in the Introduction to Software Testing and Black-box and White-Box Testing Courses. Familiarity with an object-oriented language such as Java or ability to pick-up Java syntax quickly to write and modify code, and willingness to use tools and IDEs are assumed.

COURSE4

Web and Mobile Testing with Selenium

Modern applications that we build invariably have touch-points with its users through web-based and mobile platforms. Users interact with the software through these interfaces and the experiences those interfaces provide have a strong influence on the perceived quality of the software.

The pace at which modern applications deploy new versions and features call for careful prioritization of testing effort and rapid execution through automation. Techniques and methods for testing of such applications will be the focus of this course. We will cover key concepts relevant to testing of web and mobile platforms, underlying techniques and the use of Selenium as a framework for automating testing of such applications. The learner will gain a solid foundation in web and mobile testing principles and the ability to use a testing framework to automate test execution.

A Python project with coding framework and unit testing

Python basics and real world coding framework – organizing code, logging, error handling, config file, unit testing

Requirements

  • Basic programming skills and SQL knowledge required

Description

Learn how to code and unit test Python applications in a real world project. Go beyond the basics by solving a practical use case step by step. This course is designed for Python beginners who want to transition for academic background to a real world developer role !

Course Project :

You will be building a Python application to read data from files and store the data into PostgreSQL database. You will be creating REST endpoints using which external users will interact with your application data. All the industry standard best practices in terms of logging, error handling, config file, code structuring will be used in the application.

Course structure :

  • Python (3.9) and PyCharm IDE installation
  • Python basics – Get started with basic Python data types including List, Tuple and Dictionary
  • Organizing code with Classes and Modules – Understand core concepts of classes and packages
  • Python logging – Implement logging using basic config and file config
  • Python error handling – Learn how to handle exceptions.
  • Python PostgreSQL database interaction – Understand how to read and write to PostgreSQL using psycopg2
  • Create REST API using Python – Learn to create APIs using Python Flask framework
  • Reading configuration from property file – Learn how to avoid hardcoding of configurable properties
  • Unit testing – Learn to test your application using unittest package
  • Unit testing – Learn to test your application using PyTest package

You will learn the above concepts by building a real world file processing application. No prior Python knowledge required.

Prerequisites :

  • Basic programming skills
  • Basic knowledge of SQL queries

Who this course is for:

  • Python beginners who are getting ready for real world developer role

Course content