Thursday, April 4, 2013

Project Management

Project Management:-

It is an art that comes by experience. It is about planning, implementing, monitoring and tracking, and adopts new procedures while optimizing the use of resources. Project manager will be responsible for the outcome of the project. The different activities done by a project manager are as below

1. Involve in pre sales activities

2. Involve in feasibility study

3. Design a strategy

4. Prepare a detailed plan for the implementation of the strategy

5. Estimate for the resources

6. Acquire human and material resources

7. Assign the activities

4. Monitor and adopt best practices

5. Mentor the team to achieve the goals

6. Communicate with the stakeholders and management on the status of the project

7. Analyze the results and control the course of action

8. Closing the project and getting a feedback from the stakeholders as part of continuous improvement

All the above activities are to be performed to keep the project variables under control.

The different project variables are as below:

Time -
The amount of time required to complete the project.


Cost -
Cost to complete the project including the hiring cost, development, infrastructure required, training needs etc.

Quality -
This is dependant on the time factor. If the time given is less than the required one, quality will be beaten up.

Scope -
Requirements specified by the customer for the end result.

If any of the variable changes it affects any of the other 3 variables. Example if the scope of the project has increased then either the cost of the project is more or time taken to complete is increased or quality is affected.


Wednesday, April 3, 2013

ISO

ISO 9001:2000

Model Overview

Guides how to implement the quality systems and software engineering activities.
The ISO 9001:2000 standards are based on the following eight quality management principles.

1. Customer Focus.
2. Leadership.
3. Involvement of People.
4. Process Approach.
5. System Approach to Management.
6. Continuous Improvement.
7. Factual Approach to Decision-Making.
8. Mutually Beneficial Supplier Relationships.

CMMI

Software Engineering Institute Capability Maturity Model Integration (CMMI®)

On March 1, 2002, the integrated model for systems and software engineering, Integrated Product and Process Development, and supplier sourcing (CMMI®-SE/ SW, version 1.1) was released.

Maturity Levels

There are five maturity levels. Each maturity level defines an approach of process improvement and stabilizes an important part of the organization’s processes.

The five maturity levels are:

Level 1: Initial

The process capability at Level 1 is considered ad hoc because the software development process constantly changes as the work progresses. Schedules, budgets, functionality, and product quality are generally unpredictable. Success depends on having exceptional people who are working in the organization for quite some time.

Level 2: Managed

Level 2 organizations know about basic management controls and have adopted them. Policies for managing a software project and procedures to implement those policies are established. Planning and managing projects is based on experience with similar projects. Software costs, schedules, and functionality are tracked.

The capability of Level 2 organizations can be summarized as disciplined, because the ability to successfully repeat planning and tracking of earlier projects results in stability. The following six key process areas:

• Requirements Management
• Software Project Planning
• Software Project Tracking
• Software Subcontract Management
• Software Quality Assurance
• Software Configuration Management

Level 3: Defined

There is documentation on standard engineering and management processes for developing and maintaining software across an organization. There is a group responsible for the organization’s software process activities.

The capability of Level 3 organizations is summarized as standard and consistent because engineering and management activities are stable and repeatable.

The following are key process areas:

• Organization Process Focus
• Organization Process Definition
• Training
• Integrated Software Management
• Software Product Engineering
• Inter-group Coordination
• Peer Reviews

Level 4: Quantitatively Managed

A Level 4 organization sets quantitative quality goals for both software products and processes. Productivity and quality are measured the capability of Level 4 organizations is summarized as predictable because the process is measured and operates within measurable limits.

Quantitative Process Management and Software Quality Management are the two key process areas.

Level 5: Optimizing

At Level 5 the entire organization is focused on continuous process improvement. The organization has the means to identify weaknesses and strengthen the process proactively, with the goal of preventing the occurrence of defects. Root cause analysis and defect prevention steps are taken.

Key process areas of Level 5 are:

• Defect Prevention
• Technology Change Management
• Process Change Management

Criteria To Select A Model

Criteria To Select A Model

Any IT organization should take in to account the below mentioned four criteria when selecting a model:

• Applicability of the model to the organization’s goals and objectives.

Before adopting a model, the organization should check for the consistency of the criteria imposed by the model with the organization’s goals and objectives. It is important that each criterion in a model be directly related to accomplishing the organization’s goals and objectives.

• Management commitment.

Management commitment is the key factor to get success with any model implementation. The style of management should vary from traditional way to a quality perspective manner to check if the models are implemented properly or how to implement the compliance or different proven methods of doing work.

• Need for baseline assessments.

An organization should know how effective and efficient it is. For this a measurement programs have to be created and goals have to be set that become the baseline for the measurements. It could be both subjective and objective in nature.

• Need for measurable goals and objectives.

