Version control systems track and manage changes to code and files. Centralized systems store code in a single central repository, while distributed systems allow each user to have their own local repository. Automated testing executes test cases using tools to validate software functionality faster than manual testing. Different types of automated tests include unit, integration, smoke, and regression testing.
2. VERSION CONTROL SYSTEM
What is version control?
Version control - also known as source control or revision control - is an
important software development practice for tracking and managing changes
made to code and other files. It is closely related to source code management.
The version control system is a collection of software tools that help a team to
manage changes in a source code. It uses a special kind of database to keep
track of every modification to the code.
Version control enables teams to collaborate and streamline development to resolve
conflicts and create a centralized location for code
3. Why use version control?
As organizations accelerate delivery of their software solutions through
DevOps, controlling and managing different versions of application artifacts —
from code to configuration and from design to deployment — becomes
increasingly difficult.
Version control software facilitates coordination, sharing, and collaboration
across the entire software development team. It enables teams to work in
distributed and asynchronous environments, manage changes and versions of
code and artifacts, and resolve merge conflicts and related anomalies.
4. Benefits of version control
Quality
Teams can review, comment, and improve each other's code and assets.
Acceleration
Branch code, make changes, and merge commits faster.
Visibility
Understand and spark team collaboration to foster greater release build and
release patterns. Better visibility improves everything from project
management to code quality.
5. Types of Version Control System
Localized version Control System
Centralized version control systems
Distributed version control systems
9. Difference between Centralized Version Control
System and Distributed Version Control System
Centralized Version Control System Distributed Version Control System
In CVCS, The repository is placed at one place and delivers
information to many clients.
In DVCS, Every user has a local copy of the repository in place
of the central repository on the server-side.
It is based on the client-server approach. It is based on the client-server approach.
It is the most straightforward system based on the concept of the
central repository.
It is flexible and has emerged with the concept that everyone has
their repository.
In CVCS, the server provides the latest code to all the clients
across the globe.
In DVCS, every user can check out the snapshot of the code,
and they can fully mirror the central repository.
CVCS is easy to administrate and has additional control over
users and access by its server from one place.
DVCS is fast comparing to CVCS as you don't have to interact
with the central server for every command.
The popular tools of CVCS are SVN (Subversion) and CVS. The popular tools of DVCS are Git and Mercurial.
CVCS is easy to understand for beginners. DVCS has some complex process for beginners.
If the server fails, No system can access data from another
system.
if any server fails and other systems were collaborating via it,
that server can restore any of the client repositories
10. Build Artifacts (JAR, WAR, Docker images)
What is artifact JAR file?
An Artifact is “anything” (any file) that can be addressed using its coordinates,
and Maven downloads, installs or deploys for you. Most of them are POMs and JARs
but an artifact can be really anything.
What is artifact WAR file?
A WAR file may be digitally signed in the same way as a JAR file in order to
allow others to determine where the source code came from.
What is Docker image file?
A Docker image is a file used to execute code in a Docker container. Docker
images act as a set of instructions to build a Docker container, like a template. Docker
images also act as the starting point when using Docker. An image is comparable to a
snapshot in virtual machine (VM) environments.
11. Automated tests
What is automated testing?
Automated testing is a software testing technique that automates the process of
validating the functionality of software and ensures it meets requirements before being
released into production. With automated testing, an organization can run specific
software tests at a faster pace without human testers. Automated testing is best suited
for large or repetitive test cases
12. What Are the Different Types of Automation
Testing?
Keyword-driven testing
Integration testing
Unit testing
Smoke testing
Regression testing
Performance testing
Security testing
Data-driven testing
13. Manual Testing Vs. Automation Testing
Parameter Automation Testing Manual Testing
Definition
Automation Testing uses automation
tools to execute test cases.
In manual testing, test cases are
executed by a human tester and
software.
Processing time
Automated testing is significantly
faster than a manual approach.
Manual testing is time-consuming and
takes up human resources.
Exploratory Testing
Automation does not allow random
testing
Exploratory testing is possible in
Manual Testing
Initial investment
The initial investment in the
automated testing is higher. Though
the ROI is better in the long run.
The initial investment in the Manual
testing is comparatively lower. ROI is
lower compared to Automation testing
in the long run.
14. Manual Testing Vs. Automation Testing
Reliability
Automated testing is a reliable
method, as it is performed by
tools and scripts. There is no
testing Fatigue.
Manual testing is not as accurate
because of the possibility of the
human errors.
UI Change
For even a trivial change in the
UI of the AUT, Automated Test
Scripts need to be modified to
work as expected
Small changes like change in id,
class, etc. of a button wouldn’t
thwart execution of a manual
tester.
Investment
Investment is required for testing
tools as well as automation
engineers
Investment is needed for human
resources.
Cost-effective
Not cost effective for low volume
regression
Not cost effective for high
volume regression.