入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试

黑盒测试

  黑盒测试把产品软件当成是一个黑箱子,只有出口和入口,测试过程中只要知道往黑盒中输入什么东西,知道黑盒会出来什么结果就可以了,不需要了解黑箱子里面是如果做的。

  即测试人员不用费神去理解软件里面的具体构成和原理,只要像用户一样看待产品就可以了。

  例如银行转账功能,不需要知道转账的具体实现代码是怎样工作的,只需要把自己想象成各种类型的用户,模拟多种转账情况看系统是否能正常转账即可。

  但是仅仅像用户一样去测试又是不够的。如果只做黑盒测试,必然是存在一定的风险的。

  例如某个安全性较高的软件系统,开发人员在设计程序时考虑到记录系统日志的必要性,把软件运行过程中的很多信息都记录到了客户端的系统日志中,甚至把软件客户端连接服务器端的数据库连接请求字符串也记录到系统日志中,这必然会泄漏重要的数据。

  如果按照黑盒测试,这是程序内部的行为,用户不会直接操作数据库的连接行为,因此检查系统日志这方面的测试是不会做的,所以会形成一个隐藏BUG。

  有人把黑盒测试比作中医,通过“望闻问切”来判断是否有问题。

  “望”:观察软件的行为是否正常。

  “闻”:检查输出的结果是否正确。

  “问”:输入各种信息,结合“望”,“闻”来观察软件的响应。

  “切”:像中医一样给软件“把把脉”,敲击一下软件的某些“关节”

白盒测试

  上面把黑盒测试比喻为中医,那么白盒测试无疑就是西医了。测试人员需要采用各种仪器设备对软件进行检测,甚至把软件摆上手术台解剖来看个究竟。

  白盒测试是一种以理解软件内部结构和程序运行方式为基础的软件测试技术。通常需要跟踪一个输入在程序中经过了哪些函数的处理,这些处理方式是否正确。

  如果你是初级测试人员,你可能会认为,不懂代码的根本就做不了白盒测试,其实这种观点是有一定的错误的。

  当然,会懂代码来做白盒测试,那肯定是最好的。但是一般做白盒测试,不需要读懂每一行程序代码。

  如果把软件当成是一个黑箱子,那么白盒测试的关键就是给测试人员戴上一副X光透视眼镜,测试人员通过该眼镜可以看清楚给软件的输入在这个黑箱子中是如何运转的。

  如果你不太懂代码,其实有很多像医院的检测仪器一样,可以帮助了解程序的内部运转过程。

  例如:对于一个与SQL server数据库连接的软件系统,可以简单地把程序的作用理解为:把用户输入的数据通过SQL命令请求后台数据库,数据库把请求的数据返回给程序的界面层来展示给用户。SQL server自带的工具事件探查器则可以说是一个检查SQL数据传输的精密仪器,记录软件客户端与服务器数据库之间交互的一举一动,从而让测试人员可以洞悉软件究竟做了哪些动作。

  在测试过程中,应该综合黑盒测试和白盒测试,不管使用哪种方法,能找到BUG就是好方法。一名优秀的测试人员,应该懂得使用各种各样的测试技术和找BUG的手段。

手工测试与自动化测试

  有些人认为做手工测试是很简单的一件事,只需要点点点;而做自动化很难的事,很多人都避之不及。

  其实,这两种方式都是需要结合使用。自动化不可以代替手工,手工测试具体不可替代性。

  自动化测试是对手工测试的一种补充,主要应用在回归测试。主要集中在稳定的功能上面,帮助手工测试验证稳定模块的功能。

  对于数据的正确性,界面美观,业务逻辑等的满足程度,自动化测试是做不了的,都需要由手工来做。毕竟机器是死的,人们对是非的判断,逻辑推理能力是工具不具备的。

  自动化优势是借助计算机的计算能力,可以重复地、不知疲惫的进行,对于数据能进行精确的,大批量的比较,而且不会出错。

  综上我们可以知道,手工测试和自动化测试一个都不能少,而且需要有机结合,充分利用优势,测试人员提供各种方法和手段。

