按开发阶段分类
单元测试
又称模块测试,针对软件设计中的最小单位程序模块,进行正确性的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行独立进行单元测试。
集成测试
又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序地、递增的测试。重点测试不同模块的接口部分
系统测试
- 指的是将整个软件看成一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
- 系统测试在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境下的兼容性
是否覆盖源代码分类
黑盒测试
又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入输出数据
黑盒测试能发现以下几类错误:
- 功能不对或功能遗漏。
- 界面错误。
- 数据库访问或者处理错误。
- 性能问题。
黑盒测试的优点
- 测试人员不需要了解实现得细节,包括特定的编程语言(没有编程经验的人也可以设计测试用例);
- 测试人员和编程人员是相互独立的(黑盒测试用例设计与程序如何实现无关);
- 从用户的角度进行测试,很容易被接受和理解;
- 有助于暴露任何与规格不一致或者歧异的地方;
黑盒测试的缺点
- 不能测试程序内部特定部位;
- 如果程序未执行的代码无法发现;
- 不可能做到穷举测试
功能测试(functiontesting)
检查实际软件的功能是否符合用的的需求
- 逻辑功能测试(functiontesting)
- 界面测试(UItesting)
- 易用性测试(usability testing)
- 安装测试(installationtesting)
- 兼容性测试(compatibilitytesting)
性能测试(performance testing)
- 时间性能(事务响应时间等)
- 空间性能(系统资源消耗)
- 一般性能测试
- 稳定性测试
- 负载测试:通过负载测试来确定在各种工作负载下,系统各项性能指标的变化情况。
- 压力测试:通过确定一个系统的瓶颈或者刚好不能接受的性能点,来获得系统能够提供的最大服务级别。
白盒测试
研究源代码和程序结构
灰盒测试
是介于白盒测试与黑盒测试之间的一种测试,既可保证黑盒的关注点又可掌控白盒的内部结构,但不会去对内部程序功能和运作做详细了解,灰盒测试结合了白盒测试和黑盒测试的要素。
按是否运行分类
静态测试(static testing)
指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
动态测试(dynamic testing)
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
其他分类
验收测试
α测试
Alpha 是内测版本,即现在所说的CB,此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。
β测试
Beta是公测版本,是对所有用户开放的测试版本。该版本相对于α 版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布, 用户可从相关的站点下载。通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改。该版本也不适合一般用户安装。 �
γ测试
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本。
简单来说,阿尔法测试主要是测试人员在开发环境下的测试,贝塔测试是在实际环境中的测试,或者公司内部人员在模拟真实环境中的测试。
随机测试(探索测试)
随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressivetesting)一起进行。