HIPAA Compliance Testing: What Healthcare Apps Must Verify
If your application touches protected health information, HIPAA compliance isn't optional — and "we think it's secure" isn't compliance. HIPAA requires demonstrable, documented verification of specific security controls. That means testing.
This guide covers what HIPAA requires, what you need to test, and how to build automated testing into your compliance process.
What HIPAA Requires (The Testing-Relevant Parts)
The HIPAA Security Rule applies to any application that creates, receives, maintains, or transmits electronic protected health information (ePHI). The Rule is organized around three safeguard categories:
Administrative safeguards: Policies and procedures for how ePHI is handled. Physical safeguards: Protection of physical systems that store or access ePHI. Technical safeguards: Technology controls protecting ePHI — this is where software testing matters most.
The technical safeguards break into five standards:
- Access Control: Unique user identification, emergency access, automatic logoff, encryption
- Audit Controls: Hardware, software, and procedural mechanisms that record and examine activity
- Integrity: ePHI is not improperly altered or destroyed
- Person or Entity Authentication: Verify that a person seeking access is who they claim to be
- Transmission Security: Guard ePHI during electronic transmission
Each of these has testable, verifiable requirements.
Access Control Testing
Unique User Identification
HIPAA requires each user to have a unique identifier. Shared accounts are non-compliant.
What to test:
- Can two users log in with the same credentials simultaneously?
- Are shared/generic accounts (admin@company.com) disabled?
- Do audit logs identify individual users, not shared accounts?
Test approach:
Scenario: Verify unique user identification
Given two users with separate accounts exist
When user A logs in
Then user A's actions are logged under user A's identifier only
And user B can log in independently with their own identifier
And no shared credentials allow loginAutomatic Logoff
HIPAA requires automatic logoff after a period of inactivity. No specific timeout is mandated — you must determine what's "appropriate" — but most healthcare organizations implement 15-30 minutes.
What to test:
- Does the session time out after the configured inactivity period?
- Does timeout trigger a logout, not just a lock?
- Does the timeout reset on user activity?
- Are active API sessions also terminated?
Test approach:
Scenario: Automatic logoff after inactivity
Given a user is logged in with PHI visible
When 30 minutes pass without any user activity
Then the session is terminated
And the user must re-authenticate to access PHI
And the logoff event is recorded in audit logsRole-Based Access Control
Users should access only the PHI necessary for their role (the "minimum necessary" standard).
What to test:
- Can a scheduling clerk access medical records they don't need?
- Can a billing coordinator access clinical notes?
- Can a patient access other patients' records?
- Are API endpoints enforcing role permissions, not just the UI?
Test critical paths:
- Attempt to access PHI as each user role
- Test API endpoints directly (bypassing UI) with tokens from each role
- Verify that role assignment changes take effect immediately
Emergency Access Procedure
HIPAA requires a procedure for obtaining ePHI in an emergency. This is often overlooked in testing.
What to test:
- Does an emergency access mechanism exist?
- Is emergency access logged with extra detail (who, what, why)?
- Are emergency access events flagged for review?
Audit Logging Testing
Audit controls are where many HIPAA implementations fall short. Logs exist, but they don't capture what's required, or they can be tampered with.
What Logs Must Capture
HIPAA doesn't specify exact log fields, but compliance requires being able to answer:
- Who accessed which ePHI?
- When did they access it?
- What actions did they take (view, modify, delete)?
- From what system or location?
- Did any access attempts fail?
What to test:
Scenario: Audit log completeness
Given a user accesses a patient record
Then an audit log entry is created containing:
- User identifier (unique, not shared)
- Timestamp (with timezone)
- Action taken (read, write, delete)
- Record identifier accessed
- System/IP source
- Success or failure statusLog Integrity
Audit logs must be protected from unauthorized modification. If an attacker can delete audit logs, they can cover their tracks.
What to test:
- Can a regular user delete or modify audit log entries?
- Can an administrator delete audit logs without creating a deletion record?
- Are logs stored separately from application data (a compromised app server can't delete logs)?
- Are logs shipped to an external system in real-time or near-real-time?
Log Retention
HIPAA requires retaining records (including audit logs) for 6 years from creation or last effective date.
What to test:
- Are audit logs retained for the required period?
- Are old logs accessible without degraded integrity?
- Is there a documented retention and destruction policy?
Integrity Testing
ePHI must not be improperly altered or destroyed. This encompasses both transmission integrity and storage integrity.
Transmission Integrity
What to test:
- Is all ePHI transmitted over HTTPS with current TLS versions (TLS 1.2+)?
- Are certificates valid and from trusted CAs?
- Is HSTS enforced (no HTTP fallback)?
- Are API endpoints rejecting unencrypted connections?
Automated certificate monitoring should alert before certificates expire. A lapsed certificate on a healthcare application isn't just a security issue — it's a HIPAA violation.
Storage Integrity
What to test:
- Are checksums or hash verification used for stored PHI?
- Does the application detect and alert on data corruption?
- Are there controls preventing unauthorized record deletion?
Authentication Testing
HIPAA requires verifying the identity of users accessing ePHI. Password authentication alone is increasingly considered insufficient; MFA is strongly recommended and required by some covered entity agreements.
Password Requirements
Minimum tests:
- Are weak passwords rejected? (password123, 12345678)
- Is there a minimum length? (NIST recommends 8 characters minimum, no maximum)
- Are common passwords blocked?
- Is the password history checked? (Prevent immediate reuse)
- Are passwords stored hashed? (Never plaintext or reversible encryption)
Multi-Factor Authentication
What to test:
- Is MFA required for all accounts accessing ePHI?
- Does MFA work for all access methods (web app, mobile, API)?
- Is MFA enforced at re-authentication (not just initial login)?
- Is there a secure MFA recovery process that doesn't bypass MFA entirely?
Session Management
What to test:
- Are session tokens cryptographically random and sufficiently long?
- Do session tokens expire after logout?
- Are tokens invalidated server-side on logout?
- Are there controls preventing concurrent sessions (if required by policy)?
Transmission Security Testing
All ePHI in transit must be encrypted. This is non-negotiable.
TLS Configuration Testing
Use automated tools to verify TLS configuration:
# Check TLS configuration
sslyze your-healthcare-app.com
<span class="hljs-comment"># Verify no deprecated protocols
nmap --script ssl-enum-ciphers -p 443 your-healthcare-app.comWhat to verify:
- TLS 1.2 at minimum; TLS 1.3 preferred
- No SSLv3, TLS 1.0, or TLS 1.1
- No weak cipher suites (RC4, DES, 3DES)
- Certificate chain valid and complete
- HSTS header present
API Security Testing
Healthcare APIs are high-value targets. Every API endpoint that accepts or returns ePHI requires security testing.
What to test:
- Authentication required on all ePHI endpoints?
- Authorization checked on every request (not just the first)?
- Input validation preventing injection attacks?
- Rate limiting preventing enumeration attacks?
- Error messages not leaking PHI or system information?
Automated HIPAA Compliance Testing
Manual compliance testing is expensive and happens infrequently. Automated testing provides continuous verification.
What to Automate
High priority for automation:
- Session timeout behavior
- Authentication requirement on protected endpoints
- TLS certificate validity
- Audit log generation
- Role-based access enforcement
Example automated test:
*** Test Cases ***
PHI Endpoint Requires Authentication
[Documentation] All ePHI endpoints must require authentication
${response}= GET /api/patients/12345
... expected_status=401
Should Be Equal As Integers ${response.status_code} 401
Response Should Not Contain PHI ${response.text}
Session Timeout After Inactivity
[Documentation] Sessions must expire after configured inactivity period
Login As ${TEST_USER} ${TEST_PASSWORD}
Wait 30 minutes
${response}= GET /api/patients
... headers={"Authorization": "${SESSION_TOKEN}"}
Should Be Equal As Integers ${response.status_code} 401Continuous Compliance Monitoring
Beyond functional tests, set up ongoing monitoring:
- Certificate expiration alerts: Alert 30 days before expiration
- Failed login monitoring: Alert on unusual failed authentication patterns
- Audit log gap detection: Alert if audit log generation stops
- Access pattern anomalies: Alert on unusual access volumes or timing
Documentation Requirements
Testing alone doesn't satisfy HIPAA. You must document your testing process and results.
Required documentation includes:
- Security risk analysis and risk management plan
- Testing procedures and results
- Policies and procedures covering each safeguard
- Evidence of workforce training
Auditors ask for documentation. "We test it" without evidence of what was tested, when, and what was found is not compliance.
Common HIPAA Testing Failures
The most common gaps found in HIPAA compliance testing:
1. UI-only access control. API endpoints return PHI even when the UI hides it. Always test APIs directly.
2. Incomplete audit logging. Logs capture login but not specific PHI access, or don't capture failed attempts.
3. Shared credentials. Testing or demo environments using shared accounts that also have access to production PHI.
4. Insufficient session management. Sessions don't expire, or expiration only happens client-side.
5. Third-party components. Embedded analytics, support tools, or monitoring solutions that receive PHI without BAAs.
Conclusion
HIPAA compliance testing is not a one-time audit. It's a continuous process of verification as the application changes. Every new feature that touches PHI needs its own compliance review. Every dependency update needs to be verified against your security requirements.
The test suite that verifies your HIPAA controls should run in CI alongside your functional tests. If HIPAA-relevant code changes, the compliance tests should run and must pass before deployment.
HelpMeTest supports automated E2E testing with role-based scenarios — useful for continuous verification of access control and audit logging requirements in regulated applications.