Quality Assurance Checklist
Quality Assurance Checklist
Purpose: The Application Quality Assurance Checklist is intended to ensure “Custom-Built” applications
adhere to development practices that promote quality solutions. It is recommended that the project team
familiarize themselves with this checklist during the Design stage to ensure the developed application meets
the quality standards when reviewed in the Execute stage. This deliverable should be listed as a requirement
in the Transition Agreement.
Important Note: No sections are to be deleted from this document. This template is not to be modified in any
manner. Text contained within << >> provides information on how to complete that section and can be deleted
once the section has been completed.
1. Development Framework
Validation Questions Yes No NA Comments
1.1 Has the application been developed with the
most recent OCIO-sanctioned version of the
framework for the chosen technology?
2. Development IDE
Applications should be developed using an OCIO-sanctioned Integrated Development Environment (IDE). This
will allow Application Services resources to build and debug source code as needed.
Validation Questions Yes No NA Comments
2.1. Has the application been developed using an
Integrated Development Environment that was
approved by the OCIO?
3. Decoupling Business Logic From The Presentation Layer
Whenever possible, developers should avoid using business logic in the presentation layer. The presentation
layer should mainly be used for navigation throughout the application and presenting data to the user. For
example, the use of Java code directly within JSP pages (i.e. Scriptlets) should be avoided. The preferred
approach would be to use Tag Libraries (JSTL/EL).
Also, the Presentation Layer of Web applications should be developed using prevailing industry standards (e.g.
using Stylesheets to position and control presentation elements, using relative positioning instead of absolute
positioning, etc.).
Validation Questions Yes No NA Comments
3.1. Is the presentation layer of the application free
from business logic?
3.2. Has the presentation layer of the application
been developed in accordance with prevailing
industry standards?
5. Passwords
A password helps authenticate a user when accessing a software application. Adherence to appropriate
password management will help maintain the confidentiality, integrity, availability of the data maintained by the
software application and reduce the risk of inappropriate access and use.
Validation Questions Yes No NA Comments
5.1. Does the system have functionality to allow the
user to revise their password and force user
account expiry?
5.2. Does the system support protected storage of
passwords with privileged user access? The
system should not support passwords in clear
text embedded either in the application code,
automated scripts, or the database?
5.3. Does the system meet the standard password
requirements?
5.4. Are the passwords in the production environment
different than those in a non-production
environment?
5.5. Are all vendor supplied default passwords
revised prior to placing the application in a
5. Passwords
A password helps authenticate a user when accessing a software application. Adherence to appropriate
password management will help maintain the confidentiality, integrity, availability of the data maintained by the
software application and reduce the risk of inappropriate access and use.
Validation Questions Yes No NA Comments
production environment?
5.6. Are passwords for privileged accounts different
than passwords for non-privileged accounts?
8. Consistency of Code
Code sections with similar functionality should be written in a clear, predicable, and consistent way. Using
different approaches to achieve the same basic purposes should be avoided. Project teams consisting of
multiple developers should ensure that the developers follow the same coding style and naming conventions.
Validation Questions Yes No NA Comments
8.1. Is the code written in a consistent manner
throughout the application?
8.2. Have all developers followed the same coding
style and naming conventions?
8.3. Have all developers followed the coding best
practices as set out by the organization which
owns the technology?
9. Code Comments
Code sections should be well documented with comments. At a minimum, each section of code (code unit)
should have an introductory brief and accurate description to explain the code functionality. Any potentially
confusing / non-intuitive sections of code should be commented thoroughly.
Validation Questions Yes No NA Comments
9.1. Does all application code include sufficient
comments for support personnel?
9.2. Does each code unit have its own brief and
accurate description?
Error handling logic should be robust enough to gracefully and meaningfully handle all errors which could be
reasonably expected to occur from user interactions with the system. The text for error messages should be
contained in a single location within the application code or database to facilitate quick additions and
modifications by support staff.
Validation Questions Yes No NA Comments
10.1. Does the application handle all the errors that
could reasonably be expected to occur?
10.2. Do the error messages contain minimal but
meaningful information?
10.3. Does the application avoid displaying system
information in error messages?
10.4. Are the error messages kept in a single
location?
11. Error Logging
Application errors should be logged for support personnel in database tables that will be directly accessible to
Application Services personnel. SQL can then be used to aid in searches for specific errors.
Log files for individual server tiers (i.e. Web and Application tiers) should be kept in a single directory on each
server. Also, log files should be saved on a daily basis with a time-date stamp on each file.
The error messages that are logged should contain information that is useful for support personnel (absolutely
no sensitive or personal data), such as which module of code encountered the error and what the specific error
was. Meaningful and detailed error messages are particularly important when troubleshooting
unknown/unexpected errors. These should definitely be captured and logged.
Logging is also required for applications as well as batch/scheduled jobs. Logging logic within applications
should be written in a modular way to facilitate the easy addition of new error messages.
Validation Questions Yes No NA Comments
11.1. Are all errors for the application being logged?
11.2. Is logging being done on each server tier?
11.3. Are the logs kept in a single location / directory /
database?
11.4. Are the logged errors specific enough to assist
support personnel in troubleshooting production
problems?
11.5. Is the code that logs the error messages written
in a modular way?
11.6. Are the log files free of personally sensitive or
identifiable information?
13. Dates
When testing functionality that is built around date checks, the testers should use date values that occur in the
past, on the target date, and in the future. Dates should also be validated in the context of the established
business rules of the application (e.g. given a person’s birth date, is he/she eligible to vote?). When dates are
recorded in a database or log, they should include a timestamp and not just the month, day, and year.
Timestamps will not be required in specific situations (such as a birth date field) where a timestamp does not
make sense.
Validation Questions Yes No NA Comments
13.1. Does the application validate dates in a way
that is consistent with the system design
specifications and business rules?
13.2. Do all relevant dates include a timestamp?
Fixed values that are repeatedly used throughout application code should be declared in a single location and
referenced appropriately, as needed, within the application. As a practical guide, a change to one of these
values should occur within a single reference point.
Validation Questions Yes No NA Comments
14.1. Does the application code avoid use of hard-
coded values?
14. Hard-Coded Values
Hard-coding of server names, database names, domain names, IP addresses, etc. within application code
should be avoided. These values should be contained in a single configuration file or database that is not part
of the application build, so that it can be easily maintained for different server environments (development,
testing/staging, and production) and will not need to be modified when new changes are built and deployed.
Fixed values that are repeatedly used throughout application code should be declared in a single location and
referenced appropriately, as needed, within the application. As a practical guide, a change to one of these
values should occur within a single reference point.
Validation Questions Yes No NA Comments
14.2. Do all hard-coded values reside exclusively
within configuration and constant, centralized
locations? (Central Locations that enable
changes without recompiling source code)
Industry best practices should be followed in the design of databases for production applications: tables
normalized, exceptions documented, constraints enforced, and required fields completed (nulls not permitted).
Also, if table keys are based on sequence numbers, each table should have its own sequence.
Validation Questions Yes No NA Comments
The Application Services resources supporting an application should be granted access to development,
test/staging, and production environments (as appropriate) prior to transition.
Validation Questions Yes No NA Comments
22.1. Have accounts been created on all servers for
the appropriate support personnel?
22.2. Have the necessary firewall rules been added
to allow Application Services support personnel
to access the relevant servers (i.e. via the Jump
Box)?
22.3. Have all server environments (development,
test/staging, and production) been fully created?
22.4. Are all of the server environments entirely
consistent with each other?
PROJECT MANAGER
Print name Signature Date (YYYY-MM-DD)
REVIEWED BY
APPLICATION SERVICES
TEAM LEAD
Print name Signature Date (YYYY-MM-DD)