Automation and integration
Peter Brotherton, SLNSW
Agile
- Idea: requirements and solutions evolve, not defined upfront – continual improvement process including of communication. Early and continuous delivery, welcoming changing requirements, communication and reflection with a view to tuning and adjusting. Working software is the primary measure of progress.
- Challenges: risk-averse culture; documentation-heavy project management framework; hard to change mindsets. When they first tried to do agile they just ended up doing waterfall over and over and over again. Agile training workshops were helpful.
CI/CD: Continuous Integration/Continuous Delivery/Deployment
- Continuous Integration – merging feature branches back into main branch frequently – requires test automation to ensure quality of your unit tests and integration testing as well.
- Continuous Delivery – automated release process
- Continuous Deploment – automated deployment to production
- Unit-testing – testing units of source code – function, class, method
- System-testing – testing integrated system, often through user interface
- Docker is a light weight containerisation technology, helps standardise application dependencies across environment so helps make dev setup and deployment easy.
- Fewer bugs into production and less time manually testing despite releasing more frequently so being more responsive.
- Use Bamboo, also considering Jenkins
Eg Alma acceptance tests
- Can’t write unit tests as don’t have source code, and can’t control when releases happen. But can do browser-based system tests.
- Audited critical business processes in each area of the library. Documented step by step into Excel, and started manual testing on Sandbox release – super tedious. Now working on automating acceptance tests using Python Robot Framework (uses either DOM or xpath, possibly also coordinates), which is working well. (This auditing/documentation also highlighted efficiencies they could make in regular business processes.)
- Change in UI did break the script once. Change in data hasn’t yet.