Monday, May 25, 2009

Highly Effective Seven Habits

Recently i was going through some tools for Managing Software Development Life Cycles when i came across the above article.This article describes the basic seven habits applicable for any role........

1.Be Proactive - Putting the phrase "prevention is better than cure" in software terms "Be Proactive rather than being Reactive".when things are good we always wana take the credit but when things go wrong we look for a person who would take the responsibility for things going wrong.....So instead of finding fault and blaming others when things are not falling in place we can take some preventive measures like getting more clarity on requirements and implementation details,Planning how to move ahead with the project schedule keeping in mind the resources,time,risk factors etc.

2.Begin with the End in Mind - Always define the exit criteria beforehand for a successful release so that you can use it to weigh your deliverable.

3.Put First Things First - Priortize things and define beforehand the alternative path to be taken incase of time,resource or risk constraints so that you know before hand the precedence in which the plan is to be executed when things go wrong

4.Think Win/Win - Always think in the perspective where all the members of the team including the customers are happy about the Software development and Release as we all like HAPPY ENDING;)..

5.Seek First to Understand, Then to be Understood - Many of us have the habit of thinking our own ideas,perspective and thoughts as the best one but it may not be true always.So to come out with the best solution its good to let everybody speak their own views and ideas and then finalize on the most applicable and accepted by all approach.

6.Synergize - Analyze the strength,perspective,experiences of your team members so that you can make the maximum use of the resource to the fullest within the limited time

7.Sharpen the Saw - For continous improvement it is a hard and fast rule to continue honing our skills and learn new techniques, best practices and approaches.Also it is required to survive in software industry:) for whatever reason:D...
Also i would like to mentioned here that sharing knowledge is as much necessary as gaining knowledge.Believe me it saves time and effort:)

We all are aware of the above points but its sad that when it comes to implementing it practically we fail to do so:(.....But lets try our best to follow it religiously for a better SDLC where we(Team and customer) all can be happy.Lets think as "US" rather than "I" and "YOU":)............WISHING U ALL A HAPY ENDING ALWAYS:D..........

Tuesday, May 12, 2009

Characteristics of a Good Test Framework

Some days back i was analyzing different tools which would help me to automate my tests.Keeping in mind the features which different tools provide and the constraints we had,it was decided to extend some existing free source automation tool to serve our purpose.So i prepared a list of features which i would expect from a test framework.....


The points are mentioned below for your reference.If i have missed some point then please feel free to add to this list:)


1.Should be able to handle controls like lookups,dialog handlers,alerts etc
2.Should be browser(IE6,IE7,mozilla etc) compatible
3.Flexible enough to bring control to parent or child windows
4.Should keep track of results
5.All the control names should be stored in xml or config file or excel file whichever is best suited
6.Should accept input from xls or some other source externally(No need to go ahead and put input parameters in code)
7.Should have generic method to identify controls
8.Should not affect the performance of the application to great extent
9.Should be able to handle exception rather than failing abruptly
10.Should be able to identify controls and look for it depending upon its type e.g.,Identifies a picklist control and searches for control only of picklist type


The above list includes a basic set of features and is common both for website or any specific domain e.g., MSCRM....

Tuesday, May 5, 2009

Website Requirement Gathering Checklist

Website has become an important part in todays world whether its for online shopping,Booking Tickets,Registering yourself etc.
And we all know that first impression is the last impression same is applicable for your website as well.So here i am jotting down some points which a developer should take care while development and QA should take care while testing...


GENERAL

-Application developed should meet the requirement
-It should return correct result on perform of a action
-It should incorporate all the features and the functions expected
-Application should be easy to learn and use
-Application built should be responsive, helpful, accurate
-It should be accurate and trustworthy
-It should be easy to modify
-Introducing new features should not break the old functionalities
-Application developed should be in compliance with coding standards
-Code should be reusable
-System should be quickly and easily installed on a variety of platforms by a variety of users
-Information should be easily retrievable