Organizations that desire to improve, need goals and objectives to measure that improvement. If a model is accepted as the means for continuous improvement, then measurable goals and objectives can be defined that describe movement toward meeting the model criteria.

Quality models

Purpose of a model

A model is a concept to be accomplished that is ideal. These have specific standards defined under national or international standards organizations. And when these are to be implemented for a purpose the standards can be tailored. These models have to be accomplished for compliance and are measured in "pass/fail" terms.

Compliance assessments can be through first-party, second-party or third-party audits or other types of evaluation.

Organizations choose to adopt a model for any or all of the following reasons:
• Meet business goals and objectives.

Ideally by implementing a model by an organization can refocus the goals and objectives to meet them in a more appropriate manner.

• Requirements are imposed by key customer.

There are scenarios where the key customer imposes the adoption of model in the IT organization to improve the efficiency and effectiveness.

• For competitive reasons.

Few customers’ select IT organizations that is in compliance with a model to do business.

• For continuous improvement.

All the quality models show a way to improve the existing process and how to lead a path for continuous improvement. So having a model would help IT organization to have roadmap for continuous improvement.

Testing types

Testing types:-

Its an approach to test the product or release or software. Depending on the objective of testing, it can be classified in to different types of testing as below.

Alpha Testing

The first test of newly developed product is called as Alpha Testing. Alpha testing is carried out when the product is incomplete and yet still handed over to a testing team. The main goal of Alpha Testing is to bring the customer's comment and feedback upon the Product developing.

At this stage tester's start to track feedback as bugs and document the fixes.
So, in these ways we can plan future work and directions better and we provide the tools and practice to look at the application closely and critically.

By these ways we can get more clarifications on our misunderstanding of the needs or flow of the Application.

 Automated Testing

Automated testing is running test cases where manual participation is not required. In Automated testing usually it contains the form of writing test suites which have multiple test cases , a xUnit library and command line tool that runs the test suite. The process could be automated and looked over from time to time to ensure that when the code changed, no problems were introduced.

Different types of tools had also been developed for the automated testing services. These tools had been helping people in the execution of the tests cases. And moreover automated testing not only saves time and money but at the same time the accuracy of the test is also enhanced.

For the working of the automated testing it must be ensured that correct variable such as the inputs has been entered which in turn will produce better outputs.

 Black Box Testing

Black-box testing enables the software engineer to derive sets of input conditions that will fully exercise all functional requirements for a program. It is a complementary approach that is to uncover the errors. Black-box testing attempts to find the errors in, incorrect missing functions, interface errors, errors in data structures, external data base access, performance error or termination errors.

Black-Box Testing is also called as Behavioral testing. Black-box testing is usually described as focusing on testing functional requirements.

 Beta Testing

Beta testing is the last stage of testing. Beta testing helps to identify flows in the system. The first test, conducted by the system developer, outside the production environment, is called the alpha test; the second is called the beta test and requires participation by the user. If results are not good, a third test, the gamma test, is conducted. A test of new or revised hardware or software that is performed by users at their facilities under normal operating conditions a project high points are verified. Beta testing follows alpha testing.

 Gray Box Testing

Gray Box testing is a technique that combines the Black Box testing and White Box testing in Software testing.

Gray Box testing = Black box testing + white box testing.

Gray Box testing is used to find out defects related to bad design or bad implementation of the system.

In gray box testing, test engineer is equipped with the knowledge of system and designs test cases and test data based on system knowledge.

 GUI Testing:-

GUI testing is a process to test application's user interface and to detect if application is functionally correct.
GUI Testing includes how the application handles keyboard and mouse events, how different GUI components like menu bars, tool bars, dialogs, buttons, edit fields, list controls, images etc reacts to user input and whether or not it performs in the desired manner. GUI Testing can be performed both manually with a human tester or could be performed automatically with use of a software program.
Automated GUI Testing is a more accurate, efficient, reliable and cost effective replacement to manual testing.

In GUI testing the important aspects to be tested are:-
1)Windows:-
User interactions with other applications through different windows like
a)Primary windows.
b)Secondary windows.

2)Menus:-
There are different forms and styles of menus.
a)Action menus (push button, radio button).
b)Pull-down menus.
c)Pop-up menus.
d)Option menus.
e)Cascading menus.

3)Forms:-
Forms contain the screen.
a)Font.
b)Background.
c)Size.

4)Icons:-
These are "visual push buttons," through which user can navigate through the application. These are easily recognizable & easy to learn.

5)Controls:-
There are many types of control component that appears on the screen instantly.
Through these controls the user interacts with the application according to the action prescribed for that control.
Variety of controls are like: menu bars, pull-down menus, cascading menus, pop-up menus, push buttons, check boxes, radio buttons, list boxes, and drop-down list boxes.

 Load Testing

