Thursday, March 19, 2009

Certified Software Tester (CSTE) certification, Certificate in Software Testing

Certified Software Tester (CSTE) certification is a formal recognition of a level of proficiency in the software testing industry. The recipient is acknowledged as having an overall comprehension of the Common Body of Knowledge (CBOK) for the Software Testing Profession

Inherent Benefits

For the Individual
· CSTE certification is proof that you've mastered a basic skill set recognized worldwide in the Testing arena
· CSTE certification can result in more rapid career advancement
· Results in greater acceptance in the role of an adviser to upper management
· Assists individuals in improving and enhancing their organization's software testing programs
· Motivates personnel having software-testing responsibilities to maintain their professional competency

For the Organization
· CSTE is expected to be a 'change agent', someone who can change the culture and work habits of individuals to make quality in software testing happen
· Aids organizations in selecting and promoting qualified individuals
· Demonstrates an individual's willingness to improve professionally
· Defines the tasks (skill domains) associated with software testing duties in order to evaluate skill mastery
Acknowledges attainment of an acceptable standard of professional competency

For further details on the Software Certification Program, visit www.softwarecertifications.org

Usability testing

Usability testing is also known as User-Friendliness Testing. Usability testing is done if User Interface of the application stands an important consideration and needs to be specific for the specific type of users

Usability testing is the process of working with end-users directly or indirectly to assess how the user perceives a software package and how they interact with it. This process will uncover areas of difficulty for users as well as areas of strength. The goal of usability testing should be to limit and remove difficulties for users and to leverage areas of strength for maximum usability.

Usability testing should ideally involve direct user feedback, indirect feedback (observed behavior), and when possible computer supported feedback. Computer supported feedback is often (if not always) left out of this process. Computer supported feedback can be as simple as a timer on a dialog to monitor how long it takes users to use the dialog and counters to determine how often certain conditions occur (i.e. error messages, help messages, etc).

Often, this involves trivial modifications to existing software, but can result in tremendous return on investment. Ultimately, usability testing should result in changes to the delivered product in line with the discoveries made regarding usability. These changes should be directly related to real-world usability by average users. As much as possible, documentation should be written supporting changes so that in the future, similar situations can be handled with ease

Wednesday, March 18, 2009

How can World Wide Web sites be tested?

Web sites are essentially client/server applications - with web servers and 'browser' clients. Consideration should be given to the interactions between HTML pages, web services, encrypted communications, Internet connections, firewalls, applications that run in web pages (such as JavaScript, flash, other plug-in applications), the wide variety of applications that could run on the server side, etc. Additionally, there are a wide variety of servers and browsers, various versions of each, small but sometimes significant differences between them, variations in connection speeds, rapidly changing technologies, and multiple standards and protocols. The end result is that testing for web sites can become a major ongoing effort. Other considerations might include:
  • What are the expected loads on the server (e.g., number of hits per unit time?), and what kind of performance is required under such loads (such as web server response time, database query response times). What kinds of tools will be needed for performance testing (such as web load testing tools, other tools already in house that can be adapted, load generation appliances, etc.)?
  • Who is the target audience? What kind and version of browsers will they be using, and how extensively should testing be for these variations? What kind of connection speeds will they by using? Are they intra-organization (thus with likely high connection speeds and similar browsers) or Internet-wide (thus with a wide variety of connection speeds and browser types)?
  • What kind of performance is expected on the client side (e.g., how fast should pages appear, how fast should flash, applets, etc. load and run)?
  • Will down time for server and content maintenance/upgrades be allowed? how much?
  • What kinds of security (firewalls, encryption, passwords, functionality, etc.) will be required and what is it expected to do? How can it be tested?
  • What internationalization/localization/language requirements are there, and how are they to be verified?
  • How reliable are the site's Internet connections required to be? And how does that affect backup system or redundant connection requirements and testing?
  • What processes will be required to manage updates to the web site's content, and what are the requirements for maintaining, tracking, and controlling page content, graphics, links, etc.?
  • Which HTML and related specification will be adhered to? How strictly? What variations will be allowed for targeted browsers?
  • Will there be any standards or requirements for page appearance and/or graphics throughout a site or parts of a site?
  • Will there be any development practices/standards utilized for web page components and identifiers, which can significantly impact test automation.
  • How will internal and external links be validated and updated? how often?
  • Can testing be done on the production system, or will a separate test system be required? How are browser caching, variations in browser option settings, connection variability, and real-world internet 'traffic congestion' problems to be accounted for in testing?
  • How extensive or customized are the server logging and reporting requirements; are they considered an integral part of the system and do they require testing?
  • How are flash, applets, JavaScript, Active X components, etc. to be maintained, tracked, controlled, and tested?

