本帖持续更新~~(*^▽^*) 欢迎附帖技术交流~~
1、常用的黑盒测试方法
等价类划分、边界值验证
2、软件测试考虑的核心问题
- 显式功能需求:软件本身要实现的具体功能
- 非功能需求:
- 安全性:用户安全性、软件安全性
用户密码后台存储是否加密;用户密码在网络传输过程中是否加密;密码是否具有有效期,密码有效期到期后,是否提示需要修改密码;不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面;密码输入框是否不支持复制和粘贴;密码输入框内输入的密码是否都可以在页面源码模式下被查看; 用户名和密码的输入框中分别输入典型的“SQL 注入攻击”字符串,验证系统的返回页面; 用户名和密码的输入框中分别输入典型的“XSS 跨站脚本攻击”字符串,验证系统行为是否被篡改;连续多次登录失败情况下,系统是否会阻止后续的尝试以 应对暴力破解;同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期;同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性。
- 性能:并发、并行
单用户登录的响应时间是否小于 3 秒;单用户登录时,后台请求数量是否过多;高并发场景下用户登录的响应时间是否小于 5 秒;高并发场景下服务端的监控指标是否符合预期;高集合点并发场景下,是否存在资源死锁和不合理的资源等待;长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。
- 兼容性:显示正确性、功能正确性、不同浏览设备、不同分辨率、不同版本
不同浏览器下,验证登录页面的显示以及功能正确性;相同浏览器的不同版本下,验证登录页面的显示以及功能正确性;不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性;不同分辨率的界面下,验证登录页面的显示以及功能正确性
3、设计一个用户登录界面的测试用例
注意:需要考虑的因素主要包括:
- 显式功能需求:是否注册、用户名、密码、验证码
- 非功能性需求:大小写正确性、用户信息安全(初始密码、修改密码)、会话时间、快捷键、用户身份、密码/用户名长度、验证码的时效性
一般的设计:
补充的优化:
4、好的测试用例的度量标准
- 测试用例整体的完备性
- 等价类划分的准确性
- 等价类集合的完备性
5、常用的测试用例设计方法
- 等价类划分方法
- 边界值分析法
- 错误推测方法
6、 单元测试
指对于软件中的最小可测试单元(函数 / 类)在与程序中的其他部分相隔离的情况下,进行检查和验证工作
7、驱动代码、桩代码、Mock代码
- 驱动代码:调用被测函数的代码,在单元测试中,驱动代码主要包括调用被测函数前的数据准备、调用被测函数、验证相关结果三个步骤。
- 桩代码:用来代替真实代码的临时代码。通常用来解决在A中包含未开发出的B的情况下,对A的全路径覆盖测试。
- 桩函数要具有与原函数完全相同的原形,仅仅是内部实现不同,这样测试代码才能正确链接到桩函数;
- 用于实现隔离和补齐的桩函数比较简单,只需保持原函数的声明,加一个空的实现,目的是通过编译链接;
- 实现控制功能的桩函数是应用最广泛的,要根据测试用例的需要,输出合适的数据作为被测函数的内部输入
- Mock代码:和桩代码类似,起到隔离和补齐的作用。和桩代码的本质区别是:测试期待结果的验证,Mock代码的测试结果出现在Mock函数中,而桩代码的测试结果出现在测试驱动函数中。
8、单元测试的自动化测试
- 用例框架代码生成
- 部分测试输入数据
- 自动桩代码生成
- 被测代码自动化静态分析
- 测试覆盖率的自动统计与分析