The SDLC

Literature regarding the software development lifecycle usually presents two common models: waterfall and iterative (the latter in various forms).  Both models emphasise the importance of testing in the process of creating software: In waterfall, after development is completed, a lengthy period of testing and bug fixing takes place, whereas in more agile projects, the software is delivered iteratively in the form of stories, which each have their own testing phase.  Regardless, software is never delivered in a perfect form initially, and testing is necessary to expose unexpected behaviours and bugs in programs. 

 

An iterative approach to software development

Both models are over-simplifications of the modern software delivery process, and as a result the reality of testing has evolved to meet the demands of more complex software and ever-growing userbases.  Each of these types of testing has its own aims and falls at different stages of the delivery pipeline, and often are performed by different roles or specialists within an organisation.

At 24HourAnswers we have specialists in software development methodology and testing ready to answer questions and help you with assignments on a wide range of subjects, from unit testing, regression testing or specialist testing like penetration or performance testing.

Unit testing and TDD

A unit test is a function in code that evaluates whether or not a process adheres to a set of requirements.  Developers can write suites of unit tests that effectively cover the full range of possible inputs a function might receive, and ensure that the function behaves correctly.  For example, let’s consider a function that reads a file and outputs the number of lines the file contains.  A developer can write several test cases around this.  The first would be a positive test – given a valid file of 5 lines that is constructed in the test, we can assert that the function returns the number 5.  Negative tests can also be written.  For example, what if the file doesn’t exist – should the function throw an exception, or return a defined value (like -1)?  The developer of the function can test that whatever acceptance criteria has been set for this situation is met in the function’s execution.  And what if the file is of an invalid type?

In fact, it’s possible to begin testing before code has even been written.  This approach, known as test driven design, involves starting by writing the acceptance criteria for the method under test (potentially using tools like Cucumber).  These acceptance criteria can then be converted into unit tests.  Initially these will all fail as the required code doesn’t exist, but as the developer begins implementing the method, they will see these tests gradually start to pass.  Eventually, once all the tests are passing, the software engineer will know they’ve completed the task.

Integration testing

During the build and deployment pipeline, newly written code is integrated with a larger application or service.  This can change the expected behaviour of code, owing to dependencies that may previously have been stubbed or mocked out in tests.  Integration testing is a way of exposing defects that arise in the interactions between the various code interfaces in an application.  These may lie across the boundaries of services, libraries, or environments.  Integration tests are preferably written in code (or scripted using applications such as Soap UI), but there is always a need to manually test software as part of the release cycle, regardless of how many automated tests are in place.  As such, unit and integration tests help reduce the burden of manual testing, but never fully replace it.

One weakness in integration testing stems from the need to instantiate full dependencies and environments to accurately test the state of the completed system.  This creates a very expensive, thorough set of tests that need to be run, which require complete environments with components like databases, caches, external services, and test data to all be provisioned, in place, and running for the duration of the test.  This approach then requires that complete paths through the system must be tested, increasing the amount of slow and expensive manual testing that must be done.  To overcome this, it is instead possible to write tests that focus purely on the integration between pairs of components, rather than the entire live-path of the code.  This way, we rely on the combination of our unit tests (to test individual components behave as expected), and integration tests (to test the link between the components) to ensure that the entire application behaves as expected.

Remember, if you’re struggling with assignments using tools like Cucumber or Soap UI, or just have general questions regarding areas like integration or unit testing, our experts at 24HourAnswers are ready to help on any topic within testing or the SDLC.

UAT

User acceptance testing is relatively late phase in the software development lifecycle where the intended end-users of an application are observed using it in directed conditions.  Typically a test lead and business analyst will work together to put together a UAT test plan, which identifies and lists key information, such as:

  • The key business stakeholders in a project, who will be involved in user acceptance testing
  • The support team, who will answer questions and address issues raised by the stakeholders
  • The entry and exit criteria, which determine when UAT begins and ends
  • A defect management process, which explains how bugs or errors will be categorised and processed when they arise
  • A list of the UAT cycles, which break down which area of the system will be addressed in each iteration

Once all the stakeholders have agreed upon the test plan, the key people involved will coordinate to execute the UAT test plan, cataloguing all differences between what the stakeholders expected and what was built as they go.  After the cycle is completed, the development team will revisit and improve the code before giving it back to the business users for another cycle of UAT.

