ChiPy Spring 18 Mentorship Program — #1

About the Program:

Home, sweet home.

ChiPy, the Chicago Python User Group, is one of the largest interest groups for a programming language in the world. Each year in the spring and fall, they open up a mentorship program that allows hopeful coders to apply and be taken under the wing of a mentor to help them learn about Python, programming, and (hopefully!) working a project from start to end. I was lucky enough to be selected for the program and will chronicle my adventures here for you to read.

About Myself:

Objects in the photo are significantly less cool than they appear.

I am a software quality assurance engineer and have worked in technology teams that focused on both web-based platforms as well as Windows applications. In my time working in the field, I have acquired my first certification from the ISTQB (CTFL) and have been working at broadening my skillset. While I am very comfortable with manual testing, the wave of the future is certainly shifting toward automation testing. In order to become the best test engineer I can be, learning to get my hands dirty with code is a very fun but very necessary next step. So the project that I hope to complete for this program is an automation testing program that will function for both website testing as well as desktop UI testing.

For my first meeting, I met up at the Starbucks in Albany Park with my mentor, Ed, and talked over some Python topics. In trying to assess my skill level, Ed spent some time reviewing the things that I knew about Python and tried to figure out what gaps needed to be filled. My experience with Python has been relatively superficial; in my different jobs, I have had to utilize some pre-made Python scripts to do things in line with that particular job’s testing methods (for example, one such job had the testers utilize a script that pulled down commit builds for testing and installed them to the local machine in a single, smooth process). When it comes to building out entire programs on my own, however, I am a relative novice. Enter Ed to the rescue — a very kind, very knowledgeable person with the patience to help me navigate filling the gaps that independent reading and learning activities leave empty.

Summer or winter, this location is always full of caffeine-fueled fingers flying across keyboards.

We talked some about what I had in mind for a project. As a software QA engineer, I am always looking for ways to improve my testing processes and become more efficient at what I do without sacrificing the quality of the software. One of the major current waves in software testing is automation. While automated testing will never be a complete replacement for the careful, analytic eye of a well-trained human tester, the supplementary gain of having reliable, robust automated tests in place makes the endeavor of automation worthwhile. The difficulty with automation is that, while useful, the greater application of it is still very new. Every firm I have worked at in a technological capacity has been in the process of introducing automation to its development and testing teams. While I have some experience with automation in a few existing programs (such as Selenium IDE, SikuliX IDE, and some proprietary software), there is very little out in the way of performing both web automation testing as well as desktop application GUI testing.

The project that I had in mind was one that I felt would assist in my testing efforts, whether I worked in a webdev team or an application-oriented team. I wanted to create automated tests in Python and create a program that would house these tests and execute the test/launch the script for the tests from the program. A user could select from a list of tests and run one, the selected tests, or all of them. Planning ambitiously, a user could maybe also import their own tests, but the pre-made tests would come default with the program and anyone could run them.

To write the automated tests, I planned to import a module called PyAutoGUI. I experimented with this briefly a few months ago but did not get far with it. As far as creating a user interface, Ed suggested that I read into a module called wxPython.

My next steps are going to be drafting an idea of the visual appearance of the user interface, listing the functionalities I hope for it to have, making a set of example automated test cases in PyAutoGUI to come with the program, and reading over the resources that Ed and I spoke about this morning. I’m really excited for what will come next!

For our next meeting, Ed and I met up at a small coffee shop near my apartment on the northwest side of the city called Nighthawk — despite how trendy it is, it is very often a quiet enough place to work and collaborate while also getting an amazing caramel latte. I was able to take some time to figure out what sample test cases I wanted to build out using PyAutoGUI. I picked a well-known website to use in the test cases (thanks, Yahoo!) and set out drafting a set of light regression tests for basic functionality. Ed navigated me through getting some packages installed as well as creating my GitHub repository for the project — for all my coding needs.

Seriously, the caramel latte was the most important part. Coffee is life.

We spoke about the vision I had for what I hoped for and how to approach something like this from the beginning. Proof of concept was a good starting point — going over the details, defining what we wanted to do, and how to use the tools we had to make it happen. I also spent some time reviewing the documentation on the PyAutoGUI site and made sure my laptop was configured with all I needed.

Between now and our next meeting, my goal is to have the Python files for the test cases all written up and tucked away neatly in the /tests directory of my program, and to have some sketches done of what I imagine for the user interface and its expected functionalities and behaviors. So far, my mentor and I are off to a great start!