Showing posts with label Load Testing. Show all posts
Showing posts with label Load Testing. Show all posts

Saturday, April 25, 2009

Web Design Development And Testing

Contributed by Umair Khan

Many organizations are interested in building web applications for their business but are unaware of the various steps that are needed to build a compelling web application. In this article I will attempt to put together the various pieces of the puzzle. Application development involves several distinct efforts that need to come together to build a compelling end product. A compelling end product is the combination of design, development architecture, development implementation, automated regression and functional testing and performance and load testing.

Design:

People often confuse design with development. Moreover even within design, user interface design is often confused with graphics design. Web user interface design involves the design of the flow of the website and the layout of the specific web pages within the website. The web user interface designer concentrates on the usability of the application. The user interface designer will typically develop "wireframes" using tools like Adobe Photoshop to convey the design. These are often initially developed as prototypes and usability testing is carried with user groups out to ensure that the web application will be intuitive and easy to use. Graphics design on the other hand relates to the aesthetics of the page. The graphics designer is responsible for the aesthetic layout of the pages and the creation of the various graphical objects inside the pages such as images and flash objects. The graphics Designer will typically use a combination of tools such as Adobe Photoshop, Adobe Illustrator and Adobe Captivate to create the actual graphics objects. A designer will need to work closely with other groups to make sure the design process does not compromise the performance of the application by making sure that the graphics objects are small thus ensuring that the various web performance metrics are unaffected.

Development:

This involves converting the design into an actual application. The development typically involves an architectural phase where the underlying modules that make up the application are scoped out. If persistent data storage is needed, a database schema should be designed to accommodate the data storage needs. The choice of the operating system (e.g. Windows, Linux or Solaris) where the web application will run, the web server (e.g. Microsoft IIS, Apache or Tomcat) which will run the web application and the back end database (e.g. Microsoft SQL Server, Oracle, MySQL or Postgres) which stores the data will need to be made. Various development frameworks are available to build web applications. The most common ones are ASP and ASP.NET from Microsoft, Java Servlets and JSP from Sun, PHP and Perl that are open source. The choice of the application framework is typically dictated by the strengths of the members of the development team. The architectural phase is followed by the implementation phase. This is typically the longest part of the project and during this phase the actual code is written using the design specifications and graphics objects developed by the design team. The programming will typically be done using a combination of the application frameworks mentioned earlier together with HTML, JavaScript and CSS style sheets.

Quality Assurance and Testing:

A surprising number of people are of the view that quality assurance and testing is desirable but is not actually needed. Unfortunately this view has its roots in total ignorance of the process that is needed to build a good end product. Regardless of how pretty or slick we make the application, if it does not work as expected, users will reject it. Quality assurance and testing involve two different kinds of tasks. Functional and regression testing is used to verify that the developed application is doing what it is supposed to do. This is achieved by test automation using a functional testing tool. Load and Performance testing is used to ensure that the application performs as intended when it is subjected to the typical load of a production environment. Load testing is practically speaking impossible to perform without using an automated load testing tool since it involves the simulation of a large number of concurrent virtual users. This effect cannot really be achieved manually and needs the assistance of an application that is designed to subject the application to a specified load and then measure its performance when it is subjected to that load. Quality Assurance teams will need to track the bugs or defects in the application using bug tracking tools. Such tools will allow defects to be tracked by all members of the team.

The three groups mentioned above tend to be specialized for their skill set. As an example, people often make the mistake of using developers as quality assurance testers. This is not a wise strategy because most developers who are good at writing software are quite poor at finding bugs or defects in their own software.

Writing good and compelling web applications requires an understanding of all phases of the process, design, development and quality assurance. Skipping phases or taking shortcuts will result in low quality software that will generally cost more in the long run.

About the Author:

Umair Khan is Chairman of Verisium, Inc., maker of vPerformer (performance and load testing) and vTest (functional testing).

For more information on Software Testing, visit Software Testing Concepts.

Tuesday, November 4, 2008

Frequently Asked Questions About Software Testing

contributed by Jerry Ruban; edited by Doug Anderson

1. What is the purpose of the testing?

Software testing is the process used to help identify the
  • Correctness,
  • Completeness,
  • Security, and
  • Quality
of the developed computer software.

Software Testing is the process of executing a program or system with the intent of finding errors.

2. What is quality assurance?

Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented towards 'prevention'.

3. What is the difference between QA and testing?

Testing involves operation of a system or application under controlled conditions and evaluating the results. It is oriented towards 'detection'.

Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented towards 'prevention'.