USABILITY,INTERFACE AND NAVIGATION

-It should support concurrent users
-Response time should be less
-Instruction for the use of website should be properly documented
-Terminology used should be understandable for all of the site’s intended users
-Navigation bar should be present on every screen and its position should be fixed
-Navigation through text or without mouse should be allowed(depending on requirement)
-Tabbing should work consistently, in a uniform mannerThere should be a link to home on every single page
-Page layout should be consistent across pages
-Images used should add value to page and should not take much of bandwidth
-If Graphics are used then it should make most efficient use of file size
-If the text occupies more space then provided then it should wrap properly
-All referenced web sites or email addresses should be hyperlinked
-Hyperlinks should follow coloring standards
-Site should look the same on different resolutions
-Font should not be too small or too large to read
-Text and messages should be properly aligned
-Printing of page should show all the contents properly as shown in the screen
-All hyperlinks should work(It should not be broken or lead to orphan pages)
-Navigating Back or Forward or postback should not open a new page and should display the desired content
-Desired location should be reachable with 3 or less clicks from the Home Page
-Layout of Form or Table should be correct
-There should not be any broken links or orphan pages
-Contact information for the site owner should be readily visible and available(name, telephone number, email address, mailing address, fax number)
-Bookmarking a page should mark the page with a meaningful name
-Site’s Web address should appear in the History list if the user allows for historical page(depending on requirement)
-Status bar on each Web page should accurately reflect the progress of page loading, information, etc.
-All the pages should have a title
-All the control should have unique id

TABLES

-It should not require much of scrolling
-Printout of table should appear correctly
-Columns should be wide enough so that text doesn’t have to wrap up in every column

FRAMES

-Website should handle browser which do not support frames
-Frames should get resized automatically and appropriately
-Scrollbar should appear if required
-Search engine should be able to find content within the frames(depending on requirement)
-Frame borders should look right
-Refreshing of Frames should not create problems

DATA VERIFICATION

-Privacy Policy should be clearly defined and available for user access
-Stored data accuracy should be sustained
-Data should be verified at workstation, server
-Data entered by the user on the workstation is should yield the right information on the server
-Entering the same information multiple times should be prevented (order forms, free samples, etc.)
-Unique identifier should be assigned to each user entering form data
-Data that is requested of the user should be essential to the process for which it is requested. For example do you need a user’s date of birth in order to process his book order or are you are simply asking for too much user information?
-Numeric fields should not allow text
-User should be able to use wildcard for searches
-Spaces and blank values should not be allowed in fields which are required
-System should accept long string wherever required
-Fields for entering text should have a maximum limit defined
-Initial values of checkboxes and radio buttons should be set depending on requirement
-User should be able to select only one radio button in a group
-Checkboxes should trigger the desired event
-Users should be prevented from entering HTML code in form fields
-Intelligent error handling should be built into your data verification.i.e.,. If Date of Birth is a required field MM/DD/YYYY, it is unlikely that the person entering the data was born in 1857.

EXTERNAL INTERFACES

-System should interface correctly with related external systems
-All supported browsers should be tested
-All error conditions related to external interfaces should be tested when external application is unavailable or server inaccessible
-All external applications that may be launched from within the Web site should be tested

INTERNAL INTERFACES

-Website should support users who cannot perform downloads
-Website should work with firewalls(depending on requirement)
-If the site uses plug-ins, site should be usable even without it. And also it should support plug-in at various modems and PC speeds and browsers
-All versions of plug-ins work together
-All linked documents should be supported/opened on all platforms (i.e. can Microsoft Word be opened on Solaris)
-Site should not lose usability, if Java is not enabled
-Failures should be handled if there are errors in download
-Download of Signed ActiveX Controls and Unsigned ActiveX Controls should be possible depending on requirement
-Initializing and scripting ActiveX controls should be marked as safe depending on requirement
-Can you Script ActiveX controls marked safe for scripting
-Solution should work fine even after cookies is disabled
-Solution should support users across multiple sites/domains
-Copy/paste functionality should be enabled or disabled depending on type of page
-Unencrypted form data should be submitted if it is designed so
-Site should allow paste operations via scripts depending on requirement

