0% found this document useful (0 votes)
11 views11 pages

Software Engineering and Testing Overview

Uploaded by

00namjoonie
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views11 pages

Software Engineering and Testing Overview

Uploaded by

00namjoonie
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Learner Name Samiya Akther Sammi

Learner Registration No. 230208020

Study Centre Name AIMS Academy

Qualification Title OTHM Level 5 Diploma in Information Technology

Unit Reference No. K/617/2276

Unit Title Software Engineering

Word Count 2172

Submission Date

Declaration of authenticity:

1. I declare that the attached submission is my own original work. No significant

part of it has been submitted for any other assignment and I have acknowledged in my

notes and bibliography all written and electronic sources used.

2. I acknowledge that my assignment will be subject to electronic scrutiny for

academic honesty.

3. I understand that failure to meet these guidelines may instigate the centre’s

malpractice procedures and risk failure of the unit and / or qualification.

_________________ _________________

Learner signature Tutor signature

Date: Date:
Assignment Cover Sheet

Table of Contents

Introduction................................................................................................................................2

1.1 Describe different modelling languages..........................................................................3

1.2 Explain the benefit of using modelling languages in system design...................................4

3.1 Evaluate how software testing differs for different strategies..............................................5

3.2 Describe the stages of system testing...................................................................................6

3.3 Evaluate different software testing tools available for the automation of the testing
process........................................................................................................................................8

References................................................................................................................................10

1
Introduction

Creating software systems with precision and procedure is known as software engineering. To
produce software that is dependable, effective, and easy to use, it combines concepts from
computer science, engineering, and project management. With software having to match
industry standards and user needs, this sector is crucial in today's technologically advanced
society. Incorporating techniques, instruments, and ethical issues, it encompasses phases such
as requirements collecting, design, implementation, testing, and maintenance. To put it
briefly, the focus is on providing software solutions that are dependable. (Elgabry 2022)

2
1.1 Describe different modelling languages.

Any artificial language that has a specified structure and can be used to convey data,
knowledge, or system is known as modelling language.

[Link] Modelling Language (UML): Unified modelling language is a graphical


standardized language which helps the developers or the system creators to visualize and
understand the system more precisely. UML makes the system easier to understand by using
some set of diagrams which represents different aspect of a system such as data, business,
object, and component. UML is not a programming language but it’s being used widely in
software engineering for object-oriented design and analysis. UML provides powerful and
wide range of notation which also helps to speed up development.

2. Business Process Model and Notation (BPMN): Business process model and notation is
a standard graphical notation which is mostly used for business process management and
documenting. Flowcharts are used in BPMN to represent the information and tasks in order.
It aims to be more understandable and user-friendly for technical and business users alike.
Using a common notation, it enables businesses to discuss, document, and optimise their
processes.

[Link]: An organization's interactions, processes, and constituent parts can be


structurally described and visualised using ArchiMate, an open and independent architecture
modelling language. It offers a common vocabulary to describe information flows, IT
systems, operational and development processes, and technological infrastructure. It is very
useful for explaining and capturing intricate architectural ideas. The ArchiMate language is
designed to be more vendor neutral and may be used with a variety of frameworks and
procedures.

To sum up, UML is a general-purpose modelling language for software systems, BPMN is
dedicated to modelling business processes, and ArchiMate is concentrated on modelling
enterprise architecture. A distinct set of topic-specific diagrams and concepts are included in
each of these languages. ( IcePanel 2023)

3
1.2 Explain the benefit of using modelling languages in system design.

The ability to express and comprehend complex systems more easily is one of the key
benefits of utilising modelling languages in system design. These languages provide a
common, visual framework for stakeholder communication.

1. Clarity and Visualisation: Modelling languages enable system designers to create visual
representations of the components, relationships, and procedures of the system, which
promotes understanding and communication between technical and non-technical
stakeholders.

2. Consistency: By encouraging uniformity in documentation and design, they make sure


that everyone in the team is aware of the architecture and behaviour of the system.

3. Simplicity and Abstraction: By enabling designers to concentrate on high-level concepts


and structures while abstracting intricate details, these languages streamline the design
process.

4. Analysis and Validation: By ensuring that models are accurate and comprehensive prior
to the actual system implementation, errors and rework can be minimised in subsequent
stages.

5. Documentation: Models act as thorough documentation, which facilitates knowledge


sharing among team members and makes system upkeep and updates easier.

In conclusion, modelling languages provide a structured, visual representation of the system,


which improves cooperation, lowers ambiguity, and raises the general quality of system
design. IcePanel (2023)

4
3.1 Evaluate how software testing differs for different strategies.

Depending on the chosen testing approach, software testing varies greatly. Every strategy has
a different methodology, set of goals, and techniques.

1. Manual Testing: To conduct manual testing, human testers must simulate end users of the
product. Manually completing test cases allows testers to examine the functionality and user
interface of the programme. This is a useful approach for experimental, ad hoc, and early
testing phases where human ingenuity and intuition are crucial. Manual testing requires a lot
of work, which makes doing repetitive jobs difficult. But it's quite good at identifying
problems with real-world usability and user experience.

2. Automated Testing: Using automation technologies, test scripts are created and
executed as part of automated testing. Test scripts can be run multiple times to ensure
consistency and prompt response by simulating user interactions. Regression testing and task
validation are two of its best uses. Exploratory and usability testing are better suited for
manual testing, which necessitates scripting abilities.

3. Black-Box Testing: This type of testing ignores the internal code of the programme in
favour of concentrating on how it behaves externally. Testers evaluate the software's response
to a range of inputs and circumstances. It mimics end-user interactions and is user-centric,
requiring no understanding of the underlying code. It does, however, offer little
understanding of structural problems and code quality.

4. White-Box Testing: In white-box testing, the internal code, algorithms, and logic of the
software are examined. The structure of the code is used by testers to design tests. By
focusing on certain code pathways and logic, this method finds problems that black-box
testing would overlook. While white-box testing is useful for code-centric testing, it may not
5. Agile Testing: Using rapid iterations and releases, agile testing is incorporated into the
development process. Test cases are frequently connected to user stories and acceptance
criteria, and testing is done in accordance with evolving requirements. Keeping up with Agile
development cycles necessitates flexibility, tight cooperation with development, and a focus
on real-time testing.
5
6. Waterfall Testing: Waterfall testing, on the other hand, employs a staged methodology,
with testing taking place following development stages like as acceptability and system
testing. Although it places a strong emphasis on thorough test documentation, it is less
flexible after each phase.

7. Security Testing: Finding weaknesses and vulnerabilities is the focus of security testing.
To evaluate the software's resistance to security risks, testers create a variety of scenarios and
attacks. Proficiency in security testing methodologies and instruments is necessary. Cover all
user scenarios and necessitates programming skills.

In conclusion, the kind of software being produced, time constraints, and project needs all
influence the testing technique selection. The benefits and trade-offs of each method are
different, therefore choosing the best one is essential to ensuring the quality of the
programme. (Bose, 2023)

3.2 Describe the stages of system testing.

A critical step in the software testing process is system testing, which involves testing the
system to make sure it satisfies the intended requirements. This phase consists of multiple
stages, each with a distinct emphasis:

1. System Integration Testing: In this preliminary phase, separate software modules or


components are integrated and tested collectively. Finding any integration problems is the
aim to make sure that various components of the system can function together as planned.
Module-to-module testing, component communication, and data flow verification are
examples of integration testing.

2. Functional Testing: The purpose of functional testing is to confirm that the system
operates as intended and that all the specifications are met. Test cases are made to see if every
feature or function works as it should. Test scenarios, both positive and negative, are run to
make sure the software satisfies its functional requirements.

6
3. Non-Functional Testing: Non-functional testing assesses non-functional characteristics of
the system, including usability, performance, scalability, and dependability. This phase
evaluates the system's ability to manage certain non-functional characteristics. Stress testing,
load testing, usability testing, and reliability testing are examples of common non-functional
tests.

4. Compatibility testing: This process evaluates the program's performance across a range of
hardware, operating systems, browsers, and platforms. Making sure the programme runs
consistently in different environments is the aim. To find compatibility problems, it entails
testing on various configurations and settings.

5. User Acceptance Testing (UAT): Before software is deployed, UAT is usually the last
phase. End users or other stakeholders test the software at this point to see if it satisfies their
requirements and expectations. Its main objective is to verify if the programme complies with
business needs and actual use cases.

6. Regression Testing: Regression testing is a continuous procedure that extends beyond


system testing. This is done to make sure that any additions or modifications to the software
don't cause new bugs or interfere with already-existing features. To make sure the latest
modifications haven't had a detrimental effect on the system, testers rerun previously
completed test cases.

7. Usability Testing: This process evaluates how user-friendly the system is, making sure
that it is simple to use and navigate. During this testing phase, actual users or representative
stakeholders offer comments on the user interface and overall user experience.

System testing phases are critical to fully verifying the functionality, performance, and
quality of the software system prior to its distribution to clients or end users. (Preston, 2023)

7
3.3 Evaluate different software testing tools available for the automation of the testing
process.

There are several testing tools available on the market, and each has unique features,
functionalities, and advantages. The testing tool you use will rely on your budget,
technological stack, and unique requirements. These are a few well-liked software testing
instruments:

1. Selenium: For automated web browser testing, Selenium is a popular open-source tool. Its
versatility for web application testing stems from its compatibility for numerous
programming languages and browsers.

2. Appium: Appium is an open-source automation programme made especially for testing


mobile applications. Its compatibility for both iOS and Android platforms is advantageous for
testing mobile applications.

3. Test Complete: A paid testing tool, Test Complete is well-known for its record and
playback functions. It supports testing of desktop, mobile, and online apps and has various
built-in test automation techniques.

4. Jenkins: Jenkins is a well-liked open-source framework for ongoing testing and


continuous integration. It builds, tests, and deploys applications automatically and is
interoperable with a wide range of testing frameworks and tools.

5. Postman: One popular tool for testing APIs is Postman. Tester testing, documentation, and
API design are all made more effective by it. Its application is advantageous for HTTP query
and RESTful web service testing.

6. Loadmaster: An application's response to various load scenarios is assessed using a


performance testing tool called LoadRunner. It simulates multiple users in order to
investigate performance bottlenecks.

7. JIRA: Although JIRA is generally used for recording issues and projects, it also connects
with several test management solutions, which makes it a useful tool for managing and
tracking test cases.

8
8. SoapUI: A well-liked tool for SOAP and REST web service testing is SoapUI. It provides
a wealth of features for writing, running, and verifying API tests.

9. Cypress: Mostly used for web applications, Cypress is an end-to-end testing framework
that runs on JavaScript. It provides automatic waiting, time-travel debugging, and real-time
reloading.

10. Browser Stack: This cloud-based cross-browser testing platform is called Browser Stack.
It lets you test web apps across a variety of operating systems, devices, and browsers.

A few things to think about when assessing testing tools for automation include their ease of
use, compatibility with your technological stack, community support, cost of licencing, and
the testing requirements of your project. Whether you are using web, mobile, API, or
performance testing, the tools you use should match the objectives of your project and the
testing approach. (Collins, 2023)

9
References

Elgabry, O. 2022, “Software Engineering — Introduction (Part 1) - OmarElgabry’s Blog -


Medium,” Medium, viewed <[Link]
introduction-part-1-b79238ec97ee>.

IcePanel (2023) 7 modelling languages for software architecture - IcePanel - Medium.


Available at: [Link]
2ed3a9f75343.

IcePanel (2023) 7 modelling languages for software architecture - IcePanel - Medium.


Available at: [Link]
2ed3a9f75343.

Bose, S. (2023) Software Testing Strategies and Approaches | BrowserStack. Available at:
[Link]

Preston, M. (2023) 7 Phases of the System Development Life Cycle Guide. Available at:
[Link]

Collins, T. (2023) What are different Software Testing Tools? | BrowserStack. Available at:
[Link]

10

Common questions

Powered by AI

UML is a general-purpose modeling language used broadly in software engineering for object-oriented design and analysis. It provides standardized graphical notations to help system creators visualize and understand system architecture in terms of data, business, objects, and components . BPMN, on the other hand, is focused on business processes. It uses flowcharts to represent process tasks and aims to be user-friendly for both business and technical users . ArchiMate is dedicated to enterprise architecture, providing a structural visualization of interactions, processes, and components across organizational levels. It is vendor-neutral and adaptable to various frameworks, thereby supporting complex architectural discussions .

Modeling languages like UML, BPMN, and ArchiMate assist in error detection by providing clear and structured visual representations that reveal system design inconsistencies early in the development phase . The clarity they provide helps stakeholders visualize potential problems in the system architecture, thus facilitating timely adjustments and refinements. By easing understanding among diverse teams, they support the identification and resolution of communication gaps which might otherwise lead to design errors. Hence, these languages help streamline system design by expediting the discovery and rectification of architectural issues before implementation begins .

