Software Testing and Deployment
Software Testing and Deployment
Test-Driven Development
The test-driven development (TDD) is an iterative process where tests for the code are written before writing the code. This
approach forces the developer to write testable code. The application is written with testability in mind, and the developers
must consider how to test the application in advance. The unit tests are used as a method for deriving the design of a component
in an iterative process. The end result of the process is a completely functional component and a set of unit tests to verify that
functionality. These same unit tests can be used when further modifications are made to the component to ensure the new
modifications do not change the current functionality.
These are the steps of a test-driven development process:
Step 1. Write a unit test that tests the functionality to satisfy a given requirement. Run the test, but it will not even compile
because there is no supporting code yet.
Step 2. Write just enough code to compile the test successfully.
Step 3. Run the test but it will fail because no functionality has been put in the code.
Step 4. Write just enough code to satisfy the test.
07 Handout 1 *Property of STI
student.feedback@sti.edu Page 3 of 4
IT1814
Step 5. Run the test. It should now pass.
Step 6. Refactor the code as necessary, verifying with tests. Refactoring is a process of improving the code without changing
its external behavior.
Step 7. Repeat all the steps by writing another test and until all requirements are coded and testable.
The test-driven development is intended to generate just enough design to pass the unit tests and prevent over-reengineering
the code architecture.
Software Deployment and Deployment Tools
Software deployment is the process of delivering a completed software product to clients. This involves packaging, testing,
distributing, and installing the software product. Software files can be deployed manually or through automated deployment
tools.
Software Deployment Tools
The deployment tools are used to automate deployment tasks and are designed with the following features:
• Automation – This eliminates the manual tasks of deploying software products. These tools perform tasks such as bug
detection, patch protection, performance testing, and code analyzing.
• Security – It manages the permission settings of users and groups who can access the information in the software.
• Updates – These automate system updates, scan vulnerabilities, and practice regular patch management of latest software
versions across applications. Software patching involves acquiring, testing, and installing the code – known as a patch – into
an executable program to provide an update, fix, or improved version of the program or its supporting data.
• Monitoring – It monitors and analyzes the activities and interactions of the software users. This helps in optimizing the
performance and eliminates issues in the software before they spread in the entire network.
Some of the commercially available deployment tools are as follows:
• Jenkins – It is a self-contained, open-source automation server that can be used to automate all activities related to building,
testing, and delivering or deploying software. This can be installed through native system packages, Docker, or even run
standalone by any machine with a Java Runtime Environment (JRE) installed. Jenkins’ functionalities can be extended
through the installation of plugins in IDEs.
• Octopus Deploy – This automated deployment tool is compatible with ASP.Net, Java, Node.js, and Windows services, as
well as various script languages and database types. This is designed to automate application deployments in the cloud,
corporate data center, and on-site.
• Bamboo – This offers support for the delivery aspect of continuous delivery. Deployment projects automate the releasing
into each environment while letting the project team control the flow with per-environment permissions. This supports
real-time monitoring across all tools and flag errors of software as soon as they occur.
• SolarWinds Patch Manager – This is an automated patch management software for Microsoft servers, workstations, and
third-party applications. This facilitates easier patching, reporting, and information gathering for servers and workstations,
and allows the project team to manage patch deployments with advanced scheduling and rebooting across servers and
workstations.
REFERENCES:
4 Best Software Deployment Tools in 2019. (2019). In DNSstuff. Retrieved from https://www.dnsstuff.com/software-deployment-tools
Ammann, P. & Offutt, J. (2017). Introduction to software testing (2nd ed.). Retrieved from https://books.google.com.ph/books?id=bQtQDQAAQBAJ&printsec=frontcover#v=onepage&q&f=false
Bamboo. (n.d.). In Atlassian. Retrieved from https://www.atlassian.com/software/bamboo
Chemuturi, M. (2014). Mastering software quality assurance. Best practices, tools and techniques for software developers. Retrieved from
https://books.google.com.ph/books?id=rhO8YW7LaukC&printsec=frontcover#v=onepage&q&f=false
Dennis, A., Wixom, B.H., & Tegarden, D. (2015). Systems analysis & design. An object-oriented approach with UML (5th ed.). Hoboken: John Wiley & Sons, Inc.
Galin, D. (2018). Software quality. Concepts and practice. Retrieved from https://books.google.com.ph/books?id=cwlbvgAACAAJ&printsec=frontcover#v=onepage&q&f=false
Jenkins User Documentation. (n.d.). In Jenkins. Retrieved from https://jenkins.io/doc/
McLean Hall, G. (2017). Adaptive code. Agile coding with design patterns and SOLID principles (2nd ed.). Retrieved from
https://books.google.com.ph/books?id=18SuDgAAQBAJ&printsec=frontcover#v=onepage&q&f=false
O’Regan, G. (2017). Concise guide to software engineering. From fundamentals to application methods. Cham, Switzerland: Springer International Publishing AG.
Patch Manager. (n.d.). In SolarWinds. Retrieved from https://www.solarwinds.com/patch-manager
Unhelkar, B. (2018). Software engineering with UML. Boca Raton, Florida: CRC Press.
Walkinshaw, N. (2017). Software quality assurance. Consistency in the face of complexity and change. Cham, Switzerland: Springer International Publishing AG.