Reflecting on what I learned about test automation, how much testing I did in March 2020 and my further plans.
Testing Internship Update and Thoughts on My Progress
It's been a while since I wrote my last blog post in January 2020. It's been extremely difficult to find time for writing. I tried to spend as much time as possible practising Python and learning new TAU tools. I also must admit that I am not always as productive as I would want, especially in times when I stuck trying to get my scripts working. Anyways, I have some things to share and I have a few small achievements such as
- - my progress in Selenium Python tests
- - starting Jenkins online course
- - finishing Unix for MacOS users online course
- - first training session on API testing
- - updated LinkedIn page and resume
Learning Python and pytest
Well, I spent quite a large portion of the time I allocated for testing in favour of Python practice. I managed to complete around 40 automated tests. Not many, I know. However, I feel quite proud because I got them more or less stable (I know now, it's a never-ending story). I also applied some important tools and strategies such as Page Object Model, pytest fixtures, parametrization. I genuinely tried to make my tests meaningful, maintainable and stable. Along the way, I practised working in Unix shell and using Git and GitHub. I must say that I am starting to pick it I and feel more confident now.
Selenium Python Tests, EC2 instance and Jenkins
That's been in my Trello tasks for a long time and it looked quite scary thing to do because I knew very little about AWS EC2 and Jenkins. Yet, I got it working now. My Selenium tests are running on remote machine once a day. Pretty cool, to see how you automated your automated tests. AWS registration and launching an EC2 instance was the easiest part. Fortunately one of my friends and mentors who has 15+ years experience in testing helped me with setting up Jenkins. The last piece of work - tweaking scripts so that they can be run headless and passwords in my test are not exposed - I figured that out on my own (thank you, Google and StackOverflow).
Unix for MacOS users
I must admit, that was a really enjoyable and helpful course. First of all because before starting it, it was difficult to understand and use solutions that I found in articles and StackOverflow. If you are a beginner like me, find a good resource and learn Unix/Linux shell basics. Looking back to what I learned so far, I can list some topics which I found most helpful:
- - moving around filesystem
- - searching files and directories
- - ownership and permissions
- - command basics
- - environment variables
- - text file helpers
- - command aliases
- - configuring working environment
I tried different tools and approaches but nothing really worked for me. At some point, I started to save my notes in a simple markdown file on each course that I've done. I am planning to upload them on GitHub in the public repo so that I always have my notes at hand. You can find the link on my Resources page. Feel free to visit my profile: GitHub.
Note Taking in Markdown
I finally found a way to keep notes and organise them in a way that suits me. Here is my solution: Typora + markdown files + GitHub.
Typora is a great markdown editor with super clean UI and autogenerated table of contents for your markdown file. Once I created the file I usually put it in a separate folder in my git repositories and create an alias for quick access. I also use this approach for general note-taking. For example, when I tried to set up Jenkins on EC2 instance and run my Python scripts for the first time I listed main steps and saved all commands in .md file. Now I can review them any time and from any place. Sweet.
API Testing Training Session
If you read my previous posts you know that I was doing an Internship at Aerofiler as manual testing since July-August 2019. In March they kindly offered me to have a training session on REST API testing. They use Tavern as their integration testing framework. That was both very exciting and a little bit scary because API testing has always seemed like advanced area in testing, something too complicated for me which requires good coding skills... Well, by the time I am writing this blog post I changed my opinion. I grasped the basics of Selenium and Python and I am pretty sure I can learn API testing as well. At least I will be able to write basic tests, that's for sure. And as always, the more you practice the more confident you feel, no matter what you are learning.
So, Tavern uses pytest tests and the tests are written in Yaml. Very strong combination, because pytest is a very popular and mature framework and Yaml's syntaxis allows you to write very concise and clean tests, organise them in an easy to read and write structures.
It was hard in the beginning. I started to read tavern docs and tried to write short examples using different public APIs. And as I move forward it becomes a little bit easier. I guess at some point I will be able to write real API tests. Pretty exciting.
Job Search and Plans for the Next 3 Months
I share my progress with one of my friends, an experienced tester who often helps me with and advice and mentors me. And he told me a couple of times that I should start applying for testing positions. I that way I will learn faster because currently, I do testing only one full day (Monday) and a few hours on the weekend. The problem is that it seems to me that I am not ready for a real job. I am afraid, with this mindset I might never find a job. It's been almost a year since I decided to shift my career int testing. So I guess, I need to keep moving towards the next logical steps and do not allow myself stuck in one place.
What would be a good plan for the next 3 months for me? It depends on what's the goal. - Find an entry-level testing position. What do I need to do reach that goal?
- - Make a plan to organise and schedule my work effectively.
- - Keep learning test automation and doing my internship.
- - Every 1-2 weeks allocate some time for job search (during that time, it is important to put away all other tasks):
- - applying for entry-level positions
- - working on a resume and cover letter
- - preparing for an interview
- - maintaining GitHub, Twitter, LinkedIn, page, website
- - networking
- - Track my progress
Here is what I ended up with, my weekly schedule: