Tuesday, September 29, 2009

Company Quality

The concept of “Company quality” with management and people level focus came to front on the period of 1980s. It was realized by the management that the if all the departments approached quality with an open mind success was possible. This inturn result in the development of quality improvement process.

The company would emphasis mainly on four aspects for quality approach.
1. The elements like controls, job management, adequate processes, performance and integrity criteria and identification of records is consider as one.
2. The competence such as knowledge, skills, experience and qualifications is the next aspect.
3. The elements which are called as soft elements such as personnel integrity, confidence, organizational culture, motivation, team spirit and quality relation ship are considered as another aspect.
4. Infrastructure is also most important aspect.

If any of the aspects is deficient then the quality of the outputs will be at risk.
The approach of the quality management is not limited to any company but it can be applied to any business activity.
Some of the business field that can use the quality improvement process are,
• Design Work
• Administrative services
• Consulting
• Banking
• Insurance
• Computer software
• Retailing
• Transportation
This all the business should comprises a quality improvement process. The quality improvement process is generic in the sense and it can apply to any of theses activites. The quality improvement process establishes a behaviour patter which will in turn help to achieve quality.

This business is in turn supported by quality management practices which can include different number of business systems which are usually concern to the business unit which the activities are to carried out.

In manufacturing and construction activities, these business practices can be equated to the models for quality assurance defined by the International Standards contained in the ISO 9000 series and the specified Specifications for quality systems.
Still in this company quality system, the inspection of the work floor was not controlling. Actual work floor is the reason for the majority of quality problems. This led to the development of the quality assurance and total quality control concepts which are come into being recently.

Friday, September 25, 2009

Project Management Phases

The different phases are:

Requirement Specification:
Requirement Specification is pivotal stage of the SDLC. During this stage the Project Manager will be in constant contact with the Customer to find out the requirements of the project in detail. Main tasks in this phase include Requirement Determination, Risk Analysis, Setting up Schedules, and deciding Deliverables. There are so many ways to communicate with the customer like Instant Messenger, Email, Phone, Voice Chat or personal meeting. At the end of the stage there will be requirement specifications which contain all the details of data the customer needs.

Requirement Analysis and Design:
In the next stage the main players where the Project manager and the System Analyst. They will review the customers requirements and analyze the requirements. later they start designing of the project. System architecture, Database design, Program specifications and Test Scenarios are determined. The detail design document which is prepared by them can be used by the developers and programmers to perform the coding.

Coding and Testing:
Programmers begin programming in this phase using the Detail Design Document. As project is progressing the programmer's progress is monitored by Project Manager and Project Leader respectively. Project Manager will be in constant contact with the customer and provides updates on the progress of the project via MS Project. The programmers follow various coding Standards decided by the company. Project Leader helps the programmers with the coding problems they are facing and guides them to the solutions. Testing is done by the QA Team simultaneously for the completed modules and approval is given to the modules once they have passed their initial tests before integration.

Deployment and Support:
This phase starts with Deployment of the Project. Initial hardware and software setup necessary to run the project is a very critical phase of the project. After project is completed Project Manager contacts the customer and prepares for the set-up. Software is handed over to the customer for acceptance testing only after complete internal testing. Support to the project is provided for a limited number of days during which any minor customer changes are required.

Monday, September 21, 2009

Project Management Methodology


The different phases are
Initiation/Setup
  • Testing Strategy
  1. Automation Feasibility
  2. Manual & Automated components
  3. Tool selection for automation
  • Testing Requirements & Sign off
  1. Unit Testing requirement
  2. Business Functional Requirements
  3. All interfaces
  4. Application security levels
  5. List of platforms for compatibility
  6. Critical transactions for performance testing
  7. Performance goals
  8. Globalization needs
  • Effort estimates and price signoff
  • Scheduling sign off
  • Project Plan
  • Project communication
  • Workflow between Development & TS Testing teams
  • Developer – Tester interaction process for UT (if required)
Knowledge Transfer & Test Plan
  • Application Demo
  • Domain Training
  • Shadow transfer
  • Study of user and operations manuals
  • Globalization rules
  • Test plan and Test cases
Environment Set up
  • Hardware and Software resource set up
  • Ghost image plan
  • Test bed creation
  • Special requirements for globalization testing
Automation
  • Architecture
  • Automation Test Flow
  • Identify reusable elements
  • Create and test scripts
  • In-line auto test setup
Performance Test
  • Critical transactions
  • Scripting
  • Environment setup
  • Iterative test run
  • Analysis
Execution
  • Execute test scripts or cases
  • Log, track and report defects
  • Improve and increase automation
  • Monitor, analyze and feedback until Q levels achieved
Warranty preparation & support
  • Allocate technical team to support warranty levels
  • Optionally agree to a per/bug payment if errors are above
  • Warranty levels
  • Integrate warranty support team into maintenance team
  • Live monitoring
  • Warranty bug fixing
