Loading...
Hello & welcome
Test Craftsmanship
Learn More

Welcome to Test Craftsmanship

My goal is to share the knowledge from area of test automation and software testing and by that improving the software testing process, make it better, easier and more exiting.

Ideas and concepts

Finding the best approach and tools for assuring quality of tested application.

Coding & development

Creating test framework and automation tests covering end to end scenarios.

Designs tests & strategies

Planning what kind of tests should be used in which part of software development process to cover the application on most efficient way.

Improving testing process

Finding the best solution for improving test process.

Grzegorz Szczutkowski

Java System Test Developer


I have finished Automatics and Robotics studies at the AGH University of Science and Technology in Cracow. For more than a decade, I have been involved in software testing.  I was responsible for various testing areas starting from creating of the test process to test automation. In my job I am always looking for the best solutions of testing a given application, and thus I desire to accelerate the entire software development process. Specialist and passionate of automation mainly in the performance testing with JMeter tool and GUI tests using Java and Selenium Web Driver.

Form 2017 lecturer on University of Science and Technology in Cracow where I spread the knowledge about different practical aspect of software testing.

Java
JavaScript
Selenium WebDriver
JMeter
MySQL
Jenkins
TeamCity
Git
Amazon Web Service
Google Cloud Platform

Quality Assurance,
Course of study

Starting form 2017 on University of Science and Technology in Krakow (Poland) we can find new course of study connected to software quality assurance. Studies are dedicated to those who want to start the career as a Software tester or those who work on similar position but want to improve his/her knowledge by one of the topics below:

  • understanding of the software development process
  • working with databases
  • writing automation tests with use of java and Selenium WebDriver
  • working in agile
  • idea of using CI environment

I highly recommend those studies for those who are interested in software quality assurance. More details are available on official web page.


Articles

Post listed below has been created to make your live as a tester easier and more exiting.

Handling exceptions in Selenium WebDriver

 During many years of working with Selenium, I have noticed that sometimes even experienced testers do not understand how to handle exceptions thrown by Selenium. Handling them on wrong way can cause with flaky tests. In this article I will focus on most popular exceptions and explain why they are throwing and how to fix them.

Read more.

Comparing values in huge data sets

 In a big data world, from time to time, there is a need to check that data generated by our application changed as expected. Besides functional testing, it is good practice to verifying this functionality that before and after change data is the same or changed as expected. If we are talking about big data, even small data samples can have thousands of lines and hundreds of columns in each. In this article I will explain how we can deal with this very task.

Read more.

Resource management in tests

 I guess that in testing projects resource management can be also quite important and valid topic. Resources which goes into my mind in this case are for example users used for tests purposes. Usually there are no problems with creating users of tested application in/by tests. It changes when you use external (paid) service for managing users or access rights. In such case creating hundreds of users per day can be quite expensive. Solution for that can be reuse users created previously and distribute them to your tests. In this article I will explain how to do that with parallel tests execution.

Read more.

Integrate tests with the Allure report tool

 Many times I was asked how to create reports from automated tests, what tools use for that and how to connect those tests to manual test cases which are kept in any test management tool. I know that there are many ways of achieving that. In this article I will show you based on the Allure Report tool how to generate nice and descriptive report, which is clear for management and contains all important data like steps, screenshots, links to test management tool and bugs tracing tool. All that is automatically generated and quite easy to achieve.

Read more.

Client side certificate authentication in selenium tests

 Using client side certificate authentication is not very popular topic right now but I guess that it is still valid. It is also not very clear how to handle this scenario in the selenium tests. In this article I will explain how to create test framework which allows to authenticate with use of client side certificate authentication in Firefox browser.

Read more.

Setting up Selenium Grid with Docker

 Some time ago I have written article about setting up Selenium Grid on Aws EC2. Process described in that article maybe is not super complicated but to make it working correctly some commands need to be executed and some configuration done. It become more complicated when we need to change the browser version because driver version usually also has to be changed. In this article I will describe how to set up Selenium Grid environment with use of Docker and show how easy it is.

Read more.

File downloading and Selenium Grid

 Downloading files from web application is quite common use case. This feature usually is also very important. If those two sentences are valid in your case then you should consider to add automation tests for scenarios covering file downloading feature. When we want to test it locally (without selenium grid) then solution is super simple. If we have Selenium Grid in our test environment then we need more effort to make it work. In this article I will describe how this problem can be solved in java world and Fluentlenium as Selenium wrapper.

Read more.

Selenide vs Fluentlenium #2 - Page objects

 Creating test framework is quite long and complicated process in which we have to define the code structure. It is important because the better it is defined the easier maintaining will be. To make this process easier and code even more transparent we can use some features of the Selenide or Fluentlenium. In this article I will describe on example when those frameworks come to help us in the whole process of tests development and maintenance.

Read more.

Selenide vs Fluentlenium #1 - Creating simple scenario

 Selenium WebDriver is the most popular tool used for test automation of web applications. There are also a lot of frameworks which is based on Selenium but adds to it some useful functionality or solves some problems. This article is the first part of the series in which I compare two amazing Selenium based frameworks dedicated for Java language: Fluentlenium and Selenide. So if you are before making decision if the framework you will create should be based on Selenium WebDriver or any of its wrapper then this article is perfect for you. In this article we will focus on creating simple scenario in those two frameworks and describing the differences on that level.

Read more