BROWSERS – IE, Netscape, AOL, Mac, etc.

-HTML version being used should be compatible with appropriate browser versions
-Java Code/Scripts should be usable by the browsers under test
-Images should get displayed correctly with browsers under test
-Security Settings/Risks should be checked as they relate to each browser
-Digital certificates should be verified across multiple browsers
-Plug-ins should work with the browsers in which testing is performed in the site
-Source code should not be viewable to all users
-Printing site’s content should show same content and format across different browsers
-Content Size on Infrastructure should not have much impact(reliability, consistency)
-Color codes – visual presentation should remain same across browsers
-Mouse vs. Key Strokes should be tested within various browsers
-Disabling of cookies, ActiveX control should be handled properly
-Animated GIFs should be tested across browsers

COOKIES

-Information stored in cookies should be verified
-Cookie information should be encrypted
-Cooking information should get incremented properly
-Cookies should not be editable for the users
-Site functionality should work the same after deletion of cookies
-Cookie information should be correct and valid for the user accessing the site

LOAD/CONCURRENT USAGE

-System should meet its goals for response time, throughput, and availability
-System should be able to handle extreme or stressful loads
-System should be able to continue operating correctly over time without failure
-System should operate in the same way across different computer and network
-configurations, platforms and environments, with different mixes of other applications
-Monitoring of CPU usage, response time, disk space, memory utilization and leaks should be done
-Standards should be defined for response time (i.e. all screens should paint within 10seconds)?
-Firewall, Certificate, Service Provider and Customer Network impact should be verified
-Page loading performance should be acceptable over modems of different speed
-Site should be able to sustain long periods of continuous usage by 1 user or multiple users or short period at high volume
-Site should be able to sustain large transactions without crashing
-Site should allow large orders without locking out inventory if the transaction is invalid

ERROR HANDLING

-Automatic error detection and recovery mechanisms should be built in to try to keep the system operating
-In case of system crash, re-start and recovery mechanisms should be efficient and reliable
-Leaving of the site in the middle of a task should be cancelled or continued depending on requirement
-On losing Internet connection transactions should get cancelled
-Interruptions in file transfer should be handled
-Browser crashes should be handled
-Network failures between Web site and application servers should be handled as desired
-When database server is inaccessible it should not allow operations like retrieval or updating of data into database
-Application should notify the user of transaction status
-Site should include 24 x 7 monitoring of performance
-Email protocol/limitations of monitoring software – MAPI
-Timing – continual, hourly, daily, weekly
-Hardware limitations – does the monitoring software have to run on a dedicated
machine?
-Memory – leaks, cache, issues of resulting from continual running

Network Impacts

-Have you considered 32-bit vs. 64-bit versions of IP?
-Have you tested the impact of Secure Proxy Server?

SECURITY

-System should be Confidentiality/user privacy protected
-Site should perform authentication if required and should ask for username and password at desired pages
-Digital Certificates should be present both at server and client depending on requirement
-If encryption is done then we should verify where the encryption begins and ends
-Concurrent log-on should be permitted depending on requirement
-Time-outs due to inactivity should be handled
-Bookmarking should disabled on secure pages depending on requirement
-Key/lock display on status bar should be displayed for secure pages
-Right Click, View Source should be disabled for secure pages
-Doing direct searches by editing content in the URL should not be allowed if it requires authentication
-While using Digital Certificates, test the browser Cache by enrolling for the Certificate and completing all of the required security information. After completing the application and installation of the certificate, try using the '<--' Backspace key to see if that security information is still residing in Cache. If it is, then any user could walk up to the PC and access highly sensitive Digital Certificate security information.
-Users should know when they are entering or leaving secure portions of your site
-Server should lock out an individual who has tried to access your site multiple times with Invalid login/password information



Hope this post helps you to make your website better:)...