软件测试之概要

来源:互联网 发布:java网上报名系统源码 编辑:程序博客网 时间:2024/06/06 02:29

一、概念

    软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
    软件测试方法是指测试软件性能的方法。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。
    从我个人角度来看,测试没有详细的边界,各种测试是相互交叉的。(如果有任何异议,请联系我:577328725@qq.com)

二、测试分类

1.基于设计方法

从测试的设计方法上可以分为:白盒测试,黑盒测试,灰盒测试。
    白盒测试(white-box testing)又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,是在我们完全了解软件内部的逻辑与细节的情况下进行的测试。
    黑盒测试(Black Box Testing)又称功能测试。它是通过测试来检测每个功能是否都能正常使用。黑盒测试实在对内部实现完全不了解或不必要关心的情况下,对系统实现的正确性的检测。
    灰盒测试(Grey Box Testing)又称功能测试或数据驱动测试。它是介于黑盒测试与白盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
    总结:白盒测试针对的是开发人员,黑盒测试是以用户角度来进行的测试。实际开发过程中,这三种测试都是不可或缺的。白盒测试可以迫使测试人员更加仔细的思考软件的实现,并对每个细节进行详细检查,从而尽早的发现隐藏在代码中的错误;黑盒测试是在交付给用户或者发布之前所做的检查,我们需要检查整个系统所有的逻辑是否合理,对于输入是否可以有正确的输出,对于边界问题是否进行了处理等等;

2.基于自动化

从测试的自动化角度上可以分为:自动化测试,手动测试。
    手动测试(Manual Testing):顾名思义,我们需要手动的去测试,例如测试GUI程序等等;通常伴随的是黑盒测试与灰盒测试。
    自动化测试(Automation Testing):把以人为驱动的测试行为转化为机器执行的一种过程。通俗的来说,我们将测试的代码编写好,让代码去验证代码。通常伴随的是白盒测试与灰盒测试。
    总结:手动测试与自动化测试在程序开发中是相互结合的,手工测试重在测试业务逻辑,而自动化测试重在测试底层架构。

3.基于测试目的

3.1功能测试

功能测试包含单元测试,功能测试,集成测试,场景测试,系统测试,α测试,β测试。
    单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证,目的是检验软件基本组成单位的正确性。(主要针对的是开发人员)
    功能测试(Functional Testing)也称为behavioral testing(行为测试),验证模块的功能,根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。(主要针对的是测试人员)
    集成测试(Integration Testing)也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试,目的是检查软件单位之间的接口是否正确。(主要针对的是测试人员)
    场景测试(Scenario Testing)验证几个模块是否能完成一个用户场景。(主要针对的是测试人员)
    系统测试(System Testing)是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。(主要针对的是测试人员)
    α测试_Alpha测试(Alpha testing)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由该系统的程序员或测试员完成。(主要针对的是测试人员)
    β测试(Beta testing)又称Beta测试,用户验收测试(UAT)。β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。(主要针对的是最终使用的用户)

3.2非功能测试

非功能测试包含压力测试,负载测试,性能测试,软件辅助功能测试,本地化/全球化测试,可用性测试,软件安全性测试。    
    压力测试(Stress testing):验证软件在超过负载设计的情况下仍能返回正确的结果,没有崩溃。
    负载测试(Load testing):测试软件在负载情况下能否正常工作。
    性能测试(Performance testing):测试软件的效能,是否提供满意的服务质量。
    本地化/全球化测试(Localization/Globalization)
    兼容性测试(Compatibility Testing)
    配置测试(Configuration Testing):测试软件在各种配置下能否正常工作。
    可用性测试(Usability Testing):测试软件是否好用。
    安全性测试(Security Testing)

4.基于时机

    冒烟测试(smoke testing):是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
    Build Verification Test(BVT)
    验收测试(Acceptance Testing):验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,向软件购买都展示该软件系统满足其用户的需求。

5.基于策略

    回归测试(Regression Testing):一个新的版本,重新运行以往的测试用例,看看新版本和已知的版本相比是否有退化 (regression)
    探索性测试(): 探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。 
    即兴测试(ad hoc testing)
【探索性测试有时候会与即兴测试(ad hoc testing)混淆。】
 

最后修改时间:2016年9月24日12:33:07
参考资料:
http://www.cnblogs.com/TankXiao/archive/2012/02/20/2347016.html
http://www.cnblogs.com/fnng/archive/2012/10/24/2737972.html

********************************************************************************结束语********************************************************************************************
  我在写这篇博客的时候也是一名初学者,有任何疑问或问题请留言,或发邮件也可以,邮箱为:577328725@qq.com,我会尽早的进行更正及更改。
在我写过的博客中有两篇博客是对资源的整理,可能对大家都有帮助,大家有兴趣的话可以看看!!
下载资料整理——目录:http://blog.csdn.net/fanxiaobin577328725/article/details/51894331
  这篇博客里面是我关于我见到的感觉不错的好资源的整理,里面包含了书籍及源代码以及个人搜索的一些资源,如果有兴趣的可以看看,我会一直对其进行更新和添加。
优秀的文章&优秀的学习网站之收集手册:http://blog.csdn.net/fanxiaobin577328725/article/details/52753638
  这篇博客里面是我对于我读过的,并且感觉有意义的文章的收集整理,纯粹的个人爱好,大家感觉有兴趣的可以阅读一下,我也会时常的对其进行更新。
********************************************************************************感谢********************************************************************************************

0 0
原创粉丝点击