Wednesday, 14 May 2014

Software Testing and Deployment


The issues of delivering ICT solutions or software that meet the exact needs of the real user have been a very persistent and critical one ever since the history of software development. The gaps between what is finally delivered and what the real user had anticipated or described in most ICT project kept widening, even in the face of increasing global drive for improved software quality. This blog is therefore aimed at highlighting the need to actively involve real-users in every system testing with the aim of strategically improving the software usability factor and the overall software quality. It is therefore aimed at motivating ICT solutions providers,  people in software development and general ICT projects will begin to pay more attention to the real users’ precise needs in the same manners that they listen to the clients that pay the bills.

The concepts of testing in projects:
Generally, the concept of testing centres on assuring software project’s quality through systematic review of the development progress to reveal errors, bugs or deviations from the preset goals. According to Botella P. et al, ISO/IEC 9126 is the “most widespread quality standards” for software development; it sets clear the structures for internal/external software quality and quality in use characteristics. The quality in use aspect bothers on the degree to which the product satisfies the real-users’ requirements; this is described as “a broader view of the ergonomic concept of usability in ISO 9241-11” (Botella P. et al., n.d.).


Software project testing has different approaches and techniques meant to fit into various levels of the development efforts. While unit testing and integration testing are usually run at different stages in between the development efforts; System testing, acceptance testing and regression testing usually come at the end though at different stages also. Of importance to the focus of this paper is the System Testing which can be the functioning of “the system as a whole, and not just its components” Laureate Online Education B. V. (2012: 3).  Therefore, the significances of the real-users involvement and comments at the systems’ testing point in any development project are seen in the need for assuring the functionality and usability component of the testing requirements which primarily focuses on the meeting of the real user’s exact needs.

Interestingly, Bevan N. stated that “User-Centred processes are implemented and produce results, but these results do not always give the expected benefits”. Going forward in explaining the place of expected benefits, he zeroed on usability and defined it as the “effectiveness, efficiency and satisfaction with which a well specified group of users can carry out a known set of tasks in a given context of use” (Bevan N., 1999: 10).  This therefore highlights the importance of identifying the real users for every project. Projects’ real-users are often mistaken for the paying clients. Directly, projects’ real-users are those that the project is actually meant to serve; this is not necessarily those that may have conceived the project who also may have contracted the solutions /software developer or those who may be undertaking the project sponsorship. Often attention is focused more on this last set of stakeholders identified as the ones paying the bills while little or no attention is paid to the real-users. Imperatively, the real-users should be at the core of any systems testing, this will assuring the meeting of its usability requirements. The relevance of this factor is seen in the fact that not all users’ requirements can practically be specified in its full details in the projects requirements documentations from the outset. Some obscured functionality requirements may be inadvertently omitted for lack of space, time constraints, inadequate attention to details, language or communication barriers, or limited involvement of the real users. However, when real-users are fully involved in system testing, it provides adequate opportunities for thorough  hands-on review to see where there are gaps. Besides, the outcomes in coupling the various modules and integrating various components of the project may not yield exactly what was originally projected in actual use and, it is often only the real-user that can quickly detect this and help in clearly pointing it out for prompt corrections.

Hippel (2001), in his report on Innovation by User Communities: Learning from Open-Source Software highlighted very useful values of the real-user’s roles in driving innovation.
There he cited the outstanding success recorded by the open-source software community which has used this phenomenon to produce many complex software products with limited manufacturer’s participation. A typical example he provided is the McCool Apache server development story where some eight users put together the entire documentations and all published bug fixes to produce one strengthened patch that later evolved into Apache. In the report Hippel concluded that “Extensive user feedback and modification yielded Apache 1.0, released on Dec. 1, 1995. After four years and many modifications and improvements contributed by many users. Apache became the most popular Web server software on the Internet, garnering many industry awards for excellence” (Hippel, 2001).

The benefits of real users’ views of the end product:
Apparently, another key benefit of real-user’s active involvement and comments in system testing is that such can hasten bug detection and also fast-track innovation beyond the developer’s limitations and imaginations. The developer can immensely benefit from contribution by certain users of meticulous nature who may have wonderful innovative ideas that can turn around the fortune of the product/solution. 

Ordinarily, such valuable innovative ideas from users are not often freely available where the developer may normally come across them during his/her development process as to freely use them and reap the benefits in improving his/her product. It may be worthy to note that even with apparent wonderful ideas on how a product can be fashioned to really suit their needs, most users are often discouraged from attempting to develop their ideas from scratch (maybe for the rigors involved) but, they can make wonderful contributions when the right foundation is laid by presenting them with products that have achieved certain level of developments for their assessment.

Conclusion:
In conclusion, given the fact that the end of the development efforts is of necessity marked with a system tests, coupling this with the real-users’ views will best assure the test result’s dept and soundness. By this the development of products that meets the exact needs of the real-user as recommended by the ISO/IEC 9126-1 usability component can be guaranteed. Therefore, tactical involvement of real-users and paying good attention to their comments will most often result in a near perfect product.

References:
Bevan, N (1999), Quality in Use: Meeting User Needs for Quality; Journal of System and Software, available at: http://www.usabilitynet.org/papers/qiuse.pdf  (accessed 13th March 2012).
Hippel  E. (2001), Innovation by User Communities: Learning from Open-Source Software ( MIT SLOAN MANAGEMENT REVIBA/ SUMMER 2001); available at: http://www2.sus.edu.cn/SIMBA-course/download/yuedu/Innovation%20by%20user%20community.pdf (accessed 13th March 2012).
Juan Pablo Carvallo and Xavier Franch (n.d.), Extending the ISO/IEC 9126-1 Quality Model with Non-Technical Factors for COTS Components Selection; available at: http://www.irisa.fr/lande/lande/icse-proceedings/wosq/p9.pdf (accessed 13th March 2012).
Laureate Online Education B.V. (2012), RMT: Research Methods Training; Lecture 6: Conducting and Presenting the Project.

P. Botella, X. Burgués, J.P. Carvallo, X. Franch, G. Grau, J. Marco, C. Quer (n.d.), ISO/IEC 9126 in practice: what do we need to know? available at: http://www.essi.upc.edu/~webgessi/publicacions/SMEF'04-ISO-QualityModels.pdf (accessed 13th March 2012)