Thursday, April 26, 2012

PMI-PMP Preparation || What are Project Stakeholders?

People/Group  which either INFLUENCE OR INVOLVE OR gets IMPACTED positively of negatively by a Project. Some of the key stakeholder of any project can be - Project Manager, Customer, Performing Organization, Project Team, Project Management team, sponsor, PMO, vendors, government etc.


Stakeholder either has any INFLUENCE on a project OR INVOLVED in some way OR IMPACTED by a project. 


- Influence
- Involved
- Impacted


Identification of right stakeholders is extrenely important for a Project Manager.

Wednesday, April 25, 2012

PMI-PMP Preparation || How to differenciate between Portfolios, Programs and projects? (Project Endeavors) - PART2

So far, we have discussed Projects, Operations, Programs and Portfolios individually and here, we are going to discuss about basic differences between these. Here we shall discuss on the basis of different basic parameters -

SCOPE :-

Project : Well Defined Scope.
Program : More attuned towards benefits.
Portfolio : Frequently changes with change in Strategy.

Planning :-

Project : 'Rolling Wave' planning
Program : Plan for a Program, which guides Project planning
Portfolio : Top level plan which of-course is main benchmark for all plans.

Management:-

Project : Project Manager, who mainly concentrate on one Project at any point of time
Program : Takes care of multiple Projects of similar types
Portfolio : Takes care of overall Portfolio of various projects/programs

Change Control:-

Project : Keep changes minimum
Program : Open to changes
Portfolio : Market driven changes are always welcome

Delivery Style :-

Project : Task oriented
Program : Benefit Realization
Portfolio : Value Oriented

Monitoring :-

Project : Project Objective related
Program : benefit related
Portfolio : Value indicator or overall performance
 

Tuesday, April 24, 2012

PMI-PMP Preparation || How to differenciate between Portfolios, Programs and projects? (Project Endeavors)

Before we start discussing about Portfolios and Programs, I would recommend to check about Projects and Operations @ HERE

At top level, Program is basically a group of Projects managed in a coordinated way to achieve synergy which is  not available from managing those Projects individually. 


At the same time Portfolio is group of Projects and Programs and associated operations to facilitate effective management to achieve strategic objectives. Portfolios are designed by main thoughts around business proposition and strategic coherence. 

Program Management at top level take cares of -

- Managing inter-dependencies between different projects and operations. 
- Resolving resource constraints, aligning strategic directions, resolving issues and change management stuff.
- Capability enhancement and achieving end result 
- Program Managers are more open to changes as compared to Project Managers. 

 Few things about Portfolios -

- Portfolios are directly mapped to strategic goals of any organization.
 - Portfolio management is mainly driven by business propositions, market demand and need to maximize  vlue of Organization.
- Guiding investments to streamline organizational objectives.  

Friday, April 6, 2012

Some basic things about White-Box Testing and relevant stuff !

Let's start with basic understanding of White Box Testing first -

White box testing is a method to test the functionality of the code by passing parameters within the code itself.
White box testing involves looking at the structure of the code. When we know the internal structure of a product, tests can be conducted to ensure that the internal operations performed according to the specification. And all internal components have been adequately exercised.
White box testing is also called Structural testing or Glass box testing.


How to approach for White Box Test Planning and Execution :-

In general prerequisites for white box testing are the same as for black box testing. The only difference is the access to the application source code. The white box tester should ask for detailed requirement, functional specifications, high-level design documents, detailed design documents and source code. The white box QA Engineer would analyze the source code and prepare test cases for testing the functionality to ensure that the code is behaving according with the requirements and specifications.


Biggest Limitation of White-Box Testing

Test-Coverage. With most of the White Box Testing techniques,  it's hard to achieve reasonable program paths and you always need to plan testing appropriate workflows.

PROS and CONS of White Box Testing and Black Box Testing.

White Box testing:

Advantages
1) more code coverage
2) more error can be found earlier during the development process.
3) The whitebox testing could start in the early phase along with software development.
4) Just a main module from developer is enough to start to test by using stubs.
5) helps giving more stable build

Disadvantage:
1) more time consuming to develop test cases as it involves development effort
2)often new architecture need to be designed to suit your testing needs.
3) Testers need to be involved in requirements , software design document review also.

Black Box Testing:

Advantages:
1) testers need not know the softwrae design of the SUT
2) requirements are enough to develop test cases
3) Black box tetsing is usually done manual except
 