Graphical validation of web elements

 WebDriver is dedicated to validate web pages from the HTML point of view, so we are checking if desired HTML tag is correctly located in the DOM tree and if it has a correct attributes. From time to time we need to validate a little bit more. One of examples is to validate if e.g. uploaded image is correctly scaled and cut - in short if it is displayed as we expect. In this article I will describe how we can do that with use of java and Selenium WebDriver.

Read more

Simulating AWS IoT in the E2E tests

 The Internet of Things connects the physical world to the Internet so that you can use data from devices. In the world of testing of the IoT there are many aspects which has to be taken into account staring from testing physical devices to testing whole system. I will assume that my company is responsible only for web application which collects data from devices. This web application is for me the whole product so I have to simulate connected devices. In this article I will show you haw to do it when AWS is used for IoT application.

Read more

EC2 as a Selenium Grid Node with Windows and IE

 In the previous article I have described how to configure Selenium Grid in the AWS infrastructure. Based on that we are able to run our tests against Google Chrome and Firefox. Unfortunately in many projects it is not enough - the requirement can be that the application have to work also in Internet Explorer. Running Selenium tests via Selenium Grid on Windows with IE is a little bit more complicated. Many times I wanted to do that I heard "don't do it" or just "it is not possible". In this article I will show that it is possible and describe how to do it.

Read more

Setting up Selenium Grid on AWS EC2

 AWS become more and more popular if we talk about testing infrastructure. EC2's can be used for Selenium Grid infrastructure and it can work perfectly when our CI environment is also on EC2 (it is not required). In this article I will describe how to configure Linux image on EC2 to run Selenium Grid Hub/Node and how to minimise the AWS costs by running those machines from CI tool before tests run.

Read more

Running tests against multiple browsers

 One of the advantages of Selenium Web Driver is possibility to running tests in different types of browsers. It is not rare situation that we want to run all our tests on all browsers supported by the tested application. We usually want to have possibility to run those tests from IDE only on one defined browser. In this article I will describe how to create your selenium web driver framework to be able to run all your tests from maven on different browsers and on default browser directly from IntelliJ Idea. To do that we will use maven, java and TestNG.

Read more

Page objects, chaining and passing web driver

 When we create our Selenium Web Driver framework we need to design many things. I assume that we want to use Page objects but we can decide if we want to use chaining in our tests. If answer for that question is 'yes' then next question appears... How to deal with passing web driver object between page objects? In this article I will describe how to create framework which uses Page objects, chaining and pass the driver under the hood.

Read more

Dealing with assertions in Selenium tests

 There are at least to approaches in locating assertions in the end to end tests written with use of Selenium. The firs and most popular solution is to use assertions methods directly in test case code but there are some problems with this solution: they looks strange when you use chaining, timing issues can't be solved in assertions. Other solution is to write assertions methods in your Page Object class. This solution looks great when you use chaining and can solve timing issues but from my point of view Page Object is not a best place for assertions. In this article I will describe the third solution which will be some kind of compromise that can handle timing issues, it looks nice with chaining and keep clear code structure in your framework.

Read more

Maven plugins which improve quality of your tests

 Creating new Selenium test framework is quite long process which depends on application size and complexity. Such framework can have hundreds of files, thousands lines of code and many dependencies. The framework should be treated as a separate project not just set of tests. When quality of your code is poor then maintenance become hard work and can be very time consuming. Project dependencies have also an impact on your framework quality. If we want to have it done right then everyone working on tests and the framework have to keep the code in the right shape. In this article I will describe how we can use maven plugins to control project dependencies and force everyone to keep java code clean and written in consistent style.

Read more

Taking screenshots only after failed tests

 Taking screenshots in functional tests of web applications is very useful functionality. It makes more sense when we do them only after test is failed and of course when we do the screenshot of the state of application when the issue occurred. Based on screenshot we can say if it is really the issue or just flaky test that have to be fixed. We can also easier investigate and indicate what is the real issue found by the test. In the article I will describe how we can build our selenium tests with use of java and junit to take screenshots only when test is failed.

Read more

E-mails validation in end-to-end tests of web application

 Have you ever considered to validate e-mail notifications send by web application in your end-to-end tests. This is not very popular approach because in most cases such validation can be done on other tests level and it requires external elements to be able to work with e.g. tests written in Selenium. If nevertheless it seems to be valuable for you then you should read this article.

Read more

Reflections and automatic way of obligatory fields validation

 If you have your own Selenium WebDriver framework with page objects and think that you really need easy way to mark with annotations fields that should be validated when page is displayed - I mean fields that have to be always visible on that very page. That kind of validation can be done on nice generic way with use of java and reflections. If you need such validation every time the page is displayed, then familiarize with described solution.

Read more

Preventing flaky tests in your automation suite

 There are many ways of dealing with unstable tests. Some of them are very complex and can be called more like a process but some are are very simple to introduce. In this article I will focus on one very simple and chip idea to introduce mainly if you using java and junit. The idea is in general to run newly created test several times (e.g. 50 times) before merging it to branch with tests run regularly.

Read more

How to categorise automation tests

 Many times in my career I was obligated to divide automation tests into suites. Dividing helps in many situation like moving our flaky tests into separate run or having smoke tests which won't take ours but still check major functions of tested aplications in short time. In this post I refer to automation tests writen in Java plus Selenium WebDriver and show how to easily create and use such categories with junit and maven.

Read more

Get in touch