Development Team Workflow
• John Vandivier
This article is a basic overview of the workflow of a professional application development team.
- Receive requirement
- This would classically come in the form of written Acceptance Criteria and/or test cases
- Understand requirement
- EOE, delivery schedule, and other planning is involved here
- Research may be involved if the feature involves a new or unknown implementation pattern.
- This phase is not done until the intended implementation pattern is known and planned.
- Develop solution to that understanding
- Development workflow may include separate environments such as local, development, testing, and production environments.
- A network-oriented or web-based solution is not developed or tested until after is has been verified in a server-deployed environment. A local machine doesn't count.
- Integration with other developers is key: Use version control and test before pushing to other developers or the server.
- Git is a great tool for this for many reasons, but two key reasons are the ability to do a local backup without broadcasting the change, and easy branching and merging.
- Peer review
- After completing a solution, or even simultaneously (peer coding ftw), it is a good practice to do a peer review.
- Peer review catches bugs, allows for optimization, and allows knowledge sharing with others about the new codebase.
- A proper peer review is not only a code review but also a functional review or demonstration. Developers should be familiar with the technical flow and use flow or scenario.
- Test the solution
- This includes all kinds of testing: Regression, unit, functional, automated, integration, etc.
- Regression testing: Make sure nothing that was previously functional stopped working.
- Unit testing: A small, automated test. Usually it is run as part of a build process. Usually a function or module tests itself to ensure internal validity.
- Functional testing: A person tries using the product and compares observations to expectations to ensure the desired user experience.
- Automated testing: A good automated testing solution can mock functional testing with a testing algorithm that simulates clicks around the operating system. So it's like a functional test, except no human is involved. TestComplete is an example if an automated testing solution.
- Integration testing: When you take code built in one environment and test it in another environment. This is key for web and network solutions, where code is usually built on a single machine but it must be tested on a server or in a network-accessed environment.
- This includes all kinds of testing: Regression, unit, functional, automated, integration, etc.
- Send for Acceptance Testing
- This is sort of part of #4 as it is testing, but it is the last stage of testing: All other tests should be verified before this one.
- Iteratively improve until the feature is complete and stable.
- Yes, iteratively indicates the use of Scrum and Agile. Agile is preferred practice for most IT development teams.