Tuesday, August 30, 2011

New Test Series Start -- Automation Tool JMeter

Apache JMeter is open source software, a 100% pure Java desktop 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.


What can I do with it?

Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, 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.


In this following Automation Tool series I will share the basic steps and execution QA cycles.


Step1: 
Download the JMeter Tool from the following location:  Go for *.Zip (binary) not source code (src)
http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

Tuesday, May 03, 2011

LEARN AND IMPLEMENT OF SCRUM


SCRUM IMPLEMENTING:  



What Is Scrum? (Agile)



What Is Scrum? 




The Scrum methodology of agile software development marks a dramatic departure from waterfall management. 

In fact, Scrum and other agile processes were inspired by its shortcomings. 

The Scrum methodology emphasizes communication and collaboration, functioning software, and the flexibility to adapt to emerging business realities — all attributes that suffer in the rigidly ordered waterfall paradigm.


SCRUM Over View in Nut Shell:



From WIKI, Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development. Although the word is not an acronym, some companies implementing the process have been known to spell it with capital letters as SCRUM. This may be due to one ofKen Schwaber’s early papers, which capitalized SCRUM in the title.[1]
Scrum is an art to manage and execute the projects. Scrum guide us how we can utilize the team strength in best manner to make small and quick deliveries by considering client priorities.
Earlier we used to follow the waterfall model. This model was good to cater to stable requirements when client was not having very complex and changing requirements. But as we grow, client becomes more technical and start expecting more from the software. This results in more complex requirements and more quickly changed requirements. Here comes the SCRUM to manage these complexities. So SCRUM
  • Is an art to manage and execute the projects
  • Asks client to prioritize the requirements based on business demand
  • Asks to plan as per client priorities
  • Asks team to make quick deliveries as per business priorities
  • Asks team to meet daily to have a quick status call with each other
  • Advocates empowerment of team rather than control over the team, i.e. share the responsibilities with the team. If team share the responsibility of planning, then it will also share the responsibility for delivery
  • Advocates coaching over bossing
  • Advocates code over documentation
  • Assumes that every team member is mature enough to understand the responsibility and hence team members can choose and own the task
Any person give his best when he or she owns any work by heart, and he can own any work by heart only if he own any work by him/herself  not by assignment. Scrum asks to take benefit of this concept and hence ask to empower the team to plan and choose the task themselves.
Scrum defines three roles for the team members. These roles are divided in two roles, pigs and chicken. Pigs are those who actually works in the project development and so are directly involved in the development. Chicken are the person who are not participating in the development process.
  • Product Owner
    • Product Owner represents the clients. He helps in requirement definition and setting the priorities for deliveries.
    • Product Owner comes under chicken, once he gives the requirements and set the priorities for the deliveries.
  • Team member
    • All other members of the team (developers, testers, designer, analyst etc) except Scrum Master
  • Scrum Master
    • Scrum Master helps the team to follow the Scrum and to follow the set principles for SCRUM.
    • He maintains the process typically like a project manager.
    • It works like a sheep dog who help the herds to be in right direction and save them from external threats.
    • Scrum Master is a person who is highly committed to the team and always works for their growth
    • Scrum Master does not exercise the authority but just facilitates the team members
So team members and Scrum Master comes under ‘Pig’ group and Product Owner, Manager and other stake holders come under ‘Chicken’ group.
Scrum has following important terms
  • Product Backlog
    • It is a list of all the requirements/features which need to be implemented to complete the product.
    • Product owner defines the product backlog and prioritize the requirements with the team
  • Release
    • These are the releases of product to client
    • Team select some of the features form the product backlog with Product Owner and plan to delivery these.
    • This plan is called release plan
  • Sprint
    • These are the internal releases
    • Team select some of the features form the product backlog and plan to complete these in a specific time duration. Feature selection is made after considering the total time duration of Sprint.
    • Sprint durations can not be extended. These are strictly fixed.
    • These helps to judge the outcome of efforts in a small period of time and test the outcome
    • Duration can be up to 1 month
  • Sprint Backlog
    • It is a list of all the features which team choose to complete in current sprint
  • Burn Down Chart
    • It is a chart which shows that how much work is still pending on date from the decided work of the Sprint or Release
Scrum has following important meetings
  •  Daily Scrum
    • It is a meeting where all the team members (generally all PIG) meet once in a day.
    • There may be Chickens in the meeting, however only Pigs are allowed to speak.
    • The meeting time and venue should be fixed.
    • Daily Scrum Meeting is the responsibility of all the team members.
    • Every member should explain three basic questions
      • What did he/she achieve yesterday
      • What is he/she planning for today
      • Any issue
  • Sprint Plan Meeting
    • It is called to plan the sprint with some doable feature set as per client priorities
    • Whole team should participate in th meeting
    • Divide the work among the team members
    • Team estimate the efforts required and allocate the work among them
    • The limit is of 15 minutes
  • Sprint Review Meeting
    • It is held after every sprint to review the outcome of sprint
    • Whole team attend the meeting with Product Owner and analyze the outcome of Sprint
    • Gaps used to be analyzed from the planning and pending items shift for the next sprint
    • The limit is of four hours
  • Sprint Retrospective meeting
    • It is held after sprint execution
    • Whole team sit together and try to learn from the experiences of the sprint
    • It helps to improve the processes in next sprint
    • The limit is of three hours
