Friday, September 2, 2016

Scrum workflow and Scrum Roles in Organization

Scrum workflow

Any scrum workflow is very easy and it can be easily understand from below figure. For any scrum first phase is sprint planning of requirement and then it will go through team and review.





Scrum roles fall into two broad categories:



Core Roles

Core roles are those roles which are mandatorily required for producing the project’s product or service. Individuals who are assigned core roles are fully committed to the project and are ultimately responsible for the success of each project iteration and of the project as a whole.

These roles include:

The Product Owner

Is the person responsible for achieving maximum business value for the project. He or she is also responsible for articulating customer requirements and maintaining business justification for the project. The Product Owner represents the Voice of the Customer.

The Scrum Master

Is a facilitator who ensures that the Scrum Team is provided with an environment conducive to complete the project successfully. The Scrum Master guides, facilitates, and teaches Scrum practices to everyone involved in the project; clears impediments for the team; and, ensures that Scrum processes are being followed.

The Scrum Team

Is the group or team of people who are responsible for understanding the requirements specified by the Product Owner and creating the Deliverables of the project.
 
Non-core Roles

Non-core roles are those roles which are not mandatorily required for the Scrum project and may include team members who are interested in the project. They have no formal role in the project team and may interface with the team, but may not be responsible for the success of the project. The non-core roles should be taken into account in any Scrum project.

Non-core roles include the following:

Stakeholder(s)

Which is a collective term that includes customers, users, and sponsors, frequently interface with the Scrum Core Team, and influence the project throughout the project’s development. Most importantly, it is for the stakeholders that the project produces the collaborative benefits.

Vendors

Including external individuals or organizations, provide products and/or services that are not within the core competencies of the project organization. 


Chief Product Owner

Is a role in bigger projects with multiple Scrum Teams. This role is responsible for facilitating the work of multiple Product Owners, and maintaining business justification for the larger project. 


Chief Scrum Master

Is responsible to coordinate Scrum-related activities in large projects, which may require multiple Scrum Teams to work in parallel. 





Scrum Aspects - Agile Methodology



Scrum Aspects


The Scrum aspects must be addressed and managed throughout a Scrum project 




 

Organization— Understanding defined roles and responsibilities in a Scrum project is very important for ensuring the successful implementation of Scrum.

Business Justification— It is important for an organization to perform a proper business assessment prior to starting any project. This helps key decision makers understand the business need for a change or for a new product or service, the
QualityIn Scrum, quality is defined as the ability of the completed product or deliverables to meet the Acceptance Criteria and achieve the business value expected by the customer.

Change— Every project, regardless of its method or framework used, is exposed to change. It is imperative that project team members understand that the Scrum development processes are designed to embrace change. Organizations should try to maximize the benefits that arise from change and minimize any negative impacts.



Risk Risk is defined as an uncertain event or set of events that can affect the objectives of a project and may contribute to its success or failure. Risks that are likely to have a positive impact on the project are referred to as opportunities, whereas threats are risks that could affect the project in a negative manner. Managing risk must be done proactively, and it is an iterative process that should begin at project initiation and continue throughout the project’s lifecycle.

Scrum Process - Agile Methodology


 Scrum Process

Scrum processes address the specific activities and flow of a Scrum project. In total there are nineteen processes, which are grouped into five phase.

Initiate

1.Create Project Vision—In this process, the Project Business Case is reviewed to create a Project Vision Statement that will serve as the inspiration and provide focus for the entire project. The Product Owner is identified in this process. 


2.Identify Scrum Master and Stakeholder(s)—In this process, the Scrum Master and Stakeholders are identified using specific Selection Criteria. 

3.Form Scrum Team—In this process, Scrum Team members are identified. Normally the Product Owner has the primary responsibility of selecting team members, but often does so in collaboration with the Scrum Master. 

4.Develop Epic(s)—In this process, the Project Vision Statement serves as the basis for developing Epics. User Group Meetings may be held to discuss appropriate Epics. 

5.Create Prioritized Product Backlog—In this process, Epic(s) are refined, elaborated, and then prioritized to create a Prioritized Product Backlog for the project. The Done Criteria is also established at this point. 