Disadvantages:
1) more time required to test each test case and verification results
2) less code coverage
3) some scenarios can be eliminated due to human error or ignorance of the system.


Cyclomatic complexity is a software metric which measures the number of linearly independent paths through a program source code.

V(G) = E-N+2

where, E=No. of edges, N=No. of nodes

Tuesday, April 3, 2012

Quick Interview Questions on Test Automation || Basics of Software Testing Automation


# Top level scenarios which you would want to Automate in your Software Development Life-cycle?

1. Sanity tests, which is repeated on every build.

2. Stress/Load tests where we simulate a large no of users, which is manually impossible

3. Regression tests, which are usually executed after every code change)

# Some standard practices for writing Automation Scripts :-

1. Proper code guiding standards

2. Standard format for defining functions, exception handler etc

3. Comments for functions or various parts of the Test-Scripts.

4. Proper error-handling mechanisms

5. The appropriate synchronization techniques

6. Proper framework developed to built scripts

Friday, March 30, 2012

What is the differrence between Unit Testing and API Testing ?

Unit Testing is an activity to verify functionality of smallest part of compilable code.

API Testing, Application Programming Interface Testing, is mainly about testing subroutines in a particular application. 

So if we take these definitions, at times we as tester may refer both of these terms interchangeably. This will happen when we consider Unit Testing  as an activity for testing Functions of C++ and API testing will again be same thing is this case.

Ideally API Testing is something which is done by Testing team on an application build, while Unit testing is done by Developers and can be done without actually building the application. 

We need to research more on it from practical point of view and will update this article again. Please feel free to share your thoughts through comments.

Wednesday, March 28, 2012

Refreshing some basics of PERL || Some common Interview Questions on PERL?

Since you are expected to know Perl and you have used PERL in your projects, it's a very obvious thing that Interviewer ask you the reason for choosing PERL for doing something in your project. Why not other scripting language?

The very simple answer to this question is that Perl is a very power Interpreter and FREE as well :)
Apart from this PERL is portable, easy and Flexible enough of learn & apply.

Subroutine is reusable set of code in Perl which can be accessed from different parts of the script.

CPAN in Perl - CPAN, the Comprehensive Perl Archive Network, is an archive of over 100,000 modules of software written in Perl, as well as documentation for it.

Defining Object of a Class -

use Class;

my $Object= Class->new();

Reading Command-Line arguments in PERL -

@ARGV is the array which contains all arguments we get from Command-line.

#!/usr/bin/perl
$numArgs = $#ARGV + 1;
print "thanks, you gave me $numArgs command-line arguments. ";
foreach $argnum (0 .. $#ARGV) {
print "$ARGV[$argnum] ";
}

Running a BAT file in Perl -

system("start C:\\Temp\\mybatchfile.bat");

Concatenation in Perl -

$filename = "/tmp/" . $file_name . ".tmp";

$filename = "/tmp/${file_name}.tmp";


Lot of basics around Perl are very well covered at  http://www.perl.com/pub/2000/10/begperl1.html

Tuesday, March 27, 2012

PMI-PMP Preparation || What are different 'PROJECT CONSTRAINTS' as per PMBOK

Here are SIX interlinked CONSTRAINTS for any project. Any change in one of these will surely impact any other constraint.

1. Budget
2. Resources
3. Schedule
4. Quality
5. Risk
6. Scope 
Here we are not going to check out definition of these, as most of these are pretty easy to understand and relate to. Risk is something which is very closely associated to assumptions we make in any project and every Assumption carries a level of risk with it. We shall look into this in detail...

Related stuff -

- Triple Constraint Theory (COST, QUALITY or SCOPE needs to balanced to achieve a Quality Level)
- Flexibility Matrix

PMI-PMP Preparation || What exactly is 'PROJECT MANAGEMENT'

As per PMBOK 'Project Management' is the application of knowledge, Skills, Tools and techniques of project to meet Project requirements.

Few basic things to remember about Project Management - 

- Identifying Requirements
- Establishing Objectives
- Balancing Scope
- Timing and Cost
- Adapting the plans to different concerns of STAKEHOLDERs.

Project Management is actually accomplished through application and integration of various PM processes. These processes include - INITIATION, PLANNING, EXECUTION, MONITORING & CONTROL and CLOSING