探索性测试

  探索性测试最直白的解释就是同时设计测试用例和执行测试。这种方法一般是测试经验丰富的测试人员使用,因为他们具备一定的测试经验,懂得哪些容易出现问题。

  也可以在执行测试用例的过程中发现更多测试的途径。需要具备更多的发散思维。

  探索性测试尤其适合需求不是很明确的测试任务,或者是一名刚刚接受一项新的测试任务的测试人员使用。

单元测试

  单元测试,即针对的是软件设计中的最小单位--程序模块进行正确性检验的测试工作。其目的在于发现每个程序模块内部可能存在的差错。

  单元测试应该由谁来做?

  这里就分为了两派:

    一派认为应该由开发来做;

    因为代码是开发人员编写出来的,开发人员应该对自己所编写的代码负责,而且开发人员对于自己的代码熟悉程度最高,所以编写起来较测试人员容易,更可以得到优质的代码。

    另外一派任务应该由测试人员来做;

    因为开发人员不像测试人员有敏锐的测试思维,所以测试的没有测试人员精细,所以需要测试人员来做单元测试。

  其实,这个问题都各持己见,但是最好的办法,就是双方合作。

  即由测试人员设计测试用例,开发人员编写测试代码,测试人员执行测试用例。

单元级别的性能测试

  性能测试是很多公司都忽略的问题,或者是等到程序已经开发完成之后才去测试的方向。

  性能测试结果表名系统存在严重的性能问题,相应时间迟缓,内存占用过多,不能支持大量的数据请求,在大量用户并发访问的情况下系统崩溃。

  如果当我们做完了整个系统的功能之后在发现以上的BUG,那么再去修改程序已经非常困难了,因为如果要彻底地解决性能问题,需要重新调整系统的架构设计,大量的代码需要重构,如果需要做调整,程序员不仅会疲惫,重新编写的程序也会引发大量的不稳定和BUG。

  所以性能测试应该是贯穿软件的整个生产过程,包括架构设计、单元编码、集成、发布。

  性能测试应该在单元测试阶段就开始,从代码的每一行效率,到一个方法的执行效率,再到一个逻辑实现的算法的效率;从代码的效率,到存储过程的效率,都应该进行优化。单元阶段的性能测试可以从以下几个方面进行考虑:

  • 代码效率评估
  • 应用单元性能测试工具
  • 数据库优化

  在代码的编写中,可能一个方法不会造成很大的问题,但是积少成多,就会成为大问题。这些问题可以通过代码走查来发现。如果测试人员不熟悉代码,可以使用代码标准检查工作,例如:FxCop,.TEST等来帮助自动查找类似的问题。

  测试人员也可以使用一些代码效率测试工具来帮助找出哪些代码或者方法在执行时需要耗费比较长的时间,例如AQTime是一款可以计算出每行代码的执行时间工具。

  除了代码行效率测试工具外,最近还出现了一些开源的单元级别的性能测试框架,可以像使用XUnit这一类的单元测试框架一样,但不是用于测试单元代码的正确性,而是用于测试函数,方法的性能是否满足要求。

例如NTime。它可以并发得运行同一个方法多次,看能否达到预期的性能指标。例如下面的代码使用NTime框架启动2个线程,在1秒钟内并发执行MyTest方法多次:

  [TimerHitCountTest(98,Threads = 2,Unit = TimePeriod.Second)]

  Public void MyTest()

  {

      //调用被测试的方法

      MethodToBeTest();

  }

  如果测试结果表明能执行超过98次,则认为该方法的性能达标。反之则不达标。

时间: 2024-10-20 16:46:12

入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试的相关文章

如何防范SQL注入——测试篇(转)