6.Conduct Release Planning—In this process, the Scrum Core Team reviews the User Stories in the Prioritized Product Backlog to develop a Release Planning Schedule, which is essentially a phased deployment schedule that can be shared with the project stakeholders. Length of Sprint is also determined in this process.
Plan and Estimate
7.Create User Stories—In this process, User Stories and their related User Story Acceptance Criteria are created. User Stories are usually written by the Product Owner and are designed to ensure that the customer’s requirements are clearly depicted and can be fully understood by all stakeholders. User Story Writing Exercises may be held which involves Scrum Team members creating the User Stories. User Stories are incorporated into the Prioritized Product Backlog. 

8.Approve, Estimate, and Commit User Stories—In this process, the Product Owner approves User Stories for a Sprint. Then, the Scrum Master and Scrum Team estimate the effort required to develop the functionality described in each User Story, and the Scrum Team commits to deliver the customer requirements in the form of Approved, Estimated, and Committed User Stories. 

9.Create Tasks—In this process, the Approved, Estimated, and Committed User Stories are broken down into specific tasks and compiled into a Task List. Often a Task Planning Meeting is held for this purpose. 

10. Estimate Tasks—In this process, the Scrum Core Team, in Task Estimation Meetings, estimate the effort required to accomplish each task in the Task List. The result of this process is an Effort Estimated Task List. 

11. Create Sprint Backlog—In this process, the Scrum Core Team holds Sprint Planning Meetings where the group creates a Sprint Backlog containing all tasks to be completed in the Sprint. 

Implement
12. Create Deliverables—In this process, the Scrum Team works on the tasks in the Sprint Backlog to create Sprint Deliverables. A Scrumboard is often used to track the work and activities being carried out. Issues or problems being faced by the Scrum Team could be updated in an Impediment Log. 

13. Conduct Daily Standup—In this process, everyday a highly focused, Time-boxed meeting is conducted referred to as the Daily Standup Meeting. This is the forum for the Scrum Team to update each other on their progress and any impediments they may be facing. 

14. Groom Prioritized Product Backlog—In this process, the Prioritized Product Backlog is continuously updated and maintained. A Prioritized Product Backlog Review Meeting may be held, in which any changes or updates to the backlog are discussed and incorporated into the Prioritized Product Backlog as appropriate. 

Review and Retrospect
15. Convene Scrum of Scrums—In this process, Scrum Team representatives convene for Scrum of Scrums (SoS) Meetings in predetermined intervals or whenever required to collaborate and track their respective progress, impediments, and dependencies across teams. This is relevant only for large projects where multiple Scrum Teams are involved. 

16. Demonstrate and Validate Sprint—In this process, the Scrum Team demonstrates the Sprint Deliverables to the Product Owner and relevant stakeholders in a Sprint Review Meeting. The purpose of this meeting is to secure approval and acceptance from the Product Owner for the Deliverables created in the Sprint. 

17. Retrospect Sprint—In this process, the Scrum Master and Scrum Team meet to discuss the lessons learned throughout the Sprint. This information is documented as lessons learned which can be applied to future Sprints. Often, as a result of this discussion, there may be Agreed Actionable Improvements or Updated Scrum Guidance Body Recommendations. 

Release 
18.   Ship Deliverables—In this process, Accepted Deliverables are delivered or transitioned to the relevant stakeholders. A formal Working Deliverables Agreement documents the successful completion of the Sprint.
19. Retrospect Project—In this process, which completes the project, organizational stakeholders and Scrum Core Team members assemble to retrospect the project and identify, document, and internalize the lessons learned. Often, these lessons lead to the documentation of Agreed Actionable Improvements, to be implemented in future projects.
 

Scrum Principles - Agile Methodology


Scrum Principles 
Scrum principles are the core guidelines for applying the Scrum stratergy and should mandatory be used in all Scrum projects.
 




Scrum principles can be applied to any type of project in any organization and must be adhered to in order to ensure effective implementation of the Scrum framework. Take a brief of below principle.


Empirical Process Control—This principle emphasizes the core philosophy of Scrum based on the three main ideas of transparency, inspection, and adaptation. 

