Evaluating the Quality of a Web Application
What follows is the high-level version of a checklist that we run through before delivering projects to clients. It can be used as a basis for assessing the quality of a Website or Web application before accepting delivery or be incorporated into request for proposals (RFPs) and software contracts as acceptance criteria. Contact us if you need the low-level version of this checklist template.
Checklist for Frontend
- Is browser back button working everywhere?
- Is Website able to function, in some fashion, with JavaScript disabled?
- Is HTML markup valid according to W3C Markup Validation Service?
- Is CSS valid according to W3C CSS Validation Service?
- Are there broken links according to W3C Link Checker?
- Are there warnings or errors in browser console?
- Is JavaScript code free of errors and potential problems according to JSLint or JSHint?
- Are there unit tests for JavaScript code?
- Are there any accessibility problems according to Web Accessibility Evaluation Tool?
- Is Website relying on third-party components hosted somewhere else (fonts, JavaScript, etc.)?
- Are Website pages loading fast enough according to PageSpeed Insights?
- Is Website content free of spelling errors?
- Is Website tested in every supported browser and device?
Checklist for Backend
- Are all errors and warnings logged and notifications sent?
- Are there any errors in Web server access logs (404, 500, etc.)?
- Are there any errors in application logs (e.g. PHP errors, warnings, or notices)?
- Are there any database queries that take too long to execute, as captured in slow query log?
- Are there any errors in database tables, as reported by mysqlcheck?
- Are cross-site request forgery exploits prevented?
- Are cross-site scripting exploits prevented?
- Are SQL injection attacks prevented?
- Are there unit tests with reasonable code coverage?
- Are there provisions for database change management (migrations)?
- Are applicable PCI DSS requirements met?
- Can Website produce reports in CSV format?
- Does Website expose a RESTful API for other applications to integrate with it?
- Can a non-technical operator easily change any wording on the Website? In how many steps?
Checklist for Deployment
- Are there Website components (programming language, database, Web server, operating system, etc.) that reach their end-of-life in two years or less?
- Is Website availability and integrity remotely monitored?
- Can Website be put into an offline mode during maintenance?
- Is Website code maintained in a revision control system such as Git?
- Are Website's deployment-specific configuration information (paths, hostnames, error levels, log files, etc.) centralized in a singular location/file?
- Can Website code be deployed from revision control system to production using a single command?
- Can code that is deployed to production rolled back to an earlier state using a single commnand?
- Is a there a qa/testing/staging server to test the Website before release? Is access to it password-protected? Is it configured to display all errors?
- Is semantic versioning used for release process?
- Is there a change log documenting releases?
- Are hosting server, Web server, database, and Website all properly secured?
- Are applicable PCI DSS requirements met?
- Does Website allow non-secure (http://) access to pages that receive or display user's information?