在上一篇文章<如何防范SQL注入-编程篇>中,我们讲了对于程序员而言,如何编码以防范代码存在SQL注入漏洞,那么,对于测试人员来说,如何测试SQL注入漏洞是否存在呢? 首先,我们将SQL注入攻击能分为以下三种类型: Inband:数据经由SQL代码注入的通道取出,这是最直接的一种攻击,通过SQL注入获取的信息直接反映到应用程序的Web页面上: Out-of-band:数据通过不同于SQL代码注入的方式获得(譬如通过邮件等) 推理:这种攻击是说并没有真正的数据传输,但攻击者可以通过发送特定的请求

web安全测试&amp;渗透测试之sql注入~~

渗透测试概念: 详见百度百科 http://baike.baidu.com/link?url=T3avJhH3_MunEIk9fPzEX5hcSv2IqQlhAfokBzAG4M1CztQrSbwsRkSerdBe17H6tTF5IleOCc7R3ThIBYNO-q 前言: 安全测试范围极广,开门见山,楼主对这行了解的也不是太深,也是在学习探索阶段,此文,也是对自己学习的总结与记录和简单的分享:这里没有具体工具的使用方法,更多的是原理细节的了解和解决方案的探讨. code部分: html+jsp

黑盒测试白盒测试

           白盒测试:是通过程序的源代码进行测试而不使用用户界面.这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正            黑盒测试:又被称为功能测试.数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解 该软件的源代码程序具体是怎样设计的.测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作            黑盒测试(与白盒测试区别

Visual Studio 单元测试之五---数据库测试

原文:Visual Studio 单元测试之五---数据库测试 数据库的单元测试主要是测试数据库中的数据是否符合特定的条件,Visual Studio 2010支持下面几种数据的单元测试类型(Visual Studio 2008 不支持数据库测试): 类型 说明 Data Checksum 对数据进行Checksum检验 Empty ResultSet 测试执行的SQL语句返回结果集是否为空 Execution Time 测试执行时间 Expected Schema 测试结果集中的列和数据类型是

Fabric链码测试方法(go语言单元测试/性能测试)

Fabric chaincode测试 —— 开发者模式和单元测试 [参考链接]:https://blog.csdn.net/zhayujie5200/article/details/84561825 前言 在fabric开发中,chaincode的测试是一个令人比较头疼的问题,一是由于实际情况中chaincode中的存储和查询是依赖于peer节点上的状态数据库的,所以无法在本地直接测试:二是由于chaincode是运行于容器中的,这导致我们很难获取在代码中打印的日志.如果直接在实际开发环境中测试

安全测试 - SQL注入

1. 工具测试: 使用SQLMAP进行扫描 2. 手工测试: 观察参数的值value是否为数字型.如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将其当做数字型测试) 将被测参数后加上测试语句"and 1=1",即:地址栏中填入"http://www.exmaple.com/page.xxx?name=value and 1=1", 如果返回正确页面则进行下一步操作,否则跳到第4步. 将被测参数后加上测试语句&qu

压力测试和性能测试的区别

1.性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用.关注点:how much和how fast 2.负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担.关注点:how much 3.压力测试(Stress Test): 压力测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方.包括:Spike testing(尖峰冲击测试):短时

软件测试中的压力测试和性能测试

软件测试的目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性.,这个定义听起来很正确,但用它来指导测试会带来很多问题.比如有的组织用发现的bug数来衡量测试人员的业绩,其实这就是这种测试目的论在后面作祟,其结果如何呢:其一,有一些不够敬业的测试人员会找来一些无关痛痒的bug来充数,结果许多时间会被浪费在这些无关痛痒的bug上(其实应该修复,何时修复,严重程度是什么,优先级是什么,等等);其二,测试人员会花很大力气设计一些复杂的测试用例去发现一些迄今尚未发现的缺陷,而不关心这些缺陷是否在实

sqlmap的学习之路-自动化测试SQL注入工具

sqlmap 自动化测试sql 注入问题  会返回版本信息等等. Sqlmap是开源的自动化SQL注入工具,由Python写成,因此运行需要安装python环境. 如需了解更多sqlmap资料可以访问官方http://sqlmap.org/,https://github.com/sqlmapproject/sqlmap,https://www.python.org . 注意:sqlmap只是用来检测和利用sql注入点的,并不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql注入点. 特点: