Add tests to make life easier.
Follow test driven development if you can. This will save you a lot of trouble later as you add more features.
I’d like to do this but keep finding I’m stuck trying to implement unit test elements due to the platform that I’m using. It has various state mechanisms, which make mock tests challenging. I find a way to make them work, and then make a change, and then the test can’t see any output. Grrrr. Frustrating.
Instead of fast and speedy unit testing I’m forced to use end-to-end testing instead. This is tedious. This is not fun. It means I can test the outputs. This is something I’d do anyways. However, it feels like more work at this time.
I find it tedious. However, I always learn more when I work on tests. I learn little things that I’d missed before. I’m also moving the work forward.
This is also better than always manually testing the app too.
This is a mobile app so there are differences between iOS and Android attributes. This makes everything twice as challenging, even when using cross-platform builds and tools. Slow and steady is the way.

This is code then test
Testing is better than no testing. It bugs me that I can’t write tests before the code. As I’m effectively testing the UI and the interactions with the database. It would be challenging to write this type of test before I coded the screen. Not impossible, but challenging. That is what I was able to do with basic screens, but was unable to as soon as state changes were added.
This is frustrating. It also looks like it leads to more thinking of how to load test data. Testing screens is fine, but that requires historical data to be added, which is database manipulation. This means import statements for the javascript, which has limitations in the testing tool I’m using. I’ll add that in later. Put it on the back burner for thinking about.
It would be good to tie these testing steps into a CI process too. That is not possible, yet. I would have to pay for a cloud provider to test builds in their cloud. That would be expensive as I often put small commits into GitHub to keep moving the app forward.
Ideally a small local test server will appear to do daily, or hourly builds for iOS and Android, which can then have the relevant UI tested. That will be a fun sub-project. That is for the future.
Make the time for tests
Every time I add and improve tests I learn more about the app and how it works. Tooling for testing is slow and sometimes flaky. Keep going and be on the lookout for new options too.
Testing seems slower than I want, but I do find that the time put into it helps me rerun tests more effectively the next time. This means the effort put in now pays off in the future as testing then is smoother. Testing is feedback, and feedback is good.
Testing now pays off for validating the accessibility components of the app. These will be required when we enter the app stores.
Taking the time for testing. You might not have the ‘ideal’ set up yet, but you can keep making steps in the right direction. Adding tests, and automating testing, then moving them into a CI pipeline helps build quality into your collaboration.
Do this in your team too so that everyone is aware of what’s needed for testing. Your team members also learn what’s required for building the testing components into the app too.
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.