Lessons Learned: Unexpected Turns on My ODK-X Android Testing Adventure
Adaptability Fuels Learning in Software Development
Introduction
Diving into the world of Android testing for ODK-X has been an exhilarating journey, filled with both triumphs and unexpected detours. This week's theme, "Modifying Expectations," perfectly captures my experience so far. While some initial goals needed adjustments, the process has fueled my learning and solidified the value of adaptability in software development.
Project and Initial Timeline
For those unfamiliar with my project, I'm creating tests for ODK-X Android tools to ensure the reliability and functionality of the Survey, Tables, and Services apps. This involves writing tests, setting up a testing environment, conducting manual and automated tests, documenting the process, and iterating based on feedback.
My initial project timeline, outlined in my project timeline proposal, detailed a phased approach focusing on Android tests for the ODK-X Android Tool Suites. The project unfolded in stages, with the first half dedicated to:
Weeks 1-3: Selecting features for testing, designing test cases, and setting up a realistic testing environment.
Weeks 4-6: Implementing and executing manual tests, identifying and addressing deviations, and creating new test coverages.
Progress and Achievements
While I have diligently followed these steps, there have been some adjustments along the way, leading to some exciting achievements.
I successfully identified key features across the Survey and Tables apps for testing and established a reliable testing environment that mimics real-world user interactions. I have also designed and implemented detailed test cases for the Survey top and Tables app bars, focusing on recent code changes and user interface elements. I also have maintained documentation of the testing activities, results, and encountered issues throughout the process.
Facing Challenges and Embracing Learning
The unexpected is a natural part of software development, as I discovered during manual testing. Encountering issues with existing service UI tests presented a hurdle, but it ultimately pushed me to create new Espresso tests for the Survey and Tables apps. This highlights the importance of adapting your approach based on unforeseen obstacles, a key takeaway from this experience
Specific Challenges
Creating and executing tests, especially for the first time, has presented its challenges. Some specific examples include:
Debugging View Matching Issues: Certain Survey App tests initially failed on Circle CI due to view matching issues.
Navigating a Complex Codebase: The complexity of the ODK-X codebase made fixing some broken tests more challenging than anticipated. For example, some tests initially passed but started failing after emulator updates, necessitating further investigation and adjustments.
Time Management: Balancing the time spent on testing and conducting research has been a learning curve in itself.
Adapting Priorities and Continued Progress
In collaboration with my fantastic mentors, we have revised the priorities to focus on creating new test coverage for the remaining weeks. While this is a slight deviation from the original plan, it ensures my contributions are highly valuable and impactful for the ODK-X project.
Reflections and Learnings
If I were to begin the project again, I would approach it in much the same way. The additional time spent understanding the complexities of the ODK-X codebase and the challenges of testing has been a valuable investment. This experience has significantly enhanced my skills and comprehension of open-source project development.
Looking Ahead: Expanding Test Automation (Weeks 7-13)
The next phase of my internship will focus on further refining and expanding the test suite:
Weeks 7-9: I will prioritize refining the remaining test cases I have developed. This will involve writing robust and efficient tests using Espresso for comprehensive test coverage.
Weeks 10-12: My focus will shift towards refining the existing tests for better performance and reliability. Additionally, I will be creating new tests to cover additional functionalities within the ODK-X Tables, Survey, and Services apps. This will ensure a thorough suite of tests that enhances the overall quality of the ODK-X Android tools.
Week 13: The final week will be dedicated to wrapping things up. This includes finalizing the test suite documentation, presenting the testing plan and outcomes to the ODK-X team, and ensuring seamless integration of the tests into the development workflow.
Conclusion
Reflecting on the first half of my internship has been invaluable. I am now better equipped to tackle the remaining tasks with adjusted expectations and a refined plan. I am also incredibly enthusiastic about contributing to the open-source community by delivering a high-quality test suite that will enhance the reliability and functionality of the ODK-X Android tools. See you soon!