Continuous Improvement
  • Increase automation levels
  • Improve test scripts and cases
source: http://onestptesting.com

Friday, September 18, 2009

Agile Project Management

The agile project will obviously make the traditional project management problems
1) It is not fully planned because there is no clear picture where it is going? So the fully fledged planning merely impossible during the starting.
2) Only a little amount of planning can be done and can iterate the planning on course.
3) During the execution many things will happen.
4) The risk management is a vital thing in this agile testing.
5) During the control phase it is needed to measure the various happening so that it can be guided.
6) We should measure all the readings so that we can keep an eye of where actual are and where can be moved to be?
7) When all the testing done and we knew it is done then we can close the testing.
So the agile project management can release the product at anytime without prior notice and that it can close the module at any time.

The Nature of Testing
Agile testers are called to be developers testing.
• their perspectives are special
• The developers rely on the testers for requirements which is known as test first development.
• Developers have to wait for some hours or may be day to get the requirements from testers.
• Agile products the builds are readily available.
• The testing cycles should complete quickly.
• It always changes the nature of plan to test and develop the test.

Agile Project Managers
Agile project managers are those who guide the projects.
• Negotiate each repeating contents (is it possible to fit one more user story).
• Tracking of the various iteration changes or progress.
• A 15 minute daily standup meeting should be facilitated to expose the progress and obstacles.
• Customer and team working together should be facilitated.
• Use old iteration completion to plan the next iteration(old data should be help full to plan the next iteration).
• Agile project manager needs “soft” skills like Negotiation, oral communication and influence to make the project management effective.

Project Initiation questions:
• How many of you write project charters?
• How many of you jump directly to the project schedule?
• Project charters are invaluable (need of the project, returns for the project, risks and people associated).
• These are the circumstances when the need arises
o One customer can’t represent the entire customer set/
o The customer can’t/won’t sit with the team
o You’re a pilot project trying out agile methods

Project Planning
Planning is not the holy way of the successful project
But without a plan you can’t be successful.
Plan only the needful thing don’t bother about the rest
• How many of you plan the whole project at the beginning?
• How many of you plan to replan?
• Agile projects practice schedule and planning iteration, as well as development iteration.

Steer Guide for an Agile Project
Daily 15-minute standup meetings
• Measure each iteration’s velocity
• Monitor fault feedback ratio
o Refactoring is updating the code, not the design
Tells you whether you need to change pairs or institute other peer review techniques.

Iteration close criteria
• “Did we accomplish all the user stories we thought we could do?”
• “Is it time to complete an iteration?”
• “Can the customer use what’s in this iteration?”
• Can perform a quick retrospective

Test Planning
• How to develop the test strategy documents, release criteria and what and who will test on which configurations.
• How many of you plan for X iterations of testing?
• How many of you plan for test automation?
• Agile projects practice testing iteration, as well as development iteration

Testing in an Agile Project
The automated tests are developed at the top level.
• Developers develop unit tests
• Develop automated tests at the integration level or component level.
• Refactor the tests
• Agile projects demand automated tests (as the main driver for tests)

Completing Testing for an Agile Project
• If the testing is conducted along with user then there is no need of acceptance test again.
• Some projects plan for a short iteration with exploratory testing to run through all the system tests and fix problems they missed.
• Measure code coverage to see if large holes

Define quality to someone
There are someone which should be care about the most.
There is multiple users with their own agenda.
Why should you care about what quality means for your project.

About Iterations
• Two-six weeks long (2-3 weeks is better)
– An iteration should be as long/short as you are willing to throw the iteration’s work away
– Team decides what they can accomplish within an iteration
– Team monitors its velocity: number user stories/iteration
• Customer and team develop user story cards (not a formal requirements document)
• Customer and team work together to understand each user story
• Testers and customer write acceptance tests
• All code is developed test-first (unit tests)
• Use some sort of peer review technique (pair programming, informal review)

Choose What to Measure
• EQF (Estimation Quality Factor)
• FFR (Fault Feedback Ratio)
• Cost to fix a defect
• When people work on the project vs. when they are assigned

Thursday, September 3, 2009

UNIX shell Scripting

One of the main part of the SDLC cycle is Testing. The Shell, which is a part of UNIX, can help to do the testing smartly and quickly. Here we will discuss some of the advantages of UNIX shell scripting for test automation. some shell commands for automatic testing. The how to port the testing scripts to windows.

Introduction to UNIX

UNIX is the most popular among various operating systems; it has so many advantages like.

Multitasking: UNIX is designed to do many things at the same time. in computing, multitasking is a method by which multiple tasks or processes share common processing resources. In a computer with a single CPU, only one task is said to be running at any point of time, meaning that the CPU is executing instructions for one task. Multitasking solves the problem by scheduling. Like spooling to the printer of one file and editing of other file. This is important for users as they don't need to wait for one application to end before starting second one.