Self-organization—This principle focuses on today’s workers, who deliver significantly greater value when self-organized and this results in better team buy-in and shared ownership; and an innovative and creative environment which is more conducive for growth. 

Collaboration—This principle focuses on the three core dimensions related to collaborative work: awareness, articulation, and appropriation. It also advocates project management as a shared value-creation process with teams working and interacting together to deliver the greatest value. 

Value-based Prioritization—This principle highlights the focus of Scrum to deliver maximum business value, from early in the project and continuing throughout. 

Time-boxing—This principle describes how time is considered a limiting constraint in Scrum, and used to help effectively manage project planning and execution. Time-boxed elements in Scrum include Sprints, Daily Standup Meetings, Sprint Planning Meetings, and Sprint Review Meetings. 

Iterative Development—This principle defines iterative development and emphasizes how to better manage changes and build products that satisfy customer needs. It also delineates the Product Owner and organization’s responsibilities related to iterative development. 


 

Friday, August 12, 2016

API Automation with postman : Pass Data file in runner


 We go through the collection feature of postman.

Lets start basic usage of collection in runner. To run a collection, open the Collection Runner window by clicking on the link in the navigation bar. Choose a collection from the drop down menu, and hit Start.



So this way you can iterate your collection as many time as you want. So your collection run multiple time as you set value in iteration field.

Second thing is you can run your collection by giving csv or json file to pass your data in your API collection. The Collection Runner let’s you import a CSV or a JSON file and then use the values from the data file inside HTTP requests and scripts. We call these variables data variables. To use them inside the Postman UI, you have to follow the same syntax as environment or global variables. Having the same syntax helps you test individual requests inside Postman using dummy environment values. When you move to the Collection Runner you don’t have to change anything.

Data variables in requests
Variables inside the Postman UI are enclosed inside curly braces. For example, in the screenshot below, {{username}} and {{password}} inside URL parameters would be replaced by corresponding values from the data file:


So like this way you can also pass data to the API and run your collection with different data value.


CSV files
For CSV files to work inside the Collection Runner, the first row needs to consist of variable names that you want to use inside requests. Every subsequent row is used as a data row. Make sure the line endings of the CSV file are in the Unix format. That’s a restriction in our current CSV parser.





JSON files
The JSON file needs to be an array of key/value pairs. The keys are used as variable names while the values are replaced inside requests.







For more information you can check  Using CSV data file post in postman blog.






API Automation with postman : Understand basic writing of test using postman



Postman gives you an environment where you can write and run tests for each request without worrying about any extra setup.
A Postman test is essentially JavaScript code which sets values for the special tests object. You can set a descriptive key for an element in the object and then say if it's true or false.

For example : tests["Body contains post id"] = responseBody.has("userId")

Just see below image that display how to write test for any request.  In second image it is testing request for two things one is content and other is status code. So when request is send to server it will compare response and give test result. By this way you can test your request with different condition.





 
 



Commonly used libraries and utilities

  • Lodash: JS utility library
  • jQuery Deprecated: Cross-platform JavaScript library. This will be removed in future versions of the sandbox.
  • BackboneJS Deprecated: Provides simple models, views, and collections. This will be removed in future versions of the sandbox.
  • SugarJS: Extends native JS objects with useful methods
  • tv4 JSON schema validator: Validates JSON objects against v4 of the json-schema draft
  • CryptoJS: standard and secure cryptographic algorithms. Supported algorithms: AES, DES, EvpKDF, HMAC-MD5, HMAC-SHA1/3/256/512, MD5, PBKDF2, Rabbit, SHA1/3/224/256/512, TripleDES
  • xml2Json(xmlString): This function behaves the same in Newman and Postman
  • xmlToJson(xmlString) Deprecated: This function does NOT behave the same in Newman and Postman
  • postman.getResponseHeader(headerName) Test-only: returns the response header with name "headerName", if it exists. Returns null if no such header exists. Note: According to W3C specifications, header names are case-insensitive. This method takes care of this. postman.getResponseHeader("Content-type") and postman.getResponseHeader("content-Type") will return the same value.