PMI-PMP Preparation || What are basic differences between a 'PROJECT' and an 'OPERATION'

Here are few basic differences between PROJECT and OPERATION :-

1. PROJECTs are TEMPORARY
OPERATIONs are ONGOING.

2. PROJECT are UNIQUE
OPERATION works on a STANDARD product

3. PROJECT has definite START and END dates
OPERATIONs are INDEFINITE.

4. PROJECT usually comprises of HETEROGENEOUS-TEAMS
OPERATION comprises of HOMOGENEOUS-TEAMS

By Heterogeneous we mean a team having members attaining different skill-sets.

Monday, March 26, 2012

PMI-PMP Preparation || What is Project - Quick & Crisp walk-through in terms of Characteristics

As per PMBOK, if we define 'Project' - It's a TEMPORARY endeavor undertaken to create a UNIQUE product, service or result.

Some standard Characteristics of PROJECTS -

- Definite START and END DATE
- UNIQUE ENDEAVOR
- OBJECTIVE Oriented
- Usually involve PROGRESSIVE ELABORATION and ROLLING WAVE PLANNING

Projects are attainable, Time-Bound and Measurable as well !

Hope these quick notes will help in memorizing basic characteristics of a Project. Please feel free to share your viewpoint and any other suggestions to improve it further.

Sunday, March 25, 2012

What are basic differences between Stored Procedures and Functions in SQL?

1. Procedure may return none or more values. Function must always return one value either a scalar value or a table.
    

2. Procedure have input, output parameters.Functions have only input parameters.
    

3. Stored procedures are called independently by EXEC command whereas Functions are called from within SQL statement.
    

4. Functions can be called from procedure. Procedures cannot be called from function.
    

5. Exception can be handled in Procedure by try-catch block but try-catch block cannot be used in a function.    

6. Transaction management possible in procedure but not in function.

What are basic differences between TRUNCATE and DELETE

Delete command removes the rows from a table based on the condition that we provide with a WHERE clause. Truncate will actually remove all the rows from a table and there will be no data in the table after we run the truncate command.

TRUNCATE:

1. TRUNCATE is faster and uses fewer system and transaction log resources than DELETE.

2. TRUNCATE removes the data by deallocating the data pages used to store the table's data, and only the page deallocations are recorded in the transaction log.
        
3. TRUNCATE removes all rows from a table, but the table structure, its columns, constraints, indexes and so on, remains. The counter used by an identity for new rows is reset to the seed for the column.
        
4. You cannot use TRUNCATE TABLE on a table referenced by a FOREIGN KEY constraint. Because TRUNCATE TABLE is not logged, it cannot activate a trigger.
        
4. TRUNCATE cannot be rolled back.
        
5. TRUNCATE is DDL Command.
        
6. TRUNCATE Resets identity of the table
    
DELETE:
        
1. DELETE removes rows one at a time and records an entry in the transaction log for each deleted row.
        
2, If you want to retain the identity counter, use DELETE instead. If you want to remove table definition and its data, use the DROP TABLE statement.
        
3. DELETE Can be used with or without a WHERE clause
        
4. DELETE Activates Triggers.
        
5. DELETE can be rolled back.
        
6. DELETE is DML Command.
        
7. DELETE does not reset identity of the table.


Following link wonderfully describe the use of DELETE, TRUNCATE and DROP - http://beginner-sql-tutorial.com/sql-delete-statement.htm

Friday, March 23, 2012

Are you again debating Agile with Standard Waterfall Methodology? || Agile Vs. Waterfall Methodology

At a very broad level we can say that classic waterfall method stands for predictability, while Agile methodology spells adaptability.
 
Here we shall mainly look at Advantages and Disadvantages of Agile Methodology. Finally we shall do a comparison of Agile and Waterfall in different contexts. 


Advantages of Agile Methodology - 

1. Focus on the rapid delivery of business value.

2. Agile development accelerates the delivery of initial business value, and through a process of continuous planning and feedback, is able to ensure that value is continuing to be maximized throughout the development process.

3. Easily adapting to changing requirements throughout the process.

4. Much more accurate visibility into the actual progress of projects is available.
 
5. Face to face communication and continuous inputs from customer representative leaves no space for guesswork.

Refer http://www.versionone.com/Agile101/Agile_Benefits.asp for more detailed information around the same.

Disadvantages of Agile Methodologies -

1. In case of some software deliverable, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.