Multi-user: Multi-user is a term that defines an operating system or application software that allows concurrent access by multiple users of a computer. Time-sharing systems are multi-user systems. The computer can take the commands of a number of users to run programs, access files, and print documents at the same time.

Stability: One of the design goals of the UNIX is Robustness and Stability. The UNIX is stable by its own nature. UNIX doesn’t need Periodic reboot to keep the system stable to maintain performance levels. There is no problem of memory leak ups so it won’t freeze up or slows down. It has continues up time more than a year or hundreds of days. Therefore it requires less administration and maintenance.

Performance: In networks and workstations UNIX system provides high level performance. At a time it can handle large numbers of users. it is possible to tune the UNIX systems in a better way to meet our performance needs ranging from embedded systems to Symmetric multiprocessing systems.

Compatibility - UNIX can be installed on different types of hardware machines, including main-frame computers, supercomputers and micro-computers. Linux- One of the popular variants of UNIX which will run on almost 25 processor architectures including Alphs/VAX, intel, PowerPC etc. UNIX also is compatible with windows for file sharing etc via smb(samba file system) and NFS(Network File system).

Security: UNIX is one of the most secure operating systems. “Firewalls” and flexible file access permission systems prevent access of unwanted visitors or viruses.

UNIX Architecture Diagram:



Shell is the ‘command interpreter’ for UNIX systems. It resides at the base of most of the user level UNIX programs. All the commands invoked by user are interpreted by shell and it loads the necessary programs into memory. Thus being a default command interpreter on UNIX makes shell a preferred choice to interact with programs and write glue code for test scripts.

Advantages of using Shell for test automation on UNIX

Following are some of the advantages of using Shell for test automation on UNIX,

Free: Most of the popular shells are free and open source no additional cost. No Additional software required: All the UNIX systems have a default shell already installed and configured (bash/ksh/csh). So there is no need to spend extra time to set up the shell. Shell is something very common to UNIX systems and a inhabitant always understands the problems pretty well and help resolving it.

Powerful: It provides plenty of programming constructs to develop scripts with simple or medium complexity.

Extensible: It is possible to extend the shell scripts by using additional useful commands/programs for extending the functionality. it is possible to write shell scripts using default editors available (vi, emacs etc) and can run and test it. No specialized tool is needed for the same.

Color high lighted report: Can even generate color-highlighted reports of test case execution, which is of great help.

Portability: Shell scripts are portable to other UNIX platforms as well as to Windows via Cygwin. Cygwin which is a shell on windows allows us to execute shell scripts on windows also.

Shell Commands

For testing it is important to do test setup, test procedure steps, validation of actual result with expected result, clean up steps to bring the application back to original state, scheduling a test, prepare test results log, and report the test results. Shell has many commands, which can help to achieve automation of these test activities.

Following are some useful Unix Shell commands for automation.

Verification and setup testing: When we want to test for installation/ uninstallation etc we can effectively use the file verification functionality of the shell.
-f to check whether a file exist
-r to check whether a file is readable
-w to check whether a file is writeable
-x to check whether a file is executable
We can also invoke external commands and check for their return code for success/failure of execution using predefined variable’$?’.
Also availability of common looping constructs like 'for' and 'while' make shell obvious choice to automate installation/ uninstallation testing, checking out whether commands/programs are executing successfully or not and functionality testing as well.
Most of the time we need to setup some environment variables, have some proper links (test environment) to set, this task can be automated using shell and is of great help.
Interactive Application testing using expect
Expect is a program that talks to other interactive programs based on a script. We need to mention the “expect” to what to expect from the program and what should be the response need to send. When writing an “expect” script, the output from the program is an input to the “expect script” and output of the “expect” script is input to the program. So now the “expect” script keep on expecting output from the program and keep on feeding input the interactive program, thus automating the interactive programs. Expect is generalized so that it can interact with any of the user level command/ program. Expect can also talk to several programs at the same time. In general expect is useful for running any program, which requires interaction between user and the program. All that is necessary is the interaction can be characterized using a program.

Executing shell scripts on Windows using Cygwin
Cygwin is a Linux like environment for windows. It consists of two parts - A dll, cygwin1.dll which acts as a Linux emulation layer providing Linux API functionality.
- A collection of tools, which provide Linux look and feel.

Cygwin is available under GPL (GNU Public License) and is free software. Cygwin gives us almost all standard unix shells (bash, ksh, csh etc) so you can run most of your scripts on windows as well. Thus cygwin provides lot of portability to shell scripts.
When not to use shell scripts for automated testing

It’s not a good idea to use shell scripts in following cases.
- Need to generate or manipulate graphics or GUI
- Need port or socket I/O
- Complex applications with type checking, function prototyping etc
- Need data structures like linked lists, trees etc.
If any of the above is true it’s a good idea to use more powerful languages like C, C++ or Perl/ Python for test automation

Reference:
http://en.wikipedia.org/wiki/UNIX
www.Onestoptesting.com