Always be improving your testing.
It annoys me that I’ve not done as much testing as I’d like to in this app I’m building. I’ve tried repeatedly to put testing in place, but always seem to hit a brick wall of one sort or another. This is not how it’s supposed to be.
I should be building up my test suites as I grow the application. I should be adding unit and integration/end-to-end tests at each phase of development. This is how I’ve always found it works in the past for development.

Testing is not always easy
Maybe this is just a mobile thing. Web and desktop development never seemed to have these challenges. Maybe too this is because it’s me on my own, and I’m missing someone with another perspective; someone to be a collaborator.
I’m working with a common mobile development library and framework, which points you towards Jest as a good unit testing framework. That worked well, until I added an sqlite3 database. Then it complained, for want of a way to mock this. After some trial and error, I found how to use another library to handle this. Hurrah!
That was short-lived. Other essential features required more mocks, and I’ve not found how to work around those yet. One thing, after another it seems.
As I like to use testing from the interface too, Appium plus Selenium seemed a good option. This path was slow and painful. Lots of libraries and drivers to install, as well as multiple terminals on the go. Lots of work to set up and run the tests, which goes against the whole principle of fast feedback through tests.
I also found it hard to write the Appium tests. The examples show multiple files so that the tests are easier to maintain. I could only ever get one file to run. This became larger and larger. You could see the technical debt rising with every new line I added. Not good.
Then I found Maestro for mobile testing. Much easier to use, and the desktop version integrates everything for you too. Now everything is falling into place. Almost. There are still problems.
Tests go smoother, but can still be flaky. Sometimes it all stops working: screen freezes and tests than passed a minute ago now fail. Weird. Again, too I can’t seem to set it to ‘run all the files’. Maybe that works better in the CLI. I’ll check that later.
Still, Maestro is working better than anything else so far. I’m able to test usability issues, and find errors, issues that I didn’t notice before. This is good. I can also see what was accidentally broken in new code. This is what testing is for, and works better than what I was doing before.
Tests are always needed
This path is still slower than using Jest, but is my best available current option. I can come back to the Jest testing later. I think I need to talk to people who do this more regularly than myself. I’m hoping a Javascript meet-up I recently found out about will help with this.
All in all the testing is helping improve the app and verify that things work as they should. I just wish it was less painful to put in place.
Now I need to add more tests to cover the different paths through the app, and confirm there are no surprises. Then automate all of this, so that it goes more smoothly.
Teach your people to explore their testing options. Also, persevered, even when it’s hard going. I paused, and regrouped, and then found other options. I knew it was needed, and it has helped the development.
This post is part of a project pulling together my materials and ideas about Teaching Team Collaboration: the Human-Side of Software Development for software development to students.
If you’d like to be notified of future posts, then please sign up for more using the adjacent form. When you sign up, then I’ll send you a free copy of the collaboration rules as a PDF from the book. You can also follow me on LinkedIn
The ideas above are from my book 101+ Ideas to Improve Team Collaboration, which covers all of these little things that students can do to improve their collaboration. Also available via Kindle.