Some time ago I wrote about the similarities and relationships between testing and UX/usability techniques. But there’s another question: how do we integrate them in the software development process? Here’s an approach:
There are three teams involved:
- Team A is the software development team, responsible of developing new software functionalities and modify existing ones.
- Team B is the UX team, which takes care of discovering and defining user requirements, designing interfaces and evaluating existing ones.
- Team C is the maintenance/integration team, responsible of keep the whole system working. They can assume some quality and system administration tasks, and/or be in close relationship with the corresponding teams.
And there are four environments/phases:
- New features / requirements. This is an off-line environment, where UX research tasks are performed and new interfaces are prototyped and evaluated by team B. Approved prototypes pass to the following environment, where they are implemented.
- Development. This is where software developers (team A) take prototypes and implement them, and where they can then apply unit testing.
- Integration. In this phase, new developments are integrated and tested into a full system working on a copy of real data by team C. Once the new developments are integrated and working, the full system can be tested from a user point of view through acceptance testing, and/or from a usability point of view through usability evaluations (i.e., expert reviews, usability user testing, etc.) by team B.
- Live. Once the full system is working as expected, a deployment to live is performed and new developments start to be used on real data, with real users. (Automatized) regression testing is recommend to verify that the most important functionalities are working after the deployment. In this phase, team B and C (and possibly others) monitorize and take statistics of real utilization, and they use them to start again the process of development.
Of course, many alternatives and variants of this workflow are possible, but I think this could be a starting point for any organization wanting to integrate testing and usability techniques in their software development process.
PS: don’t forget to try UCDmanager if you are interested in User-Centered Design techniques.