Tuesday, 22 December 2015

Testing practices in Salesforce



A test script in Salesforce has two parts - Tests and Incidents, which can be best managed with Google Spreadsheets.  The tests define which process is being tested, the steps to be followed, expected result vs the actual results, the overall result and the incident number in case the test script fails. When a test script fails, an incident is created in the Incidents Tab. It includes the incident no., step no., the description of the actual result compared to the expected result, the cause for the failure and its potential fix. Once the fix has been made, the test script is re-executed. It is appended as a new row in the google spreadsheet. If the test fails again, it is again logged into the Incidents tab and the process repeats itself until the test passes. For a test script to pass, all the steps of the test should be executed as it is expected.







- Purpose of testing

-  To check the functionality of the configuration and the code.
-  To ensure that the agreed upon requirements are met by the system's initial build.
-  To help control the actual scope of the project.
-  To confirm that the business process of the client can be supported by the developed system.
-  To gain approval for releasing new functionality.
- Types of Testing

Unit Testing: This test is performed by the Apex developers. This process involves writing clauses or conditions in the code that tests its coverage automatically. It tests the threshold limit of the unit code in a given environment. To deploy the Apex code into production, a 78% test coverage is required.

System Testing: This test is performed by the salesforce consultants. It thoroughly checks the technical processes of the system. It is performed by executing a test script based on specific outputs.

Functional Testing: This is tested by the users of the application. It tests the ability of the system to support the business processes. This test is intended to achieve the client's confirmation on the system. 

Production Testing: This is system test, re-executed in the production environment. It checks if the configuration and the code files have been successfully transferred to the  production environment from the sandbox environment. Also, the User Acceptance Testing is also performed in full scale in the production environment.

Regression Testing

This testing can also be referred to as impact testing by the client. This tests if the newly deployed codes and configurations affect the existing processes of the system in  any way. Many releases of the project may not be intended for all the users. Hence, this test ensures that the process of the users, for whom the new processes have not been made accessible, remain unaffected.

Conclusion:

Salesforce.com Manual Testing use humans as a methodical approach to test while automated testing involves a client recommended computer programs.

Wednesday, 16 December 2015

Software Testing and its fundamentals.



Software Testing is used to identify the accuracy, completeness and quality of a software application. It executes the software under several positive and negative conditions and checks for its compliance, functionality and performance. 








Understanding Error, Bug, Fault and Failure

The human action that results in an incorrect output  is an error. The presence of error while software execution is called a bug. The state of software with an error/bug is a fault.This event of deviation in software functionality from its intended result is called a failure.
 
Test:

A test is an action taken to find out if something is working as it is supposed to work. It involves simulating situations under  which the object is supposed to work.

Test Plan:

It is a descriptive document where the scope of testing, approach, resources, schedule and its related activities are described. The format and the content of a test plan can differ based on the processes, standards and the testing tools being used.

Test Case:

It is a set of conditions or input parameters which is used while execution. The actual output is then compared with the intended output to determine whether the system works as required.

Test Script:

A test script is used in automated testing. It is a set of instructions which are executed in an application under test. Many test automation frameworks can record/generate the test scripts. 

Methods of Software Testing

- White Box method: Also known as open box testing, in this method, the internal structure of the application under test is known to the tester.

- Black Box method: This is a testing method where the internal structure of the system is not known to the tester.

- Gray Box method: Being a combination of white box and black box testing, here the internal structure is partially known. It implies black box testing with access to the internal resources.

- Agile method: It follows the principles of the agile methodology and testing is carried out throughout the development process.

- Ad hoc method: This refers to random testing without any documentation or proper planning.
Levels of Software Testing

The different levels of softwaretesting are as follows:

- Unit Testing: Here individual methods of the application are tested. It is performed by using the white box method. 

- Integration Testing: Here the individual units are combined and tested as a group. Here, any of the white box, black box or grey box methods can be used for testing.

- System Testing: Here, the complete system is checked. This evaluates the compliance of the system with the requirements specified. Generally, the black box method is used to carry out this test.

- Acceptance Testing: This evaluates the system for its acceptability by checking its compliance level with the system requirements specification. Here, black box method is followed for the testing.


- Smoke Test
- Functional Test
- Usability Test
- Security Test
- Performance Test
- Regression Test
-Compliance Test

Phases of Software Testing

A software testing life cycle, STLC, defines the different phases in software testing. Although the phases are the same, but their sequence differs as per the Software Development Life Cycle(SDLC) followed and the management decisions. The phases may not be sequential as shown. They may also be carried out in parallel as well. The general phases of any STLC are as follows:

- Requirements Review
- Test Planning
- Test Designing
- Setting up Test Environment
- Test Execution
- Reporting

Conclusion

An effective software testing process delivers quality software which satisfies the user's requirements and expectations. It is an important part of Software Quality Control. With the rise in software competition, the need to ensure quality software is now a priority requirement.

Thursday, 10 December 2015

Understanding Software Quality Assurance



Software Quality Assurance ensures that the developed software complies with the specified functional requirements. SQA is a continuous process performed all throughout the Development Life Cycle to check that the software under development meets the standard quality measures. It very clearly and adequately  defines and expresses the problems and their solutions. Its main activities are process definition, process implementation, auditing and training.



 SoftwareQuality Assurance is practiced regardless of the development model being followed. It implements testing methods and checks for the quality of the software in each of its development phase. It involves monitoring and improving the development process and makes sure that the problems found have been dealt with. 

It addresses the following issues:

-          The developed software is a physical realization of the customer requirements.
-          The software can be verified as per the physical realization.
-          The development costs, including testing, debugging and redevelopment are visible and readily categorized.
-          The benefit of the software is visible to its customer/user.

To identify the costs and benefits of a software, a number of software characteristics are defined which have been termed as quality attributes. The common definition of these software quality attributes was developed by Robert Grady at HP. This is known as the FURPS Model. This model has been defined to allow each characteristic of the software to be measurable by Quality Assurance.

The following characteristics have been defined under the FURPS Model.

Functionality: This represents the main features of the software as described in the requirement specification. 

Usability: This includes factors such as accessibility, consistency and interface aesthetics in the user interface. 

Reliability: This considers aspects such as availability, accuracy and recoverability.

Performance: This evaluates aspects such as startup time,  recovery time, system response time and throughput of information.

Supportability:  This supports testability, adaptability, compatibility, scalability etc.
This plan for quality assurance also refers to other development plans of other supporting processes. These different plans include -

1. Documentation Plan
2. Measurement Plan
3. Risk Management Plan
4. Problem Resolution Plan
5. Software Development Plan
6. Configuration Plan
7. Test Plan

A Project Manager may not actually define the project goals, but he ensures that these goals are clearly defined, agreed by the client and included in the Software Requirement Specifications without fail. Having a predefined policy statement of quality, by the development company, also forms the base for these definitions.  These specifications should be defined in quantifiable terms wherever possible. The role and responsibilities of the organization in achieving these goals should also be well defined.

Conclusion

Software Quality Assurance  considers management, development and maintenance plans. It also contains acceptance criteria as well as the reporting activities critical to the software quality. ISO9000 is the international standard used by many companies to ensure that the quality assurance system in practice is actually effective.