Scrum team should have ideally up to 7 members as these much members can have good co-ordination with each other as a team. Co-ordination and responsibility sharing is the key of SCRUM.
A few points to consider:
  • Regular Scrum Meetings
  • Daily Scrum should not be more than 15-20 mins
  • No one is authorize to ask the team members about three magic scrum meeting questions, but every team member should explain these him/herself.
  • Sprint duration MUST not be extended
  • Sprint review and retrospective meetings should be held on time and their outcome should be noted down
  • Scrum Master should save the team from external threats and external interventions.

Monday, April 25, 2011

MonkeyRunner Automation Testing Tool for Android O.S

MonkeyRunner Automation Testing Tool for Android O.S: 
The monkeyrunner tool provides an API for writing programs that control an Android device or emulator from outside of Android code. With monkeyrunner, you can write a Python program that installs an Android application or test package, runs it, sends keystrokes to it, takes screenshots of its user interface, and stores screenshots on the workstation. The monkeyrunner tool is primarily designed to test applications and devices at the functional/framework level and for running unit test suites, but you are free to use it for other purposes.
The monkeyrunner tool is not related to the UI/Application Exerciser Monkey, also known as the monkey tool. The monkey tool runs in an adb shell directly on the device or emulator and generates pseudo-random streams of user and system events. In comparison, the monkeyrunner tool controls devices and emulators from a workstation by sending specific commands and events from an API.
The monkeyrunner tool provides these unique features for Android testing:
  • Multiple device control: The monkeyrunner API can apply one or more test suites across multiple devices or emulators. You can physically attach all the devices or start up all the emulators (or both) at once, connect to each one in turn programmatically, and then run one or more tests. You can also start up an emulator configuration programmatically, run one or more tests, and then shut down the emulator.
  • Functional testing: monkeyrunner can run an automated start-to-finish test of an Android application. You provide input values with keystrokes or touch events, and view the results as screenshots.
  • Regression testing - monkeyrunner can test application stability by running an application and comparing its output screenshots to a set of screenshots that are known to be correct.
  • Extensible automation - Since monkeyrunner is an API toolkit, you can develop an entire system of Python-based modules and programs for controlling Android devices. Besides using the monkeyrunner API itself, you can use the standard Python os and subprocess modules to call Android tools such as Android Debug Bridge.
    You can also add your own classes to the monkeyrunner API. This is described in more detail in the section Extending monkeyrunner with plugins.

    The monkeyrunner tool uses Jython, a implementation of Python that uses the Java programming language. Jython allows the monkeyrunner API to interact easily with the Android framework. With Jython you can use Python syntax to access the constants, classes, and methods of the API.
  • MonkeyRunner is an open-source tool used for automating functional tests for Android applications. It is a part of the Android SDK and is built on top of the Jython language. It provides a simple API for writing scripts to simulate user interaction with an Android device or emulator, such as tapping on buttons, entering text, and taking screenshots.

  • MonkeyRunner uses the Android Debug Bridge (ADB) to connect to the device or emulator, and the scripts are written in Python. The tool provides various functions to interact with the device, such as touching the screen, pressing buttons, taking screenshots, and more. The scripts can also be used to automate complex tasks, such as installing and uninstalling apps, rebooting the device, and capturing logs.

  • One of the advantages of using MonkeyRunner is that it allows for cross-platform testing, as it can be used to test applications on multiple devices and emulators. It also enables developers to run tests on a variety of Android versions and screen sizes.

  • However, MonkeyRunner has some limitations, such as the lack of support for testing gestures and animations, which are important features in many Android applications. Additionally, it can be challenging to debug scripts and troubleshoot errors, as the tool does not provide detailed error messages.

  • Overall, MonkeyRunner is a useful tool for automating functional tests for Android applications. It provides a simple API and allows for cross-platform testing, but it has some limitations and can be challenging to debug.

Wednesday, March 23, 2011

User scenario testing for Android O.S



User scenario testing for Android

Robotium is a test framework created to make it easy to write powerful and robust automatic black-box test cases for Android applications. 

With the support of Robotium, test case developers can write function, system and acceptance test scenarios, spanning multiple Android activities.

Robotium has full support for Activities, Dialogs, Toasts, Menus and Context Menus.