Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Overview The final project for this course is the creation of a summary and refl

ID: 3752537 • Letter: O

Question

Overview The final project for this course is the creation of a summary and reflections report. While software quality assurance may not always elicit the same excitement as other aspects of the software development life cycle, it is nonetheless vital. A critical component of this process is software testing. In fact, it can be said that code should not be considered “clean” unless it has been tested. The ability to create unit tests that effectively uncover errors within software features is an essential skill for any software developer. In this final project, you will execute a test plan provided in the Final Project Test Plan document for a given software application. The test plan will describe the requirements of the development project at a high level as well as indicate which features must be tested to ensure verification and validation. You will need to select, write, and run the specific unit tests. You should find at least five of the errors that exist within the application’s code by applying techniques you have learned in the course. Based on your experiences, you will ultimately deliver a final summary and reflections report. In this report, you will document your decision making and results as well as reflect upon your lessons learned by drawing connections to the broader software quality assurance principles discussed in the course. The project is divided into two milestones, which will be submitted at various points throughout the course to scaffold learning and ensure quality final submissions. These milestones will be submitted in Modules Four and Five. The final product will be submitted in Module Seven. In this assignment, you will demonstrate your mastery of the following course outcomes: • Evaluate various software testing techniques for their potential to meet the needs of different software development projects • Identify strategic approaches for software unit testing based on applications’ requirements • Create technically sound unit tests using logical, efficient code that effectively uncovers errors within software • Illustrate best practices for managing software testing to ensure continuous quality improvement over the software development life cycle • Articulate the value of maintaining a disciplined, quality-focused mindset as a software engineering professional

Explanation / Answer

In order to understand various software testing types,techniques and methods, it is importatnt to understand what is software testing and why we need to test at all.

Software Testing is a process of continuously testing the product that is being implemented /developed by engineers. This is not specific to code but also functionality and quality of the product. Nowadays, it is important to maintain code coverage, i.e. the lines of code are being executed under certain test cases (Unit Test, Functional Test etc.)

Listing down various software testing techniques :-

Unit Test :- To test the smallest unit of code written by providing various inputs and matching with the expected output for the unit test. Unit Test should cover all the inputs, branches(if-else,switch cases etc) in order to increase code coverage under test.

This is mandatory for all software development projects.

Black Box Testing :- Here, the Internal system design is not considered. Tests are based on the requirements and functionality. This ensures that the expected behaviour of product matches the actual behaviour. Techniques used are Boundary Value Analysis,Equivalence Partitioning etc.

White Box Testing :- Here, all the internal system design is known and while writingthe test cases these are considered. Techniques used are Path Testing, Data Flow Testing, Branch Testing etc.

Functional Testing :- Rather than testing small units of code, here the functionality of a module is tested for its behaviour and output. Here the business requirements are validated. On the basis of provided input, the test case matches for the expected output.

Regression Testing :- This is performed in order to make sure that when the product is already deployed in real-time environment with certain functionality and when new functionality is introduced or some bug is fixed, the existing functionality is not broken.

Smoke Testing :- In actual project environment, number of changes keep on goung and several builds/ISO are prepared, hence smoke test is performed in order to make sure that there is no issue over the build after several code changes.

Integration Testing,System Testing,Security Testing,Browser Testing,Compatibility Testing are other testing methods which can be understood by their names itself.

Hence, the above mentioned testing techniques are used in almost all software development projects in either manual or automated ways. These are implicit part of a Software Testing Life Cycle.

Also, the software testing environment present with the project also plays important role in deciding the software techniques to be used like build servers, test budget, number of testers in team, project timeline and project overall budget ,feaibility of performing automation testing etc.

Approaches for Unit Testing based on requirements :-

Unit Testing is the core of Software Testing which is mandatory to be performed by all the Developers while writing the code for a product development.

As far as I can understand from the question, here two approaches are available for Unit Testing , either Black Box Testing or White Box Testing which are explained above. Hence, if the customer is more concerned about the functionality rather than internal implementation (efficiency,security etc) then Black Box Testing can be used else if implementation plays an important role than White Box Testing should be used and all the flow, paths, control statements should be executed as part of unit tests.

Creating efficient unit tests to uncover error early :-

Since there is no sample code provided, I can just provide tips for the efficient unit testing.

a) Always make sure to cover end to end and smallest parts of code while unit testing

b) test for all the possible inputs using boundary value analysis and equivalence partitioning

c) provide inputs such that it tests for all the possible conditions(if-else)

d) test the private methods using applicable techniques in order to incerease code coverage

e) test for all the exceptions that can occur while code execution.

f) perform unit test for both sunny and rainy case scenarios

Best practices for managing software testing to ensure continuous quality improvement :-

1) The testing requirement and analysis should be maintained beforehand.

2) The process of unit testing should be followed parallel to the coding (Testing and Developement Cycle should run parallely)

3) Maintain Requirement Traceability Matrix (RTM) in order to map the testing w.r.t development part

4) Develop a test plan and maintain checklists in order to assure timely compliances.

5) Test cases should be thoroughly reviewed and approved by team

6) develop a test environment and reuse it every time to execute the test cases.

7) Automate the Test cases as much as possible in order to reduce the effort.

8) Test for possible collaterals that can be caused due to bug fixing.

9) Document all the data in order to simplify and fasten the process.

Value of maintaining a disciplined, quality-focused mindset :-