4. Describe the Software Development Life Cycle

It includes aspects such as initial concept, requirements analysis, functional design, internal design, documentation planning, test planning, coding, document preparation, integration, testing, maintenance, updates, retesting, phase-out, and other aspects.

5. What are SDLC and STLC and the different phases of both?

SDLC - Software Development Life Cycle
  • Requirement phase
  • Design phase (High Level Design, Detailed Level Design i.e., Program specifications)
  • Coding
  • Testing
  • Release
  • Maintenance
STLC - Software Testing Life Cycle
  • System Study
  • Test planning
  • Writing Test case or scripts
  • Review the test case
  • Executing test case
  • Bug tracking
  • Report the defect
6. What is a Test Bed?

A Test Bed is an execution environment configured for software testing. so that it does not interfere with any existing application. It consists of specific hardware, network topology, Operating System, configuration of the product to be under test, system software, and other applications. The Test Plan for a project should be developed from the test beds to be used.

A test bed can be, and often is, destroyed and rebuilt in order to totally eliminate a previous version of the application under test. Virtual PCs are often used as Test Beds because they are easily created and destroyed, without affecting the host hardware or software.

7. What is Test data?

Test Data is data that is run through a computer program to test the software. Test data can be used to test the compliance with effective controls in the software. Test data is often designed to test the limits of the application. For example, if the application expects an account number with 8 digits, the test data might include:
  • a valid 8-digit account number
  • zero
  • blanks
  • negative numbers
  • a 9 digit number
  • a 7 digit number
8. Why does software have bugs?

Miscommunication or no communication about the details of what an application should or shouldn't do can cause the programmers to write faulty code.

Programming errors - in some cases the programmers can make mistakes in logic that seemed reasonable at the time the program was written, but turned out to be faulty in execution..

Changing requirements - there are chances of the end-user not understanding the effects of changes, or may understand and request them anyway to redesign, causing rescheduling of engineers, effects on other projects, and work already completed may have to be redone or thrown out.

Time force - preparation of software projects is difficult at best, often requiring a lot of guesswork. When deadlines are given and the crisis comes, mistakes will be made.

9. What is the Difference between Bug, Error, and Defect?

Error: It is the Deviation from actual and the expected value.

Bug: It is found in the development environment before the product is shipped to the respective customer.

Defect: It is found in the product itself after it is shipped to the respective customer.

10. What is the difference between validation and verification

Verification is done by frequent evaluation and meetings to appraise the documents, policy, code, requirements, and specifications. This is done with checklists, code walk-throughs, and inspection meetings.

Validation is done during actual testing and it takes place after all the verifications have been done.

11. What is the difference between structural and functional testing?

Structural testing is a "white box" testing and it is based on the algorithm or code. The tester knows how the application works internally.

Functional testing is a "black box" (behavioral) testing where the tester verifies the functional specification. The tester does not know how the application works internally.

12. What is the difference between bottom-up and top-down approaches

Bottom-up approach: In this approach, testing is conducted from sub-module to main module. If the higher-level modules are not yet developed, a temporary program is used to simulate that module. These dummy modules are often called Drivers.

Top-down approach: In this approach, testing is conducted from main module to sub-module. If the sub module is not developed, a temporary program, often called a Stub, is used to simulate the sub-module. Quite often a stub will set a constant into a variable rather than actually performing its function.

13. What is Re-test? What is Regression Testing?

Re-test - Retesting means we are testing only the certain part of an application again and not considering how it will affect any other parts or the whole application.

Regression Testing - Testing the application after a change in a module or part of the application to verify that the code change will not adversely affect the rest of the application.

14. What is the difference between Load Testing, Performance Testing, and Stress Testing

Load Testing and Performance Testing are commonly said to be positive testing whereas Stress Testing is said to be negative testing.

Say, for example, there is a application which can handle 25 simultaneous user logins at a time. In load testing, we will test the application for 25 users and check how the application is working in this stage; in performance testing, we will concentrate on the time taken to perform the operation. In stress testing. we will test with more users than 25 and the test will continue to any number and we will check where the application is cracking.

15. What is User Acceptance Testing?

User Acceptance Testing (UAT) - is carried out from the user perspective and it is usually done before the release. The testers are from the client organization (the people who will be actually using the new software) and are not programmers.

-----------------------------------

For more FAQs in Software Testing visit : http://softwaretestingguide.blogspot.com

For more information on Software Testing visit http://www.qa-software-testing.com