What is Agile methodology in Software Development?

Agile methodology is an alternative to traditional plan-driven Waterfall project management. Agile methodology promotes continuous iteration, typically used in software development. It is more of people oriented which helps in increasing productivity while reducing risks.  Simply put, it emphasis on adapting to change, as opposed to attempting to predict everything from the start.

 Agile model includes more client interactions as compared to normal testing models.
It means after completing one module you have to show it to client and get it approved.
If they like it start with next one otherwise redo the first.
It includes sprint teams and sprint masters who basically manage each team. All functionalities are divided into number of sprints which are determined by discussions with clients and after each sprint client approval is needed to start next one.
Agile is a young methodology used by software developers and nowadays in the field of marketing and well. Replacement of Waterfall techniques, Agile focuses on the value driven approaches.
With the advancement of software development, technologies and business requirements, the traditional models are not robust enough to cater the demands. As a result of this, the information technology community developed agile software development models.
KEY PRINCIPLES OF AGILE:
The Agile Manifesto is based on twelve principles:
  1. Customer satisfaction by early and continuous delivery of valuable software
  2. Welcome changing requirements, even in late development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly


Challenges for tester with Agile model:
  • There will be no client requirement document. All information is gathered by meetings with the concerned people.
  • Code is being tested many times in the whole process.
  • Regression testing will be in between of process.
Advantages of using Agile model:
  • With this model, you can easily save time for your project. Testing is done parallel with the development process.
  • Testing is iterative in nature so you can get assure of quality.
  • Every small change will be visible to client so client will not to worry much about quality.
Agile Process Models
What is agile - www.automationtalks.com
There are various Agile Models used in market, they are –
n  Extreme Programming (XP)
n  Adaptive Software Development (ASD)
n  Dynamic Systems Development Method (DSDM)
Scrum
n  Crystal
n  Feature Driven Development (FDD)
n  Agile Modeling (AM)
Let us Study about Scrum in details here

Suggestions & comments are welcome.

Next Topic: different software development life cycle models

What is DevOps?

DevOps is not job title, software, process or methodology. It is a management philosophy
A healthy culture of organization’s Dev and Ops guys to cooperate with each other.

DevOps is talking about many aspects of Development and Operations processes while trying to optimize the engineering organization for growth and infrastructure for scale.

devops - www.automationtalks.com

DevOps culture is talking about:

  1. Engineers empowerment – by giving engineers more responsibility over the whole application lifecycle process. (dev -> test -> deploy -> monitor -> be on call)
  2. Test Driven Development – write tests before you write code. Unit tests, integration tests, system tests. This will help increase the quality of your service and give you more confidence to release faster and more frequent.
  3. Automation – automate everything that can be automated. Test automation, infrastructure automation (infrastructure as a code), deployment automation, etc..
  4. Monitoring – monitor your apps, build monitoring alerts well. It should save your time, don’t flood with metrics and alerts.
  5. Self service – provide a self service for any framework that you build or anything that you do. Don’t be a bottleneck.
  6. People – but most importantly its talking about people culture that should be open minded, transparent, egoless, professional, with “can do” attitude.
So how has DevOps manifested itself in companies today? The most common things you will see, though not exclusively, are:
  • Agile software development
  • Continuous integration/deployment
  • Virtualized or containerized infrastructure/resources
  • Continuous penetration testing and vulnerability monitoring
  • Service oriented architectures and/or micro services
  • System and process performance monitoring
These in themselves are not DevOps. These are methodologies, tools, frameworks, design patterns that are used to achieve the DevOps philosophy.

Hope you would have got basic idea of DevOps with this now.
Your Comments & Suggestions are welcome

Install Jenkins – Continuous Integration Tool

Before we talk about install jenkins, let us understand about what is jenkins first

What is Jenkins?

Jenkins is a Continuous Integration server. (Kind of advanced task scheduler). Basically Continuous Integration is the practice of running your tests on a non-developer machine automatically every-time someone pushes new code into the source repository.

Jenkins can be standalone (Using Jenkins.war file) or hosted (Install as a windows service).

  1. Install Jenkins – standalone client installation using Jenkins.war –

Jenkins Installation:

Prerequisite – 1. Java JDK installed. 2. Tomcat server is configure.

Step01:

Download the jenkins.war file from Jenkins Homepage.  URL:   https://jenkins.io/download/

Open Command Prompt.

Change directory to path where Jenkins.war is present.

Step02:

From this file you can start Jenkins directly via the command line with below code –

java -jar jenkins*.war.

Refer below screen shot.

 

 

 

When you do this process first time, it will take some time, some processes will be running in cmd.

Once you see below message, then Jenkins installation is complete

If you installed Jenkins locally, you find it running under the following URL: http://localhost:8080/

Access the installed Jenkins via URL – http://localhost:8080/

install jenkins

 

 

 

 

 

 

 

2. Install Jenkins – Hosted / Windows as a service

This is very simple to install jenkins as a windows service. Once you have launched jenkins which is installed by using above mentioned steps, Just launch it.
Now Go to Manage plugins, There you can see option as “Install as windows service”. Click on it.
Now, Select your installation directory and click on install.
Once installation is complete, you will see below window.
Once Jenkins is restarted, just go to services in your computer so that you can see that jenkins is started.
Now, next time onwards, you need to install jenkins every time from command prompt. You can enable or disable this from services window, as shown in above image.
Hope this helps.

What is Continuous Integration (CI) ?

Continuous Integration –

           Continuous Integration is the process which “run your project’s Code after someone change the code to the repository”, It also notifies all involved team if the build fails.

continuous-integration-CI-www.automationtalks.com

          Every time when somebody from the team change the code into the repository, a server (can be a script) check those commits and does a build of your code.
          A broken build should always be fixed immediately. A good CI process will help the team to move fast, with cleaner code and with a high level of confidence in the work they are doing.
An example:
Suppose developer A and B are both working on new features concurrently in modules X and Y, and both these modules depend on a third module Z. In order to complete their features both developers must make changes to module Z.

         Now, earlier both the developers are working separately by not committing their changes to the source control. Over a time, each of them would have copy of module Z which has very different code from each other. Now integrating both developers code with existing one will be a tough challenge.

The practice of continuous integration attempts to alleviate the cost of this integration step by having both developers commit to the main line frequently instead of leaving their changes in isolation, and also having both developers pull recent changes from the main line just as frequently. The effect of this practice is that a divergence in their shared dependency is found as soon as possible. This is beneficial as the sum effort to fix the individual conflicts is less than the effort to fix all conflicts at a later point in the future.

          Various Continuous integration tools used in market are Jenkins, TeamCity, Bamboo, Buildbot, TravisCI, Strider etc.