软件测试
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
基本名词解释及分类:
- Bug : 软件的缺陷
- Test : 测试用例 测试用例描述了一个完整的测试过程,包括测试环境、输入、期望的结果等
- Test Suite : 测试用例集 即一组相关的测试用例
Bug可以分解为:症状、程序错误、根本原因。
- 症状:即从用户的角度看,软件出了什么问题。
- 程序错误:即从代码的角度看,代码的什么错误导致了软件的问题。
- 根本原因:错误根源,即导致代码错误的根本原因
按测试设计的方法分类:
黑盒测试:黑盒测试,指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
白盒测试:白盒测试,指的是把盒子盖子打开,去研究里面的源代码和程序结果。它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作
灰盒测试:灰盒测试介于黑盒测试与白盒测试之间。可以这样理解,灰盒测试关注输出对于输入的正确性,同 时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经 错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
按测试的目的分类:
功能测试:
测试名称 | 测试内容 |
Unit Test | 单元测试——在最基本的功能/参数上验证程序的正确性 |
Functional Test | 功能测试——验证模块的功能 |
Integration Test | 集成测试——验证几个互相有依赖关系的模块的功能 |
Scenario Test | 场景测试——验证几个模块能否完成一个用户场景 |
System Test | 系统测试——对于整个系统功能的测试 |
Alpha/Beta Test | 外部软件测试人员(Alpha/Beta测试员)在实际用户环境中对软件进行全面的测试 |
非功能测试:
测试名称 | 测试内容 |
Stress/Load Test | 压力测试——测试软在负载情况下能否正常工作 |
Performance test | 效能测试——测试软件的效能 |
Accessibility Test | 可访问性测试——测试软件是否向残疾用户提供足够的辅助功能 |
Localization/Globalization Test | 本地化/全球化测试 |
Compatibility Test |
兼容性测试 |
Configuration Tes | 配置测试-测试软件在各种配置下能否正常工作 |
Usability Test | 可用性测试 –测试软件是否好用 |
Security Test | 软件安全性测试 |
按测试的时机和作用分类:
测试名称 |
测试内容 |
Smoke Test |
“冒烟”——如果测试不通过,则不能进行下一步工作 |
Build Verification Test |
验证构建是否通过基本测试。 |
Acceptance Test |
验收测试——为了全面考核某功能/特性而做的测试 |
测试名称 |
测试内容 |
Regression Test |
对一个新的版本,重新运行以往的测试用例,看看新版本和已知的版本相比是否有退化 (regression) |
Ad hoc (Exploratory)Test |
随机进行的,探索性的测试。 |
Bug Bash |
Bug大扫荡——全体成员参加的找“小强活动” |
Buddy Test |
伙伴测试——开发人员(伙伴)作为测试人员测试特定的模块 |
前一段在园子里看到的关于JUnit4的贴子,感觉收获很大
Java单元测试初体验(JUnit4)
Android 的单元测试的帖子