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 Scrum in Agile methodology?

The Scrum approach is a general agile method but its focus is on managing iterative development rather than specific agile practices.

•      There are three phases in Scrum.
–     The initial phase is an outline planning phase where you establish the general objectives for the project and design the software architecture.
–     This is followed by a series of sprint cycles, where each cycle develops an increment of the system.
–        The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project.
The Sprint cycle –
•      Sprints are fixed length, normally 2–4 weeks. They correspond to the development of a release of the system in XP.
•      The starting point for planning is the product backlog, which is the list of work to be done on the project.
•      The selection phase involves all of the project team who work with the customer to select the features and functionality to be developed during the sprint.
•      Once these are agreed, the team organize themselves to develop the software. During this stage the team is isolated from the customer and the organization, with all communications channeled through the so-called ‘Scrum master’.
•      The role of the Scrum master is to protect the development team from external distractions.
•       At the end of the sprint, the work done is reviewed and presented to stakeholders. The next sprint cycle then begins.
Scrum benefits –
•      The product is broken down into a set of manageable and understandable chunks.
•      Unstable requirements do not hold up progress.
•      The whole team have visibility of everything and consequently team communication is improved.
•      Customers see on-time delivery of increments and gain feedback on how the product works.
•      Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed.
In Scrum, Team will have daily Stand-up meeting (Small meeting, not more than 15 min)
Here, Each participant answers 3 questions:
1.    What did you do yesterday?
2.    What will you do today?
3.    What will you do today?
These are not status sessions for the manager. They are team member commitments in front of the team

What is the need of Software Testing?

What is the need of software Testing?
Software Testing is important as it may cause mission failure, impact on operational performance and reliability if not done properly.
        Effective software testing delivers quality software products satisfying user’s requirements, needs and expectations.
Now, why to test the software?
       1.    To make sure that intended product is created (As per requirement document)
       2.    To make sure that, something that work for single person should also work for hundreds, when logged in simultaneously.
       3.    To make sure that, the product work on various browser / OS as per requirement.
       4.    To Ensure Best Quality.
       5.    Coder is a human being, so may lead with many error,
      Most common software problems are
  • Incorrect calculation
  • Incorrect data edits & ineffective data edits
  • Incorrect matching and merging of data
  • Data searches that yields incorrect results
  • Incorrect processing of data relationship
  • Incorrect coding / implementation of business rules
  • Inadequate software performance
  • Confusing or misleading data
  • Software usability by end users & Obsolete Software
  • Inconsistent processing
  • Unreliable results or performance
  • Inadequate support of business needs
  • Incorrect or inadequate interfaces with other systems
  • Inadequate performance and security controls
  • Incorrect file handling.

 

To overcome all above problem & many more, Software Testing is needed.

Suggestions & comments are welcome

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

How is software testing career in future?

        Well, Software Testing Career is quite good , it depends on how you develop your skills and knowledge in testing , if you are good at both automation and manual testing it will a boon to your career growth , so start testing different applications with different levels, learn new tools like Selenium, QTP, Appium and so on and make your software testing career better.
        If you are good in observing & can think as a decoder, then Software Testing is really a good scope to excel in career. Moreover, Software Testing has many dimensions as in different types testing & multiple tools to enhance quality of the product or application.
Apart from Functional Testing; Performance & Security Testing are also important aspect which you can aim to excel in.

Just as an advice, do not restrict yourself to only Manual efforts as quality in less time & cost effective – is always preferred. Automation is the future if you are into Testing domain. With basic coding knowledge, you can write your own scripts and automate the test cases. Core Java, Shell scripting, VB scripting are most commonly used to write automation code among test engineers.

Apart from costly automation tool (like, HP QTP..) companies are inclining towards open-source tools (Selenium is most favorite) which are scalable and comes with zero cost. So, try to get the good hands on the automation tools after you get the good exposure & experience in Software Testing.
        One last point I feel is, it depends on the domain you are working for. I am also a tester in Banking domain. Here, the banking domain knowledge is very important and the testing engineer contributes to the requirement specification of the product also. If you have good scope, you can be in testing. Moreover, you will be promoted easily if you are in testing, as many people choose development.
Talking about compensation –
      I don’t see much difference in salary of developer or tester, in some cases developer get more where as in some cases testers get more. Depend on you always. Well, I have seen, people with 5 years of experience is getting 10+ (LPA) which is not less paid at all.
So, Finally, decision is up to you, how & where you want to start your career.
Comments & suggestions are welcome.

How do I make Test Automation Framework? (Basic Concept)

How should be your ideal automation framework?

         First thing you need to decide “The code which you will write for the Framework then you will not use any other framework for the functionality of your current framework like reporting, Test Plan, Test Management, Reporting and other Testing process”
By this thing “You will make a better framework and also you will achieve a better logic in the programming”
Steps: –
1.   Make the architecture on the paper of the framework
2.   Choose the language what you want
3.   Try to write the code in the pieces (Class and interfaces)
4.   For reporting => Try to make own html pages
5.   Try to make the framework which is easy to use means “make .exe, .jar => so user will use the framework simply by CMD PROMPT, DOUBLE CLICK”

6.   All thing should be Automatically done

The basic workflow of test automation framework is shown in below image –

Ideal Test Automation Framework1 - www.automationtalks.com

As shown in above workflow, each and every thing in your automation framework should be separated, it shows basic steps towards ideal automation framework .

 Test Data should be present in separate Excel / any db. Then your common java code like reading excel, taking screen shot & other common code should be at one place. Your Test Automation framework should be capable of generating log files for future reference. Reports should be generated so that they can shared via email to management. Also most important is taking screenshot. They are very important to claim success / failure of test case.

All above mentioned things can be well tracked and maintained by using testng / junit framework

For more details about automation framework, refer – http://automationtalks.com/test-automation-framework/

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.