软件测试方法种类繁多,记忆起来也非常混乱, 如果把软件测试方法进行多个维度的分类, 就会清晰很多。
软件测试的分类-按开发阶段分类
单元测试
又称模块测试,针对软件设计中的最小单位-程序模块,进行正确性检查的测试工作。单元测试需要从程序内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
单元定义:C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指一个窗口,1个菜单。
集成测试
又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。
系统测试
指的是将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
系统测试在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。
软件测试的分类-验收测试的分类
α测试
· Alpha 是内测版本,即现在所说的CB。
· 此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。
· 一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。
β测试
· Beta是公测版本,是对所有用户开放的测试版本。
· 该版本相对于α 版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。
· 这一版本通常由软件公司免费发布, 用户可从相关的站点下载。
· 通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改。
· 该版本也不适合一般用户安装。
γ测试
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本。
软件正式版本推出之前的几个版本, 需要有人测试一下, 看看是不是有问题。在开发该软件的公司内部由该公司内部人员测试的称为: Alpha 测试, Alpha 测试主要看有没有功能缺失或系统错误, Alpha 测试完后一般不会有大问题了。然后把软件拿给用户测试,称为: beta 测试, 主要是看用户对软件外观、使用方便等的反应。这么多的测试版一方面为了最终产品尽可能地满足用户的需要, 另一方面也尽量减少了软件中的bug。然后做过一些修改, 成为正式发布的候选版本时, 叫做gamma( 现在叫做RC - Release Candidate) 。
简单来说,阿尔法测试主要是测试人员在开发环境下的测试,贝塔测试是在实际环境中的测试,或者公司内部人员在模拟真实环境中的测试。
软件测试的分类-按照是否查看源代码
黑盒测试
又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据。
白盒测试
· 指的是把盒子打开,去研究里面的源代码和程序结构。
· 在软件公司,往往采用黑盒测试&白盒测试相结合的方式。
· 软件的整体功能和性能进行黑盒测试
· 软件的源代码采用白盒测试
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
软件测试的分类-黑盒测试分类
功能测试
是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
· 逻辑功能测试(functiontesting)
· 界面测试(UItesting)
· 易用性测试(usability testing)
· 安装测试(installationtesting)
性能测试
是软件测试的高端领域,性能测试工程师的待遇和白盒测试工程师不相上下,通常我们所说的高级软件测试工程师一般就是指性能测试或是白盒测试工程师。
· 时间性能(事务响应时间等)
· 空间性能(系统资源消耗)
· 一般性能测试
· 稳定性测试
· 负载测试:通过负载测试来确定在各种工作负载下,系统各项性能指标的变化情况
· 压力测试:通过确定一个系统的瓶颈或者刚好不能接受的性能点,来获得系统能够提供的最大服务级别
软件测试的分类-按是否运行分类
静态测试
指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
动态测试
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
软件测试的分类-其他
冒烟测试
冒烟测试就是完成一个新版本的开发后,对该版本最基本的功能进行测试,保证基本的功能和流程能走通。如果不通过,则打回开发那边重新开发;如果通过测试,才会进行下一步的测试(功能测试,集成测试,系统测试等等)。冒烟测试优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。
回归测试
回归测试我有两层理解,一是就是当你修复一个bug后,把之前的测试用例再次应用到修复后的版本上进行测试。二是当一个新版本开发好后,而且冒烟测试通过,此时可以先用上一个版本的测试用例对新版本进行测试,看是否有bug。
随机测试
随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressivetesting)一起进行。
探索性测试
探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取