返回经验列表
测试最佳实践

表单测试最佳实践:地址字段的边界值与异常处理

Petmind2026-06-108分钟阅读

表单测试最佳实践:地址字段的边界值与异常处理

表单测试是保障数据质量的关键环节。地址字段由于其格式复杂性和用户输入的多样性,往往是表单测试中的重点和难点。本文将从边界值测试、异常处理和自动化测试三个方面,介绍地址字段测试的最佳实践。

边界值测试

边界值测试是发现表单缺陷的有效方法。对于地址字段,需要重点测试以下几个维度的边界值。

长度边界

字段最小长度最大长度测试要点
街道地址1 字符255 字符测试空值、1 字符、255 字符、超长输入
城市2 字符100 字符测试单字符、超长城市名
固定 2 字符固定 2 字符测试 1 字符、3 字符输入
邮编5 字符10 字符测试 4 位、5 位、10 位、11 位

测试用例示例

```javascript

const lengthTestCases = [

{ field: 'street', value: '', expected: 'invalid' },

{ field: 'street', value: '1 A St', expected: 'valid' },

{ field: 'street', value: 'A'.repeat(255), expected: 'valid' },

{ field: 'street', value: 'A'.repeat(256), expected: 'invalid' },

{ field: 'zip', value: '1234', expected: 'invalid' },

{ field: 'zip', value: '12345', expected: 'valid' },

{ field: 'zip', value: '12345-6789', expected: 'valid' },

{ field: 'zip', value: '12345-67890', expected: 'invalid' }

];

```

格式边界

邮编格式的边界测试:

```javascript

const zipFormatCases = [

{ value: '12345', expected: 'valid' },

{ value: '12345-6789', expected: 'valid' },

{ value: '123456789', expected: 'valid' },

{ value: '1234 6789', expected: 'invalid' },

{ value: '12345-678', expected: 'invalid' },

{ value: '1234a', expected: 'invalid' },

{ value: ' 12345 ', expected: 'valid' }

];

```

异常输入测试

特殊字符

地址中可能包含各种特殊字符,需要确保系统能正确处理:

```javascript

const specialCharCases = [

{ value: "123 O'Brien St", desc: '撇号' },

{ value: '123 Main St.', desc: '句号' },

{ value: '123 Main St #5', desc: '井号' },

{ value: '123 Main St/Apt 5', desc: '斜杠' },

{ value: '123 Main St (rear)', desc: '括号' },

{ value: '123 Café St', desc: 'Unicode 字符' },

{ value: '123 Main St, Apt 5B', desc: '逗号' }

];

```

SQL 注入和 XSS 防护

地址字段是潜在的注入攻击入口,必须进行安全测试:

```javascript

const securityTestCases = [

{ value: "'; DROP TABLE addresses;--", desc: 'SQL 注入' },

{ value: '<script>alert("xss")</script>', desc: 'XSS 攻击' },

{ value: '123 Main St; DELETE FROM users', desc: 'SQL 注入变体' }

];

```

确保后端使用参数化查询,前端对输出进行转义。

自动化测试

单元测试

对验证函数进行单元测试,确保各种输入都能正确处理:

```javascript

describe('Address Validation', () => {

test('should validate 5-digit zip code', () => {

expect(validateZipCode('12345')).toBe(true);

});

test('should validate ZIP+4 format', () => {

expect(validateZipCode('12345-6789')).toBe(true);

});

test('should reject invalid zip code', () => {

expect(validateZipCode('1234')).toBe(false);

expect(validateZipCode('123456')).toBe(false);

});

});

```

端到端测试

使用 Playwright 或 Cypress 进行端到端测试,模拟用户完整的地址填写流程:

```javascript

test('user can fill address form', async ({ page }) => {

await page.goto('/checkout');

await page.fill('[name="address_line1"]', '1234 Main Street');

await page.fill('[name="address_line2"]', 'Apt 5B');

await page.fill('[name="city"]', 'Los Angeles');

await page.selectOption('[name="state"]', 'CA');

await page.fill('[name="zip_code"]', '90001');

await page.click('button[type="submit"]');

});

```

测试清单

测试类别测试项优先级
必填验证所有必填字段为空时提交
格式验证邮编、州代码格式错误
长度验证超长输入、空输入
特殊字符撇号、井号、Unicode
安全测试SQL 注入、XSS
交互测试国家切换后校验规则更新
API 验证地址验证 API 调用和回退

小结

地址字段的表单测试需要系统性地覆盖边界值、异常输入和安全场景。通过建立完整的测试用例集并结合自动化测试工具,可以有效提升表单的健壮性和数据质量。建议将测试用例维护为可复用的数据文件,方便持续集成和回归测试。

返回经验列表