Friday, August 28, 2015

A Proposal to write the Manual for How to Perform Software Testing








A Proposal to write the Manual for How to Perform Software Testing






Colorado State University
Department of Electrical Engineering
JTC300 Professional and Technical Communication



Minh Anh Nguyen
Phone: 970-223-7603









Today, most high tech activities involve software or programs. There are many software products available in today’s fast-growing and competitive markets. Each software product serves various purposes in numerous fields such as medicine, science, building, accounting, agriculture, etc.  These software products must satisfy users’ needs in the best way.  Customers want more from software releases with new features to be implemented in a short time period, but they do not like to work with defected software.  Releasing software with any problems or bugs in it may affect the users’ experience, which makes a bad impact on quality reputation of the company name or brand.  Customers will remember a bad quality product. This is one of the reasons why testing of software before releasing is very important. [1, 2, 4, 5]
As an example to show why software must be tested before releasing to the user, say a group of software engineers from company A, have designed a new feature to display a login dialog box when the user logs in to a system or computer. This new feature is an additional request from a customer from company B, to enhance the current software.  Due to the short time period and deadline, the software engineers did not test the software after they developed it and assumed that, since this new feature represented just a small change to the code, it would not affect the existing software.  They also believed that no mistakes could be made in the software since most of software engineers in the team are senior engineers with more than 10 years’ experience.  They released this software to you as a user from company B.  You also have deadline and been excited to use this new release for a presentation.  You followed exactly the instructions which were provided to you by the software engineers in order to install this newly released software onto your system. Alas, when you complete the installation, a blue screen is displayed on your system due to a bug in the software.  You are not happy with this issue because you have to explain the situation with your manager, spend time to troubleshoot the problem, and then also describe the problem to the software engineers.  As a result, your tasks fall behind the schedule and you do not trust any products from the company A.  This is one situation where testing the software is very important before deploying it. Testing cannot be ignored because it impacts all the end users of a piece of software. If the software would have gotten tested thoroughly for all the possible user operations this problem would have been found well in advance and gotten fixed before the software was released.
Releasing the software without testing will mean there is a high risk of issues being found, and failure of the software. It would waste a lot of user time and effort when using it. It may actually result in more serious issues, such as security breaches, data loss and corruption. Software is written by people such as software engineers or developers. People are imperfect and make mistakes.  Some of those mistakes are unimportant, but some of them are expensive or dangerous.   Software testing is necessary because it helps in identifying defects. The testing process may not fix the entire defect present in the software application, and it cannot guarantee that the software is 100% error free, but it provides user friendliness.
I propose to write a quick technical manual on how to perform software testing.  A technical manual provides readers with the information they need to test software in general. Software is a set of instructions to perform some tasks. A technical manual also can serve either very specific or very general reader groups. The biggest challenges in designing technical manuals are often connected to determining and meeting the needs of my intended audiences. 
Audiences of this manual are software testing students, engineers, and professionals who would like to understand why software testing is important and the basics of how to do software testing. This would include types, methods, techniques and levels of testing. This manual provides enough ingredients to start with the software testing process, and allow readers can take themselves from low to higher levels of expertise. For engineering students who are probably not familiar with software testing theories, I will have to provide selected background information from my sources. My intent is to share with readers why software testing is important and the some basic ideas of software testing.
In this manual I will achieve the following goals: 1. the first goal is to explain the principles of software testing and some of the basic requirements of software.  2. The second primary goal is to provide some basic instructions of how to test software and types of software testing.  3. The third goal is to explain the benefits of software testing.  To achieve these goals, I will rely on four books as sources that give an overview and definitions.  I also will provide some instructions on how to perform software testing and an example of a simple test report template that helps readers understand and prepare for some of the software testing tasks.
Software testing is considered as one phase of the software development life cycle.  It is the process of finding bugs in the software. It is an activity to check whether the actual results match the expected results and to ensure that the software system is defect free. 
This section presents my schedule, costs and qualifications for performing the proposal manual project.  The proposed manual research project ends in a formal report that will be completed by July 29, 2015.  To reach this goal, I will follow the schedule present in table 1.  Since I already have several books and articles on software testing, most of my time will be spent selecting and reading through the information, finding the key results and sharing them with my audiences on testing.  There is no cost associated with performing this research manual because I obtain all my sources for from the library.   My manual research will be submitted online, therefore, there will be no cost associated with printing and spiral binding of the manual. 
Assignment
Due dates
pages
Preliminary Technical Manual Proposal
July 23
4
Technical Manual (task analysis)
July 24
3
Progress Report and Notes
July 25
3
Technical Manual (first draft)
July 26
10
Technical Manual (second draft)
July 27
14
Formal report
July 29
16
Table1. Assignment Sequence and Timetable
Qualifications: I graduated from Colorado State University in 2001 with a bachelor degree in Computer Engineering.  Since 2003, I have worked as a design-for-test (DFT) engineer and a test engineer for Intel and Agilent Technologies companies.  Presently, I am a quality assurance (QA) engineer at KeySight Technologies in Loveland, Colorado.  My main tasks in this position are: to write test scripts or programs, test documentations, test planning, and test reports, and to perform software testing on various software packages, systems and frameworks.  With over 12 years of software and system testing experiences, I believe that I will be able to share some ideas and issues that I learned from my hands-on experiences.  Besides my software testing experiences, I am interested in software testing education, i.e., developing materials and educational tools for teaching software testing or software engineering in general. Therefore, I think that I qualified for writing a manual on how to perform software testing.
In my Software Testing career, I have found that some people think that testing is all about executing scripts against an application with the view of trying to find as many errors in the code as possible.   But there are many other activities that are involved in testing. Some people also think that, when they are a senior programmer, they no longer need to test their code.   This only works in the ideal world, where the developers create software that works at the first go, and does not have any issues. In the real life, this is not often the case, because bugs appear in the software testing.  If  a bug was found after the software release, it means that time will be need to be spent finding a fix and performing more testing on it;  these tasks must take place while the end users are using the software. The time taken to fix defects after the software is released is significantly more than during the testing phase.  This is because the fixes need further testing, and need to align to any maintenance releases or other schedules that the organization has set up.  For this reason, I want to write this manual to show what is the importance of software testing? How to perform software testing? And, what are the various test types?









References

1.      Limaye, M. (2009). Software testing: Principles, techniques and tools. New Delhi: Tata McGraw-Hill Education Private.
2.      Patton, R. (2006). Software testing (2nd ed.). Indianapolis, IN: Sams Pub.
3.      PUMA- Publication MAnagement. (n.d.). Retrieved July 8, 2015, from http://puma.isti.cnr.it/rmydownload.php?filename=cnr.isti/cnr.isti/2004-TR-36/2004-TR-36.pdf.
4.      Javed, A. (2012). How To Improve Software Quality Assurance In Developing Countries. ACIJ Advanced Computing: An International Journal, 17-28.
5.      Myers, G., & Badgett, T. (2004). The art of software testing (2nd ed.). Hoboken, N.J.: John Wiley & Sons.




1 comment:

  1. It's quite good guide, but I think that topic are undisclosed, you need to add more sources and paper writing tips . Thanks for attention!

    ReplyDelete