2. There is lack of emphasis on necessary designing and documentation.

3. The project can easily get taken off track if the customer representative is not clear what final outcome that they want.

4. Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.

HERE IS HOW WE CAN COMPARE WATERFALL MODEL WITH AGILE METHODOLOGY -

- Once a stage is completed in the Waterfall method, there is no going back, since most software designed and implemented under the waterfall method is hard to change according to time and user needs.  The problem can only be fixed by going back and designing an entirely new system, a very costly and inefficient method. Whereas, Agile methods adapt to change, as at the end of each stage, the logical program, designed to cope and adapt to new ideas from the outset, allows changes to be made easily.  With Agile, changes can be made if necessary without getting the entire program rewritten.  This approach not only reduces overheads, it also helps in the upgrading of programmes.


- Another Agile method advantage is one has a launchable product at the end of each tested stage.  This ensures bugs are caught and eliminated in the development cycle, and the product is double tested again after the first bug elimination.  This is not possible for the Waterfall method, since the product is tested only at the very end, which means any bugs found results in the entire program having to be re-written.

- Agile’s modular nature means employing better suited object-oriented designs and programs, which means one always has a working model for timely release even when it does not always entirely match customer specifications.  Whereas, there is only one main release in the waterfall method and any problems or delays mean highly dissatisfied customers.

- Agile methods allow for specification changes as per end-user’s requirements, spelling customer satisfaction.  As already mentioned, this is not possible when the waterfall method is employed, since any changes to be made means the project has to be started all over again.

- However, both methods do allow for a sort of departmentalization e.g. in waterfall departmentalization is done at each stage.  As for Agile, each coding module can be delegated to separate groups.  This allows for several parts of the project to be done at the same time, though departmentalization is more effectively used in Agile methodologies.

Some basic stuff related to Software Test Automation, Automation Tools, Frameworks and standard parctices

Limitations of Automation Software Testing -

Automation is usually good for Functional testing and it's extremely difficult to test the application in boundary conditions like Out of Memory scenrios in some workflows, Data Corruption scenarios or simulating a state when application starts behaving poorly.

The common problems of Automation are:

1. Maintenance of the old script when there is a feature change or enhancement, especially it become challening with UI based Automation tools and at times also dependent on technology used to create the softwares.
2. The use of the script when we migrate the application from old version to new version
3. The change in technology of the application will affect the old scripts


Main Attributes of any Test Automation -

Maintainability, Reliability, Flexibility, Efficiency, Portability, Robustness, and Usability


Different types of tools used in various Testing Techniques...

- Testing tools for regression and load/stress testing for regression testing like, QTP, load runner, rational robot, winrunner, silk, testcomplete, Astra are availalbe in the market.
- For defect tracking BugZilla, Test Runner are availalbe
- For testing process maintenance, rational robot and Microsoft application test center are available.


Automation Techniques -

- Linear
- Structured
- Shared
- Data Driven
- Key Driven


Challenges/Problems with Automation Tools -


- System should keep in idol condition while script is running
- Debugging of script is very difficult when there are any changes in the environment
- Testing playback and record becomes very difficult when there is a minor change in GU
- Maintain of test data files is very difficult when there more number of screens

Principles of Designing Automation Scripts -

- Proper framework devoleped to built scripts
- Maintain coding standard. E.g.- Using function reusuability across various Test-Suites, to save time cost in maintainging this Automation in case of any changes in your Product/Solution.
- Provide comments for each and every step
- Proper exception handling techniques
- Appropriate Synchronization meachanisms are important when we talk about Regression/Functional testing.
- Handling error scenarios is one of the main challenge which needs to be planned in each and every Automation Framework.

Any specific Cases where we need to customize our Test-Scripts :-

1. To introduce data-driven testing, where various inpiuts are feeded into the script which has a loop for recorded Logic.
2. At times, we may want to introduce some waits apart from regular Synchronization points.
3. At times, tools can't exactly recognize some of the objects, so we need to define virtual objects and map them appropriately.
4. .... etc

Difference between GUI-Checkpoint and Sycnronization point :-

There is a very basic difference between these two is that GUI-Checkpoint is mainly used for Verification while Sync-Point is to ensure that script runs appropriately without any false alarm due to timing issues.

In GUI-Checkpoint, we check object properties and compare them with expected values, while Synchronization point defines a state for which Automation Script waits to proceed further.