What if there isn't enough time for thorough testing?

Use risk analysis, along with discussion with project stakeholders, to determine where testing should be focused.
Since it's rarely possible to test every possible aspect of an application, every possible combination of events, every dependency, or everything that could go wrong, risk analysis is appropriate to most software development projects. This requires judgment skills, common sense, and experience. (If warranted, formal methods are also available.) Considerations can include:
  • Which functionality is most important to the project's intended purpose?
  • Which functionality is most visible to the user?
  • Which functionality has the largest safety impact?
  • Which functionality has the largest financial impact on users?
  • Which aspects of the application are most important to the customer?
  • Which aspects of the application can be tested early in the development cycle?
  • Which parts of the code are most complex, and thus most subject to errors?
  • Which parts of the application were developed in rush or panic mode?
  • Which aspects of similar/related previous projects caused problems?
  • Which aspects of similar/related previous projects had large maintenance expenses?
  • Which parts of the requirements and design are unclear or poorly thought out?
  • What do the developers think are the highest-risk aspects of the application?
  • What kinds of problems would cause the worst publicity?
  • What kinds of problems would cause the most customer service complaints?
  • What kinds of tests could easily cover multiple functionalities?
  • Which tests will have the best high-risk-coverage to time-required ratio?

How can it be known when to stop testing?

This can be difficult to determine. Most modern software applications are so complex, and run in such an interdependent environment, that complete testing can never be done. Common factors in deciding when to stop are:
  • Deadlines (release deadlines, testing deadlines, etc.)
  • Test cases completed with certain percentage passed
  • Test budget depleted
  • Coverage of code/ functionality/ requirements reaches a specified point
  • Bug rate falls below a certain level
  • Beta or alpha testing period ends

What is 'configuration management'?

Configuration management covers the processes used to control, coordinate, and track: code, requirements, documentation, problems, change requests, designs, tools/compilers/libraries/patches, changes made to them, and who makes the changes.

What should be done after a bug is found?

The bug needs to be communicated and assigned to developers that can fix it. After the problem is resolved, fixes should be re-tested, and determinations made regarding requirements for regression testing to check that fixes didn't create problems elsewhere. If a problem-tracking system is in place, it should encapsulate these processes. A variety of commercial problem-tracking/management software tools are available. The following are items to consider in the tracking process:
  • Complete information such that developers can understand the bug, get an idea of it's severity, and reproduce it if necessary.
  • Bug identifier (number, ID, etc.)
  • Current bug status (e.g., 'Released for Retest', 'New', etc.)
  • The application name or identifier and version
  • The function, module, feature, object, screen, etc. where the bug occurred
  • Environment specifics, system, platform, relevant hardware specifics
  • Test case name/number/identifier
  • One-line bug description
  • Full bug description
  • Description of steps needed to reproduce the bug if not covered by a test case or if the developer doesn't have easy access to the test case/test script/test tool
  • Names and/or descriptions of file/data/messages/etc. used in test
  • File excerpts/error messages/log file excerpts/screen shots/test tool logs that would be helpful in finding the cause of the problem
  • Severity estimate (a 5-level range such as 1-5 or 'critical'-to-'low' is common)
  • Was the bug reproducible?
  • Tester name
  • Test date
  • Bug reporting date
  • Name of developer/group/organization the problem is assigned to
  • Description of problem cause
  • Description of fix
  • Code section/file/module/class/method that was fixed
  • Date of fix
  • Application version that contains the fix
  • Tester responsible for retest
  • Retest date
  • Retest results
  • Regression testing requirements
  • Tester responsible for regression tests
  • Regression testing results
A reporting or tracking process should enable notification of appropriate personnel at various stages. For instance, testers need to know when retesting is needed, developers need to know when bugs are found and how to get the needed information, and reporting/summary capabilities are needed for managers.