Performance and penetration testing

Some types of testing require the use of more specialist techniques or even external organisations. 

Performance testing involves finding the limits of services and working out how many concurrent requests (also referred to as QPS or RPS, for Queries Per Second or Requests Per Second) an API or service can handle.  This is important for organisations, such as e-commerce businesses, that need to meet particular levels of user demand, so that they are able to cope with peak periods (for example, Black Friday in retail, or handling breaking stories for news organisations) without overpaying for excess capacity when demand is lower. 

Typically, performance testing involves the creation of a mock client or request, which an orchestrator service uses to gradually ramp up the number of queries made to a service over a defined period (e.g. 4-6 hours).  Monitoring and analytics software on the client (for example, Azure Application Insights) is then used to analyse the maximum load the software service is able to manage, and expose any issues like memory leaks that would otherwise limit the maximum load of the application.

Penetration testing, on the other hand, is usually performed by specialist third-party contractors, who use an array of tools to determine the security vulnerabilities of a service or application.  This could involve privileged access to an organisation’s network, or even extend to the pen-testers performing complex social engineering attacks (for example, sending emails that can execute compromising code, or gaining access to a building by pretending to be maintenance workers in uniform) to gain access to a company.  Having done so, these so-called “white-hat” hackers will play the role of a malicious party and try to attack the company or software in question.  At the end of this process, they will provide a detailed report to the organisation that hired them, allowing that company to harden their own security practices and defend themselves against real attackers.  There are numerous conferences, courses, and journals dedicated to security practices and hacking, the most famous of which being DEF CON, which showcases novel and unique threats every year to help companies and individuals keep ahead of the threats they face on a daily basis.

Why students should use our service

As you delve deeper into software engineering and testing, no matter what problem you’re facing, we have tutors available to help with any problems you might encounter.  Our expert tutors can help with any aspect of the software lifecycle, regardless of what level of knowledge you are at. We can offer live tutors or provide writeup deliverables, where a tutor can deliver you clearly-written, production quality code such as unit tests, with accompanying detailed descriptions and documentation.  More advanced students facing larger challenges will also find no shortage of help from our experts, who can help guide the design and development of test plans, or simply provide advice and feedback to help you adjust your project as needed. Regardless of the complexity of your requirements, our seasoned veteran computer scientists are ready to help.

24HourAnswers has been helping students as a US-based online tutoring business since 2005, and our tutors have worked tirelessly to provide students with the best support possible. We are proud to be A+ rated by the Better Business Bureau (BBB), a testament to the quality support delivered by our tutors every day. We have the highest quality experts, with tutors from academia and esteemed institutions such as the Massachusetts Institute of Technology (MIT).

For all who work in this area of computer science, and for college students who want to progress beyond homework assignments, the International Journal of Software Engineering is a good companion. The International Journal of Software Engineering and Its Applications will certainly help you stay ahead of your online tutor - and if you need one, you've come to the right place.

Should you be interested in pursuing a career in this exciting field, remember that our homework help centre is standing by 24/7 to help assist you in all aspects of software engineering and development.

Alexander Sofras is a technical architect with over 20 years of programming experience and 10 years in industry. He currently works in e-commerce and specialises in product discovery and recommendations.

 

 

Get College Homework Help.

Are you sure you don't want to upload any files?

Fast tutor response requires as much info as possible.

Decision:
Upload a file
Continue without uploading

SUBMIT YOUR HOMEWORK
We couldn't find that subject.
Please select the best match from the list below.
For faster response, you may skip assigning directly to a tutor to receive the first tutor available.
That tutor may not be available for several hours. Please try another tutor if you're in a hurry.

We'll send you an email right away. If it's not in your inbox, check your spam folder.

  • 1
  • 2
  • 3
Get help from a qualified tutor

Latest News

Read All News
September 16, 2019

Question of the Week

If an address bus needs to be able to address four devices, how many conductors will be required?  What if each of those devices also needs to be able to talk back to the I/O control device? The solution of the previous question of the week can be seen below. The maximum aggregate I/O transfer rate of the system is equal to: 700Kbystes/s + 700 Kbytes...
READ MORE
August 16, 2019

Machine Learning

24HourAnswers now offers college homework help and online tutoring in Machine Learning. To learn more about the subject or request a session with one of our tutors, please view our subject page Machine Learning  
READ MORE
Live Chats