Black-box testing focuses on evaluating the software's output based on input without considering the internal workings of the application. Its strength lies in its focus on functional correctness and user-centric testing, as it simulates end-user interactions . However, it provides limited insights into the code structure or logic flaws. White-box testing, in contrast, involves examining the internal structures and code logic to ensure pathways and algorithms function correctly, making it effective at revealing code-level issues that black-box tests might miss . Its limitation is in overlooking issues related to user experience and functional outcomes, which are central to black-box testing. Together, these methods offer a comprehensive view of both function and form but individually may miss critical aspects outside their scope .

Agile testing incorporates continuous testing throughout the software development lifecycle, adjusting rapidly to changes in user stories and feedback. This methodology ensures the software remains aligned with evolving user requirements by fostering a collaborative and adaptive environment. Compared to traditional waterfall methods, which are more rigid and phase-specific, agile testing provides a flexible framework for ongoing refinement and improvement, significantly increasing the likelihood of meeting dynamic user needs. This approach is particularly effective in environments with rapidly changing requirements, enhancing software relevance and stakeholder satisfaction .

Modeling languages such as UML, BPMN, and ArchiMate improve collaboration by offering common, visual frameworks that facilitate communication between stakeholders, both technical and non-technical. They ensure clarity by providing structured visualizations of system components and processes, reducing ambiguity about system requirements and architecture . Consistency in documentation and design helps the team to maintain a uniform understanding of system architecture and behavior, which fosters better team collaboration and decision-making .

Manual testing involves human testers manually executing test cases and assessing the functionality and user interface of the application, relying heavily on human intuition, which makes it suitable for early development phases but labor-intensive . Automated testing, by contrast, uses scripts and software tools to execute pre-written test cases, allowing for repeated and consistent testing that is particularly effective for regression testing and thus more suited for repetitive tasks. However, it requires scripting skills and is less adaptable to exploratory and usability tests, which are better handled manually .

When selecting an automated testing tool, several factors must be considered: compatibility with the technological stack (to ensure seamless integration with existing systems), community support (availability of resources and troubleshooting aids), ease of use (for efficient team onboarding and operation), licensing cost (to fit project budgets), and suitability for the type of testing required (web, mobile, API, performance). These are vital as they dictate how well the tool meets the project’s specific requirements, supports team capabilities, and maintains cost-efficiency, all crucial for successful deployment and maintenance of the testing process .

Agile testing is integrated within the development process and accommodates rapid iterations and changes, aligning closely with ongoing user stories and acceptance criteria, which provides flexibility and real-time feedback. It necessitates close collaboration and adaptability to changing requirements . In contrast, waterfall testing is more rigid, applying testing in stages after other phases like acceptance and system testing. This results in comprehensive documentation and thorough pre-release testing but lacks post-phase flexibility. Agile testing better supports dynamic project environments, while waterfall may be advantageous in projects where thorough documentation and stability in the requirements are prioritized .

System testing comprises several stages: 1) System Integration Testing, where separate software modules are integrated and tested as one entity to identify integration issues . 2) Functional Testing verifies that the system functions as intended and requirements are met through specific test cases . 3) Non-Functional Testing assesses usability, performance, reliability, and scalability through tests like stress and load tests . 4) Compatibility Testing ensures the application performs across various environments . 5) User Acceptance Testing (UAT) involves stakeholders verifying if the application meets their business needs . 6) Regression Testing ensures new changes do not negatively impact existing functionalities . 7) Usability Testing checks for the user-friendliness of the system . Together, these stages ensure thorough verification of both the functionality and quality of the software before deployment.

The choice of a software testing tool can significantly influence both the effectiveness and efficiency of the development process. Tools like Selenium and Cypress facilitate automated web application testing, allowing repetitive tests to be conducted efficiently, which is crucial for continuous integration processes . Tools like Appium enable mobile testing across platforms, enhancing the testing coverage for mobile applications . Additionally, the user-friendliness of a tool, compatibility with existing systems, community support, cost, and specific project needs (such as the complexity of testing scenarios or availability of integration features) all contribute to how effectively and efficiently a testing strategy can be executed .

You might also like