Environment and global variables

  • postman.setEnvironmentVariable(variableName, variableValue): Sets an environment variable "variableName", and assigns the string "variableValue" to it. You must have an environment selected for this method to work. Note: Only strings can be stored. Storing other types of data will result in unexpected behavior.
  • postman.setGlobalVariable(variableName, variableValue): Sets a global variable "variableName", and assigns the string "variableValue" to it. Note: Only strings can be stored. Storing other types of data will result in unexpected behavior.
  • postman.clearEnvironmentVariable(variableName): Clears the environment variable named "variableName". You must have an environment selected for this method to work.
  • postman.clearGlobalVariable(variableName): Clears the global variable named "variableName".
  • postman.clearEnvironmentVariables(): Clears all environment variables. You must have an environment selected for this method to work.
  • postman.clearGlobalVariables(): Clears all global variables.
  • environment: A dictionary of variables in the current environment. Use environment["foo"] to access the value of the "foo" environment variable. Note: This can only be used to read the variable. Use setEnvironmentVariable to set a value.
  • globals: A dictionary of global variables. Use globals["bar"] to access the value of the "bar" global variable. Note: This can only be used to read the variable. Use setGlobalVariable to set a value

Next blog is API Automation with postman : Pass Data file in runner



API Automation with postman : Understand environment and collections

Okay So now we are good with request and response of REST API and how to deal it with POSTMAN.

In this post we will understand good reusable feature of postman. 

So lets look what is  Environment in postman. As tester it is necessary to test API in different environment like QA , Stage , Dev etc.  So for each environment there would be different url exist to call server data.

For exp. suppose i have one url :

QA : http://qa.jsonplaceholder.typicode.com/
Stage : http://jsonplaceholder.typicode.com/
Dev : http://dev.jsonplaceholder.typicode.com/
UAT : http://uat.jsonplaceholder.typicode.com/

Thinking.... 

So do i need to re-write each request for different environment ? Really ... ohh then its very confusing and time consuming to test...  Hey Wait ...don't do that there is solution. Postman give you environment feature through which we can use single request to test in different environment. 

Just click on Manage Environment set all URL in it.











Just check above image that need to select environment and just call key with {{keyname}} and click on send. It will get the response from QA environment.  So if user want to check data from any other environment like Stage, UAT then need to just select environment.

Okay so i think we are done with environment brief. But what about Collection ?

Hmm... Good So basically collection provide you set of API requests which can be combine with one name. So this collection can be download , share to other team or used in runner to run all request  at single click.



Suppose you have different GET, POST, PUT, DELETE request and you want to combine all request in single file then one should create collection. To create it just click on create new collection icon from sidebar and then give the name and description. Now save your all requests one by one to collection. So it will create one bunch or set of API requests. Just go through below image.





Make any request and then just simple save that request in collection.


It will save the request in collection.


As above you can share to team or run collection on single click


API Automation with postman : Understand request and response

As we understand basic UI of Postman now we are going to understand how to deal with sending request and how to read response.

So First and foremost we need any testing API URL to work with request and response.

Good things is that  JSONPlaceholder  provide testing of fake REST API.

You can test with GET , POST , PUT , DELETE using this URL.

So Lets start with API testing.

Root URL : http://jsonplaceholder.typicode.com/

GET Example :

Enter http://jsonplaceholder.typicode.com/posts/1 in request url and select method as GET. Add content type header as json/application. And click on send.  So we are sending request to Get some posts data from client server using postman.





As you can see in above image response of request is display in Body part. Also request is OK so display 200 ok response code.

POST Example :

To pass some data to server we required POST request. So user can pass some data and get desire output in response. To insert or input some data in server database POST , PUT are generally used.


As you can see in above image i am passing json data in raw section. Also request type select as POST and enter http://jsonplaceholder.typicode.com/posts/ url and click on send.
It will send request to server and add post data in database. As you can see response  in Body section and also response code as 201 created.


PUT Example :

To change value of existing data or want to update value of existing posts PUT call is generally use. It is used to update resources of data into server.



As you can see in above image if user want to update some resources value for post id 1 then need to enter roots url with post id. Also select request type as PUT and click on Send.
So It will send PUT request to rest client server and update or change the value for post which id = 1. And also give response in Body with response code.



DELETE Example :

 So for simple want to delete some data from rest client server database you just need to select DELETE and put URL with post id and click on Send. So it will give response code 200 OK means operation is successful and it has delete resource which was requested.



 For more information regarding API code refer this link.


Next blog is for API Automation with postman : Understand environment and collections

API Automation : API Testing make easy with Postman

Think About Rest API Automation Then Think About very easy to use tool POSTMAN.

Gr8...

So we are here learn a very basic and very useful things to implement API automation.

Prerequisite.

So postman is chrome App. So you first need to install POSTMAN add-on into chrome browser. So first install  Chrome browser and then install postman.

Click here to install : POSTMAN

Now you are ready to deal with API testing hurrrray....



Lets just take simple go through of postman UI. To test Rest enable client server for happy path running scenario you need to test simple four request /response  for any API.

GET    - To Get some data via API request
POST  - To Insert/Input some data via API request
PUT    - To Update data via API request
DELETE  - To Delete data via API request.


Below images represent where to put request URL and how to make side  by side request.





 (1).  Basically  request editor in UI is section where user can add base URL to check request and response. Also UI has sidebar which maintain collection of request and also maintain history in history tab.



 (2). Enter Base URL request and add parameters with key value using editor if required. Also select request type as GET , POST, PUT etc.



(3) To supplies authentication use header and give auth type and credential.


Now we will understand basic of sending request and response in next post.

For  API Response code refer API Response Code.



You can also check below links to implement API testing in  postman step by step.

API Automation with postman : Understand request and response

API Automation with postman : Understand environment and collections

API Automation with postman : Understand basic writing of test using postman

API Automation with postman : Pass Data file in runner






Saturday, July 30, 2016

Open Source Software Automation Tools breif introduction

This blog is basically related to introduce very helpful open source software testing tools. It described tools which is used in different type of application testing like web automation , API , performance and mobile testing.


SELENIUM WEBDRIVER
 
The primary new feature in Selenium Webdriver 2.0 is the integration of the WebDriver API. WebDriver is designed to provide a simpler, more concise programming interface in addition to addressing some limitations in the Selenium-RC API. Selenium-WebDriver was developed to better support dynamic web pages where elements of a page may change without the page itself being reloaded. WebDriver’s goal is to supply a well-designed object-oriented API that provides improved support for modern advanced web-app testing problems. This leads WebDriver to support “Multiple Languages” as well as “Multiple Support Browsers” which means that if any API supports multiple languages then this automatically leads to “Multiple Platforms”.

For more details and download visit: http://www.seleniumhq.org/ 



APPIUM
 
appiumAppium is an open-source tool for automating native, mobile web, and hybrid applications on iOS and Android platforms. Native apps are those written using the iOS or Android SDKs. Mobile web apps are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome or the built-in ‘Browser’ app on Android). Hybrid apps have a wrapper around a “webview” – a native control that enables interaction with web content. Appium isl developed and supported by Sauce Labs to test on cloud base platform. Appium is a HTTP server written in node.js which creates and handles multiple WebDriver sessions for different platforms like iOS and Android.
  
For more details and download visit: http://appium.io/


 POSTMAN Jetpacks

Postman helps you be extremely efficient while working with APIs. With Postman, you can construct requests quickly, save them for later use and analyze the responses sent by the API. Postman can dramatically cut down the time required to test and develop APIs. Postman adapts itself for individual developers, small teams or big organizations equally well.

Jetpacks are an awesome set of features which will make your API workflow faster and more efficient. The goal is to make you write less - or nothing at all - and still be able to execute complex scenarios, that would otherwise take a lot of code or an endless series of clicks in other applications.
 
For more details and download visit: https://www.getpostman.com


 Apache jMeter
 
The Apache JMeter application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

 
Apache JMeter may be used to test performance both on static and dynamic resources (Webservices (SOAP/REST), Web dynamic languages - PHP, Java, ASP.NET, Files, etc. -, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.
 






For more details and download visit: http://jmeter.apache.org


Above all tools are open source and it is widely used in industry for testing different types of platform. To enhance this tools into cloud base user need to purchasea licence to run test scripts on cloud envrionment.