Load Testing helps to identify the problem before deploying the application for end users. With the help of load testing testers can design and simulate usage traffic which can be used to test your application infrastructure for performance, reliability and scalability.

By doing load testing we can achieve.

Software design issues:-

    Incorrect concurrency/pooling mechanism.
    Poor optimization.
    Memory build-up.

Server configuration issues :-

    Web server.
    Application server.
    Database server.
    Load balancer.

Hardware limitation issues :-

    Excessive disk I/O.
    CPU maximization.
    Memory limitations.
    Network bottleneck.

 Performance Testing

Performance testing is designed to test the run-time performance of software within the context of an integrated system. Performance testing occurs throughout all steps in the testing process. Even at the unit level, the Performance of an individual module may be assessed as white-box tests are conducted.

However, it is not until all system elements are fully integrated that the true performance of a system can be ascertained. Software Performance Testing is used to determine the speed and effectiveness of a product. To conduct performance testing is to engage in a careful controlled process of measurement and analysis.

 Regression Testing

Regression testing is used to check that the changes made to a program have not introduced new faults into the system. In principle, during regression testing, all tests should be repeated after every defect. Regression testing is an important strategy for reducing “side effects”. Regression testing is the activity that helps to ensure that changes do not introduce unintended behavior or additional errors.

Adequate coverage without wasting time should be a primary consideration when conducting regression tests. Regression testing is initiated after a programmer has attempted to fix a recognized problem or has added source code to a program that may have inadvertently introduced errors.

It is a quality control measure to ensure that the newly modified code still complies with its specified requirements and that unmodified code has not been affected by the maintenance activity.

 Sanity Testing

Sanity testing is usually narrow and deep.
A sanity test is usually unscripted.
A Sanity test is to determine a small section of the application is still working after a minor change.
Sanity testing is to verify whether requirements are met or not, checking all features.
A sanity test is a narrow regression test that focuses on one or a few areas of functionality.

Sanity Testing is also known as Cursory Testing.
Sanity testing is a cursory testing, it is performed whenever a cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing.

 Smoke Testing

Smoke testing is the process of validating the code changes before the changes are checked into the product's source code. After the code reviews, smoke testing is most cost effective method for identifying and fixing defects. Smoke tests are designed to confirm that changes in the code function as expected and do not destabilize an entire build.

Smoke tests ensure that the primary critical or weak area identified either by code review or risk assessment is primarily validated, because if it fails the testing cannot continue.

 Stress Testing

Stress tests are designed to break a software module. This type of testing determines the strengths and limitations of the software. Stress testing executes a system in a manner that demands resources in abnormal quantity, frequency or volume. This testing is also called as Sensitive Testing.

Sensitive Testing attempts to uncover data combinations within valid input classes that may cause instability or improper processing.

 Usability Testing

Usability testing focuses on determining if the product is easy to learn, satisfying to use and contains the functionality that the users desire

Usability testing is the process by which the requirements of the user are measured, and weaknesses are identified for correction.

The International Organization for Standardization (ISO's) definition of usability is the "effectiveness, efficiency and satisfaction with which a specified set of users can achieve a specified set of tasks in particular environments “

User Acceptance Testing

The final stage in the testing process before the system is accepted for operational use is known as Acceptance Testing. The system is tested with data supplied by the system procurer rather than stimulated data. By performing acceptance testing error may occur in the system requirements. This testing is also called as User Acceptance Testing.

In the case of software, acceptance testing performed by the customer is known as User Acceptance Testing(UAT) or End User Testing. Once the application is ready to be released the essential step is User Acceptance Testing. This type of testing gives the end users the confidence that the application being delivered to them meets their requirements.

Volume Testing

Volume Testing is a non-functional testing.
Volume Testing means Testing the software with large volume of data in the database. Volume testing refers to testing a software application with certain amount of data.

For example, for volume test on your application with a specific database size, you will expand your database to that size and then test the application's performance on that application.

If no problems arise we can say our application is the best one. Sample file of the size you want and then test the application's functionality with that file in order to test the performance. Volume testing can be used in component testing.

 White Box Testing

White-box testing is concerned with testing, the implementation of the program. The intent of this testing is not to exercise all the different input or output conditions but to exercise the different programming structures and data structures used in the program.

White-box testing is also called as Structural Testing or Glass box testing. It is a good practice to perform white box testing during the unit testing phase.

Tuesday, April 2, 2013

Status report template

Status report template

This template is used to report the status of your project to all the stake holders on a periodic basis

It can be customized to report on daily basis or weekly basis etc

Status report template

AI in Software Testing: How Artificial Intelligence Is Transforming QA

For years, software testing has lived under pressure: more features, faster releases, fewer bugs, smaller teams. Traditional QA has done her...