精华内容
下载资源
问答
  • 2020-10-25 00:00:34

    软件测试方法

    软件测试作为一个技术岗位,也是有自己圈内的技术划分的,按照市场上常见的分类,可以将软件测试分为白盒测试、黑盒测试以及介于二者之间的灰盒测试,除灰盒测试外,两种测试都有自己常见的测试方法。
    1.白盒测试
    白盒测试也称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试,它是按照程序内部的结构测试程序,简单来说就是代码层面的测试。这一方法是指测试人员了解程序内部逻辑结构,此时的测试对象就像一个打开的盒子,测试人员依据程序内部逻辑结构相关信息对程序所有逻辑路径进行测试,确认实际的状态是否与预期一致。白盒测试在路径覆盖上一定程度是可以做到穷尽测试的。
    常见的白盒测试方法分为:静态测试方法和动态测试方法。静态测试不要求在计算机上实际执行所测程序,主要是以一些人工的模拟技术对软件进行分析和测试;而动态测试是通过输入一组预先按照一定测试准则构造的实例数据来动态运行程序,从而达到发现程序错误的过程,它基本上是在计算机上实际执行了所测程序
    实际工作中的白盒测试方法种类更多:
    1)代码检查法
    代码检查包括桌面检查、代码审查和走查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的准确性,代码结构的合理性等方面。
    2)静态结构分析法
    测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图表,可以清晰地标识整个软件系统的组成结构,然后通过分析这些图表。检查软件有没有存在缺陷或错误。
    3)静态质量度量法
    依据ISO/IEC9126质量模型作为基础,通过软件功能的六大特性(27个子特性)构造质量度量模型,用于评估软件的每个方面。
    4)逻辑覆盖法
    通过对程序内部逻辑结构的遍历实现程序的覆盖,逻辑覆盖标准可分为:语句覆盖(SC)、判定覆盖(DC)、条件覆盖(CC)、条件判定组合覆盖(CDC)、多条件覆盖(MCC)和修正判定条件覆盖(MCDC)。
    5)基本路径覆盖法
    在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本执行路径集合,然后据此设计测试用例。
    6)域测试
    域测试是一种基于程序结构的测试。域测试的“域”是指程序的输入空间,任何一个被测程序都有一个输入空间,测试的理想结果就是检验输入空间中的每一个输入元素是否都产生正确的结果。域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。
    7)符号测试
    符号测试的思想是允许程序的输入不仅仅是具体的数值数据,而且包含符号值,这一方法因此得名。
    8)路径覆盖
    着眼于路径分析的测试称为路径测试,完成路径测试的理想情况是路径覆盖。
    9)程序变异
    它是一种错误驱动测试,即该方法是针对某类特定错误的。
    2.黑盒测试
    黑盒测试也称功能测试,通过测试来检验每个功能是否都能够正常使用。测试初级人员在入职测试岗位时基本上从事的是黑盒测试,就是常说的“点点点测试”。因为测试人员不了解程序的内部结构和内部程序,因此只检查程序功能是否按照需求规格说明书的规定进行正常使用,通过模拟软件产品的最终用户使用该软件进行检查软件产品是否达到了用户的需求。黑盒测试只有采用穷举输入测试才能检查出程序中的所有错误,但是穷尽测试是不可能的,后期测试成本太高,因此需要通过测试方法进行用例量化测试。
    1)等价类划分法
    把程序的输入域划分为若干部分(常划分为有效部分和无效部分,也就是常说的有效等价类和无效等价类),然后从每个部分选取少数代表性数据作为测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其他值。
    例如测试一组输入(0,10],其中10这个数据可以作为有效值进行测试,等价于(0,10]区间内的任意输入;100可以作为无效值进行测试,等价于(0,10]区间外的任意输入。
    2)边界值分析法
    边界值是输入在输入边界上的取值,该方法是通过选择等价类边界的测试用例。常用于测试参数的边界值,例如测试一组输入(0,10],其中的0和10两个数据就可以作为边界值进行测试。
    3)错误推测法推测
    该方法更适用于有经验的测试人员,它主要是基于经验和直觉推测程序中所有可能存在的错误,从而有针对性的设计测试用例。
    例如某输入条件只接受正整数,那我们就可以选取负数或小数进行验证。
    4)因果图法
    从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变)关系,通过图解的方法表示输入的各种组合关系写出判定表,从而设计相应的测试用例。
    常见的因果关系有:恒等(==)、非(~)、与(V)、或(^),运用这些因果关系作好图即可得出因果关系,设计测试用例。
    5)判定表驱动法
    通常由条件桩(列出所有条件)、动作桩(列出所有可能的操作)、条件项(列出所有条件的取值组合)、动作项(列出在条件项的各种取值情况下应该采取的动作)四部分组成的表格。
    6)正交试验设计法
    使用已经造好了的正交表格来安排实验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率.
    7)功能图法
    一个程序的功能说明通常由动态说明(描述输入数据的次序或转移的次序)和静态说明(输入与输出之间的对应关系)组成,用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。
    8)场景分析法
    当前的软件几乎都是由事件触发来控制流程的,事件触发时的场景便形成了场景,通过描述测试场景的方法设计测试用例即为场景分析法。
    3.灰盒测试
    生活中有很多的问题都不是非黑即白的,测试也一样存在自己的灰盒测试。通过字面就知道灰盒测试是介于白盒测试和黑盒测试之间的测试。工作中,它更多用于集成测试阶段,不仅关注功能输入、输出的正确性,同时也注重程序内部的运行情况。所以灰盒测试相较于黑盒测试更关注程序的内部逻辑,同时不像白盒测试那样对代码测试的详细、完整,是测试者在了解系统组件之间的相互作用,但是缺乏对内部程序功能和运作的详细了解时进行测试时的推荐方法。

    更多相关内容
  • 软件测试方法

    万次阅读 多人点赞 2019-04-16 14:49:22
    ...软件测试方法 编辑讨论 软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。 用户界面...

    [https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95/1850037?fr=aladdin]

     

    软件测试方法

     编辑 讨论

    软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。

    用户界面测试,英文是User interface testing。又称UI测试。用户界面,英文是User interface。是指软件中的可见外观及其底层与用户交互的部分(菜单、对话框、窗口和其它控件)。

    中文名

    软件测试方法

    目    的

    测试软件性能

    所属行业

    计算机

    作    用

    选择合适的软件

    目录

    1. 测试分类
    2. ▪ UI测试
    3. ▪ 冒烟测试
    4. ▪ 随机测试
    5. 本地化测试
    6. ▪ 基础化
    7. ▪ 国际化
    8. ▪ 安装测试
    9. 白盒测试
    10. 黑盒测试
    11. 自动化
    12. ▪ 回归测试
    13. ▪ 验收测试
    1. 静态测试
    2. 动态测试
    3. 单元测试
    4. 集成测试
    5. 10 系统测试
    6. 11 端到端
    7. 12 卸载测试
    8. 13 接受测试
    9. 14 性能测试
    10. ▪ 健全测试
    11. ▪ 衰竭测试
    12. ▪ 负载测试
    1. ▪ 强迫测试
    2. ▪ 压力测试
    3. ▪ 恢复测试
    4. 15 安全测试
    5. 16 兼容性
    6. 17 可用性
    7. 18 比较测试
    8. 19 可接受性
    9. 20 边界条件
    10. 21 强力测试
    11. 22 装配安装
    12. 23 隐藏数据
    1. 24 等价划分
    2. 25 判定表
    3. 26 深度测试
    4. 27 基于设计
    5. 28 文档测试
    6. 29 域测试
    7. 30 接口测试
    8. 31 逆向测试
    9. 32 非功能性
    10. 33 极限测试

    测试分类

    编辑

    β测试,英文是Beta testing。又称Beta测试,用户验收测试UAT)。

    β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。

    当开发和测试要完成所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员完成,不能由程序员或测试员完成。

    α测试_Alpha测试

    α测试,英文是Alpha testing。又称Alpha测试.

    Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由该系统的程序员或测试员完成。

    在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员来完成,不能由程序员或测试员完成。

    可移植性

    可移植性测试,英文是Portability testing。又称兼容性测试。

    可移植性测试是指测试软件是否可以被成功移植到指定的硬件或软件平台上。

    UI测试

    用户界面测试是指测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等。UI 测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。

    用户界面测试用户分析软件用户界面的设计是否合乎用户期望或要求。它常常包括菜单,对话框及对话框上所有按钮,文字,出错提示,帮助信息 (Menu 和Help content)等方面的测试。比如,测试Microsoft Excel中插入符号功能所用的对话框的大小,所有按钮是否对齐,字符串字体大小,出错信息内容和字体大小,工具栏位置/图标等等。

    冒烟测试

    冒烟测试,英文是Smoke testing。

    冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟了。

    冒烟测试的对象是新编译的每一个需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

    随机测试

    随机测试,英文是Ad hoc testing。

    随机测试没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

    随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressive testing)一起进行。

    本地化测试

    编辑

    本地化测试,英文是Localization testing。

    本地化就是将软件版本语言进行更改,比如将英文的windows改成中文的windows就是本地化。本地化测试的对象是软件的本地化版本。本地化测试的目的是测试特定目标区域设置软件本地化质量。本地化测试的环境是在本地化的操作系统上安装本地化的软件。从测试方法上可以分为基本功能测试,安装/卸载测试,当地区域的软硬件兼容性测试。测试的内容主要包括软件本地化后的界面布局和软件翻译的语言质量,包含软件、文档和联机帮助等部分。

    基础化

    本地化能力测试,英文是Localizability testing。

    本地化能力测试是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。为了降低本地化能力测试的成本,提高测试效率,本地化能力测试通常在软件的伪本地化版本上进行。

    本地化能力测试中发现的典型错误包括:字符的硬编码(即软件中需要本地化的字符写在了代码内部),对需要本地化的字符长度设置了固定值,在软件运行时以控件位置定位,图标和位图中包含了需要本地化的文本,软件的用户界面与文档术语不一致等。

    国际化

    国际化测试,英文是International testing。又称国际化支持测试。

    国际化测试的目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域都能正常运行。国际化测试使用每种可能的国际输入类型,针对任何区域性或区域设置检查产品的功能是否正常,软件国际化测试的重点在于执行国际字符串的输入/输出功能。国际化测试数据必须包含东亚语言、德语、复杂脚本字符和英语(可选)的混合字符。

    国际化支持测试是指验证软件程序在不同国家或区域的平台上也能够如预期的那样运行,而且还可以按照原设计尊重和支持使用当地常用的日期,字体,文字表示,特殊格式等等。比如,用英文版的 Windows XP 和 Microsoft Word 能否展示阿拉伯字符串?用阿拉伯版的 Windows XP 和 阿拉伯版的Microsoft Word 能否展示阿拉伯字符串?又比如,日文版的Microsoft Excel对话框是否显示正确翻译的日语?一旦来说执行国际化支持测试的测试人员往往需要基本上了解这些国家或地区的语言要求和期望行为是什么。

    安装测试

    安装测试,英文是Installing testing。

    安装测试是确保软件在正常情况和异常情况下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。

    白盒测试

    编辑

    白盒测试,英文是White Box Testing。又称结构测试或者逻辑驱动测试。

    白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

    白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖判定覆盖条件覆盖、判定/条件覆盖、条件组合覆盖路径覆盖

    白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

    白盒测试常用工具有:Jtest、VcSmith、Jcontract、C++ Test、CodeWizard、logiscope。

    黑盒测试

    编辑

    黑盒测试,英文是Black Box Testing。又称功能测试或者数据驱动测试

    黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。

    软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。

    黑盒测试常用工具有:AutoRunner、winrunner

    自动化

    编辑

    自动化测试,英文是Automated Testing。

    使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试和功能测试中用得较多。通过录制测试脚本,然后执行这个测试脚本来实现测试过程的自动化。自动化测试工具有QTP、Testcomplete、AutoRunner和TAR等。

    回归测试

    回归测试,英文是Regression testing。

    回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。

    根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。因此应当鼓励对所有回归测试用例进行自动化测试

    验收测试

    验收测试,英文是Acceptance testing。

    验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。

    验收测试一般有三种策略:正式验收、非正式验收或Alpha 测试、Beta 测试。

    静态测试

    编辑

    静态测试,英文是Static Testing。

    静态测试指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.。静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

    静态测试常用工具有:Logiscope、PRQA;

    动态测试

    编辑

    动态测试,英文是Moment Testing。

    动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。

    根据动态测试在软件开发过程中所处的阶段和作用,动态测试可分为如下几个步骤:

    1、单元测试

    2、集成测试

    3、系统测试

    4、验收测试

    5、回归测试

    单元测试

    编辑

    单元测试,英文是Unit Testing。

    单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具。

    集成测试

    编辑

    集成测试,英文是Integration Testing。

    集成测试是指一个应用系统的各个部件的联合测试,以决定它们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。

    集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。

    集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别

    系统测试

    编辑

    系统测试,英文是System Testing。

    系统测试是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。

    系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。

    端到端

    编辑

    端到端测试,英文是End to End Testing。

    端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试性能测试。端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试黑盒测试的优点的测试方法。

    卸载测试

    编辑

    卸载测试,英文是Uninstall Testing。

    卸载测试是对软件的全部、部分或升级卸载处理过程的测试。主要是测试软件能否卸载,卸载是否干净,对系统有无更改,在系统中的残留与后来的生成文件如何处理等。还有原来更改的系统值是否修改回去

    接受测试

    编辑

    接受测试,英文是Accept Testing。

    接受测试是基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。一般从功能、用户界面、性能、业务关联性进行测试。

    性能测试

    编辑

    性能测试,英文是Performance Testing。

    性能测试是在交替进行负荷和强迫测试时常用的术语。理想的“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。性能测试一般包括负载测试和压力测试。

    通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会出现内存泄露(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。

    健全测试

    健全测试,英文是Sanity testing。

    健全测试是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试能力。例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,不具备进一步测试的条件。

    衰竭测试

    衰竭测试,英文是Failure Testing。

    衰竭测试是指软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。

    负载测试

    负载测试,英文是Load testing。

    负载测试是测试一个应用在重负荷下的表现。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。

    负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

    强迫测试

    强迫测试,英文是Force Testing。

    强迫测试是在交替进行负荷和性能测试时常用的术语。也用于描述对象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。

    压力测试

    压力测试,英文是Stress Testing。和负载测试差不多。

    压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

    恢复测试

    恢复测试,英文是Recovery testing。

    恢复测试是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。恢复测试指通过人为的让软件(或者硬件)出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。

    恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。

    安全测试

    编辑

    安全测试,英文是Security Testing。

    安全测试是测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如:

    ①想方设法截取或破译口令;

    ②专门定做软件破坏系统的保护机制;

    ③故意导致系统失败,企图趁恢复之机非法进入;

    ④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。

    兼容性

    编辑

    兼容测试,英文是Compatibility Testing。

    兼容测试是测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。向上兼容向下兼容,软件兼容硬件兼容。软件的兼容性有很多需要考虑的地方。

    可用性

    编辑

    可用性测试,英文是Practical Usability Testing。

    可用性测试是对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查、用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。

    比较测试

    编辑

    比较测试,英文是Compare Testing。

    比较测试是指与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。来取长补短,以增强产品的竞争力。

    可接受性

    编辑

    可接受性测试,英文是Acceptability Testing。

    可接受性测试是在把测试的版本交付测试部门大范围测试以前进行的对最基本功能的简单测试。因为在把测试的版本交付测试部门大范围测试以前应该先验证该版本对于所测试的功能基本上比较稳定。必须满足一些最低要求。比如不会很容易程序就挂起或崩溃。如果一个新版本没通过可测试性的验证,就应该阻拦测试部门花时间在该测试版本上测试。同时还要找到造成该版本不稳定的主要缺陷并督促尽快加以修正

    边界条件

    编辑

    边界条件测试,英文是Boundary Testing。又称边界值测试

    一种黑盒测试方法,是对等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。因此针对各种边界情况设计测试用例,可以查出更多的错误。

    边界条件测试是环绕边界值的测试。通常意味着测试软件各功能是否能正确处理最大值,最小值或者所设计软件能够处理的最长的字符串等等。

    强力测试

    编辑

    强力测试,英文是Mightiness Testing。

    强力测试通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。比如,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机

    装配安装

    编辑

    装配/安装/配置测试是验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。比如,把英文版的 Microsoft Office 2003安装在韩文版 的Windows Me 上,再验证所有功能都正常运行。

    隐藏数据

    编辑

    隐藏数据测试在软件验收和确认阶段是十分必要和重要的一部分。程序的质量不仅仅通过用户界面的可视化数据来验证,而且必须包括遍历系统的所有数据。

    假设一个应用程序要求用户两条信息-----用户名和密码来创建帐户。这个用户输入这两条数据后保存。最后,一个确认窗口将通过数据库中找到这条数据来显示用户名和密码给用户。为了验证所有的数据保存是否正确,一个QA测试人员会在这个确认窗口简单的查看下用户名和密码。如果他们成功了?假设数据库记录了第三条信息----创建日期,它可能不会出现在确认窗口,而只在存档中才出现。如果创建日期保留的不正确,而QA测试人员只验证屏幕上的数据,那么这个问题就不可能被发现。创建日期可能就是一个bug,由于一个用户帐户保存了一个错误的日期到数据库中,这个问题也不可能会被引起注意,因为它被用户界面所隐藏。这只是一个简单的例子,但是它却演化出了一点:隐藏数据测试的重要性。

    等价划分

    编辑

    等价划分测试的英文是equivalence partition testing。

    等价划分测试是根据等价类设计测试用例的一种技术。是黑盒测试的典型方法之一,通过把被测试程序所有可能的输入数据域划分成若干部分。从每一部分中选取少数有代表性的数据作为测试用例,可有效减少测试次数,极大提高软件测试效率,缩短软件开发周期.等价类划分测试的目的就是为了在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果。有效等价类和无效等价类。有效等价类中的数据代表的是一组符合需求文档的正确的有意义数据。无效等价类则正相反。

    判定表

    编辑

    判定表的英文是decision table,是指一个表格,用于显示条件和条件导致动作的集合。

    定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。

    判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

    在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题

    深度测试

    编辑

    深度测试的英文Depth test ,是指执行一个产品的一个特性的所有细节,但不测试所有特性。

    当比较函数返回真的时候才显示出效果来。必须启用“#深度测试”,才能执行测试。不使用的时候需要关闭。

    基于设计

    编辑

    基于设计的测试的英文是design-based testing,是根据软件的构架或详细设计引出测试用例的一种方法。

    一种基于设计模型的测试方法(Model Based TestIng System,MATIS).该方法利用用户界面自动生成方法,把设计模型中的类属性定义和实现中的控件属性组织在一起,构建描述界面的逻辑对照表,辅助测试脚本引擎执行自动测试脚本.借助设计模型中扩展的类定义,MATIS方法可以自动生成测试用例和测试数据。

    文档测试

    编辑

    文档测试的英文是documentation testing,测试关注于文档的正确性。

    文档测试有三大类分别是开发文件、用户文件、管理文件。

    1. 开发文件:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书详细设计说明书数据库设计说明书、模块开发卷宗。

    2.用户文件:用户手册、操作手册。

    3.管理文件:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。

    软件测试中的文档测试主要是对相关的设计报告和用户使用说明进行测试,对于设计报告主要是测试程序与设计报告中的设计思想是否一致;对于用户使用说明进行测试时,主要是测试用户使用说明书中对程序操作方法的描述是否正确,重点是用户使用说明中提到的操作例子要进行测试,保证采用的例子能够在程序中正确完成操作。

    一般来说,文档是软件的重要组成部分,因此文档测试也是软件测试的主要内容。在软件的整个生命周期中会出现很多文档,通常可以把文档粗略地分为三类:开发文档,管理文档和用户文档

    由于文档与代码不同,不能直接运行,对于文档的测试通常只能以文档审查的方式进行。对于管理文档和审查通常归属于管理范畴,而不是软件测试范畴,因为对于管理文档审查的目的不是为了发现和消除用户所看到的软件中的缺陷,而是为了更好地管理软件开发的过程。对于开发文档,由于这些文档本身体现了所在开发阶段的软件实际形态,对于这些文档的测试实际上是早期软件测试的主要活动。用户文档是那些随程序一起交付给用户的文档,它们实际上是交付给用户的软件的重要组成部分。对于这些文档的测试是对最终软件产品测试的一部分。

    域测试

    编辑

    域测试的英文是domain testing,定义参考等价划分测试(equivalence partition testing);

    一般分为单域测试和多域测试,其中单域测试包括设备测试和业务测试,设备测试包括测试某个系统的软交换设备、中继媒体网关设备、信令网关设备、接入媒体网关和IAD等设备。

    等价类划分有两种不同的情况:有效等价类和无效等价类。设计时要同时考虑这两种等价类,因为软件不仅要能接收合理的数据,也要能经受意外的考验。

    一有效等价类:是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

    二无效等价类:与有效等价类的定义恰巧相反。

    接口测试

    编辑

    接口测试的英文是interface testing,接口测试测试系统组件间接口的一种测试。

    接口测试的好处:

    由于接口测试代码本身就是用junit(当然接口的类型不同,不一定是Junit来实现)来实现的,是属于自动化测试的范畴,因此必定也包含自动化测试所固有的优势。

    1) 提高测试质量

    软件开发的过程是一个持续集成和改进的过程,而每一次的改进都可能引进新bug,因此当软件的一部分,或者全部修改时,都需要对软件产品重新进行测试。其目的是要验证修改后的产品是符合需求的,而当没有自动化测试代码时,往往会由于各种各样的原因,回归不充分,导致bug遗漏。

    2) 提高测试效率

    软件系统的规模越来越大,功能点越来越多,开发人员的自测或者测试人员的人工测试非常耗时和繁琐,势必导致测试效率的低下,而自动化测试正好解决这些耗时繁琐的任务,在对外接口功能不变的情况下,达到了一次编写,永久使用的效果。

    3) 提高测试覆盖

    通过手工测试很难测试到一些更深层次的异常和安全的问题,通过一些辅助的一些测试工具,能分析出代码的覆盖率,通过覆盖率的提高来提高测试的深度。

    4) 更好地重现软件缺陷

    由于每次执行都是相同的代码,一旦代码出错,必定回归出错

    5) 更好定位错误

    由于接口测试是一种自下向上的测试,因此一旦出错,非常容易定位出错,不像系统测试那样了,一旦有Bug,需要几层验证之后才能确定出错位置

    6) 降低修改bug的成本接口测试基本和开发人员的编码平行工作,因此发现问题会比系统测试早很多,因此减少了修改bug的成本。

    7) 增进测试人员和开发人员之间的合作关系,测试工程师为了更好地开展工作,需要对开发技术有深入的理解和实践,有了与开发工程师更多的交流。

    8) 降低了项目不能按时发布的风险,由于接口测试很早就介入,在提交给系统测试前对项目代码的核心模块已经做了详尽的测试,必定加速系统测试的时间,由此来保证项目的按时发布。

    9)提升测试人员的技能。做接口测试必须了解开发人员的开发流程和一些开发技能,也需要了解测试工具的一些使用方法和一些测试思想,提升了测试人员的技术附加值,提高了自身的竞争力。

    10)促使项目开发过程的规范化

    要进行接口,需要完善的文档进行保障,没有测试文档,接口测试将寸步难行,接口测试将增加开发过程规范化产出,而规范化产出也保证了项目质量。

    逆向测试

    编辑

    逆向测试/反向测试/负面测试的英文是Negative Testing,测试瞄准于使系统不能工作。

    负面测试与正面测试的比较:

    负面测试(Negative testing)是相对于正面测试(Positive testing)而言的。它们也是测试设计时的两个非常重要的划分。简单点说,正面测试就是测试系统是否完成了它应该完成的工作;而负面测试就是测试系统是否不执行它不应该完成的操作。形象一点,正面测试就象一个毕恭毕敬的小学生,老师叫我做什么,我就做什么;而负面测试就象一个调皮捣蛋的孩子,你叫我这样做,我偏不这样做,而且和你对着干。开发人员也是最讨厌修改此类bug的。

    非功能性

    编辑

    非功能性需求测试的英文是non-functional requirements testing ,是与功能不相关的需求测试,如:性能测试、可用性测试等。

    为什么非功能性需求很重要?

    在您设计解决方案的过程中满足功能性需求当然是很重要的。但是,如果没有考虑非功能性需求,您的解决方案则很难取得实效。

    非功能性需求特点:1.不要脱离实际环境;2.可靠性;3.可用性;4.有效性;5.可维护性;6.可移植性。

    极限测试

    编辑

    简介

    极限测试本质上是为了满足极限测试的思想和流程而设计的一套测试策略和流程,其本身并不局限于使用特定的测试技术和方法。

    过程

    1.单元测试

    2.验收测试

    展开全文
  • 软件测试方法与过程

    千次阅读 2021-09-02 07:36:11
    目录 2.1 无法对软件进行完全的测试 2.1.1 无法进行完全测试的原因 ...2.4.1 软件测试方法的分类 2.4.2 从三个角度分析,对方法进行分类 2.4.3 (动/静)态测试方法的具体理解 2.4.5 人工测试和自动化测试 ..

    目录

    简述

    2.1 无法对软件进行完全的测试

    2.1.1 无法进行完全测试的原因

    2.1.2 结论 

    2.2 为什么软件测试是个复杂的活动

    2.2.1 软件测试的复杂性

    2.3 软件测试的经济性

    2.3.1 注意点

    2.3.2 软件测试的工作原则 

    2.3.3 最佳测试量​

    2.3.4 影响测试量的主要因素

    2.4 软件测试方法

    2.4.1 软件测试方法的分类

    2.4.2 从三个角度分析,对方法进行分类

    2.4.3 (动/静)态测试方法的具体理解

    2.4.5 人工测试和自动化测试

    2.5 单元测试

    2.5.1 什么是测试单元

    2.5.2 什么是单元测试

    2.5.3 单元测试的主要任务

    2.5.4 单元测试环境

    2.5.5 单元测试用例设计思路

    2.5.6 单元测试的优势

    2.5.7 单元测试的误区

    2.6 集成测试

    2.6.1 集成测试的定义

    2.6.2 集成测试关注的重点

    2.6.3 单元测试与集成测试的区别

    2.6.4 四种集成方法

    2.6.5 系统测试之八大分测

    2.6.6 验收测试

    2.6.6 面向对象的软件测试


    简述

    本章先简单介绍了软件开发过程的三个阶段:定义阶段、开发阶段、检验交付与维护阶段,软件开发过程中的活动与角色,软件开发的开发模型有线性顺序模型、原型模型、快速开发模型、演化软件过程模型等,软件开发与软件测试的关系等。并介绍了软件测试的七条基本原则,软件测试方法常用有:静态测试、动态测试、白盒测试、黑盒测试、灰盒测试、人工测试、自动化测试、模型检测、胃烟测试、随机测试等。最后介绍了软件测试的五种过程模型...


    2.1 无法对软件进行完全的测试

    2.1.1 无法进行完全测试的原因

      

    该例也只是对有效的例子进行了测试,对不符合要求的测试用例并没有验证。即软件测试,不仅要测试所有合法的输入是否给出了正确的结果,也要对那些不合法的但是有可能的输入进行测试。

    用 “白盒测试” 来说明第二点,“白盒测试” 是穷举路径的测试。

    上述例子虽然循环次数不多,但是路径数太多了,导致无法对软件进行完全的测试。

    2.1.2 结论 

    ·测试不能证明一个软件是正确的,只能证明其是错误的。

    ·无法对软件进行完全的测试。
     


    2.2 为什么软件测试是个复杂的活动

    2.2.1 软件测试的复杂性

    软件测试关键是要进行正确的判断和合理的取舍,根据风险分析决定哪些故障必须修复,哪些故障可以不修复,通常,不能修复的软件故障有如下几条:

    · 没有足够的时间修复(可能是软件功能太多或者进度问题)
    · 修复的风险较大
    · 不值得修复(主要指不常用的功能中的一些故障或对运行影响不大的故障)
    · 可不算作故障的一些缺陷

     


    2.3 软件测试的经济性

    2.3.1 注意点

    a. 要根据程序的重要性和可能故障造成的损失来决定测试要达到什么样的程度。
    b. 要认真研究测试策略,一定要用尽可能少的测试用例发现尽可能多的测试缺陷。

    2.3.2 软件测试的工作原则 

    2.3.3 最佳测试量

    2.3.4 影响测试量的主要因素


    2.4 软件测试方法

    2.4.1 软件测试方法的分类

    单元测试
    集成测试
    确认测试
    系统测试
    验收测试

    2.4.2 从三个角度分析,对方法进行分类

    · 从是否需要执行被调程序的角度 分为:

    · 从测试是否针对系统的内部结构和具体实现的算法角度 分为:

    · 从测试部分的主体的角度 分为:

     *不应过多在意方法的类别,应确实理解每个方法的含义和适用范围

    2.4.3 (动/静)态测试方法的具体理解

    第一种方法:代码检查(看的是问题的本身,比动态测试更加有效,但耗费的人力和时间也很多)

    第二种方法:静态结构分析(主要以图形的方式表示程序的内部结构,比如调用函数)

    第三种方法:代码质量度量(一般来说程序的复杂度越高,更容易出错)

    动态测试分为:
    · 功能确认与接口测试
    · 覆盖率测试
    · 性能分析
    · 内存分析

    2.4.4 (黑/白)盒测试方法的具体理解与优劣比较

    一般分别用在 系统测试阶段单元测试阶段

    2.4.5 人工测试和自动化测试

    Tips:自动化测试不可能完全实现自动化,离不开人的智力把控,但能替代人完成一些繁琐或者不可能通过手工达到的事情,它的优点是在某些方面能提高测试效率,特别是在违规测试某些性能测试。 

    · 总结:在实际测试中,应该综合各种方法集成综合测试


    2.5 单元测试

    2.5.1 什么是测试单元

    ◆ 一个函数
    ◆ 类或类的成员函数
    ◆ 几个函数的集合

    2.5.2 什么是单元测试

    ◆ 对软件基本组成单元进行测试,主要是为了发现单元内部可能存在的各种错误和不足。
    ◆ 主要工作分为两个步骤:人工静态检查和动态执行跟踪。
    ◆ 般由开发组在开发组长监督下进行。

    2.5.3 单元测试的主要任务

    ◆ 在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试方法,辅之以黑盒测试方法设计测试用例,使之对任何合理的和不合理的输入,都能鉴别和响应。

    ◆ 模块接口测试
    ◆ 局部数据结构
    ◆ 测试路径测试
    ◆ 错误处理测试
    ◆ 边界测试 

    2.5.4 单元测试环境

    驱动模块相当于程序中的主函数

    2.5.5 单元测试用例设计思路

    ◆ 为系统运行设计测试用例
    ◆ 为正向测试设计用例
    ◆ 为逆向测试设计用例
    ◆ 为满足特殊需求设计测试用例
    ◆ 为代码覆盖设计用例

    2.5.6 单元测试的优势

    ◆ 单元测试体现了尽早测试原则
    ◆ 单元测试有助于提高代码质量
    ◆ 单元测试也可以理解为一种编写文档的行为

    2.5.7 单元测试的误区


    2.6 集成测试

    2.6.1 集成测试的定义

    集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统所进行的测试。

    2.6.2 集成测试关注的重点

    ◆ 模块接口的数据交换
    ◆ 各子功能组合起来能否达到预期的父功能要求
    ◆ 模块间是否有不利影响
    ◆ 全局数据结构
    ◆ 单个模块的误差是否会累积放大

    2.6.3 单元测试与集成测试的区别

    2.6.4 四种集成方法

    一、大爆炸集成

    目的

    尽可能缩短测试时间,使用最少的测试用例验证系统。

    定义

    大爆炸集成也称为一次性组装或整体拼装,这种集成测试策略的做法就是把所有通过单元测试的模块—次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险。

    优点
    1)可以并行测试所有模块。
    2)需要的测试用例数目少。
    3)测试方法简单、易行。

    缺点
    1)由于不可避免存在模块间接口、全局数据结构等方面的问题,—次运行成功的可能性不大。
    2)如果一次集成的模块数量多,集成测试后可能会出现大量的错误。另外,修改了一处错误之后,很可能引入更多的新错误,新旧错误混杂,给程序的错误定位与修改带来很大的麻烦。
    3)即使集成测试通过,也会遗漏很多错误。

    适用范围

    1)只需要修改或增加少数几个模块的前期产品稳定的项目;
    2)功能少、模块数量不多、程序逻辑简单,并且每个组件都已经过充分单元测试的小型项目;
    3)基于严格的净室软件工程(由IBM公司开创的开发接近零缺陷的软件的成功做法)开发的产品,并且在每个开发阶段,产品质量和单元测试质量都相当高的产品。

    二、自顶向下集成测试

    具体步骤

    1)对主控模块进行测试(测试时用桩模块代替直接附属于主控模块
    的模块);
    2)根据选定的结合策略(深度优先或者广度优先),每次用一个实
    际模块代替一个桩模块(需要注意的是,新结合进来的模块通常也需要桩模块);
    3)在结合下一个模块的同时进行测试;
    4)为了保证加入的模块没有引起新的错误,可能需要回归测试(即
    全部或部分重复做前面做的测试);
    5)重复上述的第2~4步,直至所有模块都集成完毕。


    自顶向下的按宽度优先的测试策略。前期完成的模块将是后期完成的模块的驱动模块。

    特点

    自顶向下集成能较早地发现错误。
    测试较高层模块时,底层处理采用桩模块代替。
    自顶向下集成不需要驱动模块。
    自顶向下集成一旦发现问题,会导致过多的回归测试。
     

    三、自底向上集成测试

    定义

    自底向上集成是从系统层次结构图的最底层模块开始按照层次结构图,逐层向上进行组装和集成测试的方式。

    步骤

    从最底层的模块开始组装;
    编制驱动程序,协调测试用例的输入与输出;
    测试集成后的构件;
    使用实际模块代替驱动程序,按程序结构向上组装测试后的构件;
    重复上面的第2~4步,直到系统的最顶层模块被加入到系统中为止。

    最后一个模块添加上去,才能算一个完整的实体,之前一直都不是,可以把最容易出问题的部分在早期进行测试,可以实施多个模块的并行测试,提高测试效率。前期完成的模块将是后期完成的模块的方模块。

    四、三明治集成(混合集成)

    是一种混合增值式测试策略,综合了自顶向下和自底向上两种集成方法,把系统划分成三层,中间一层为目标层,目标层上采用自顶向下集成,目标层下采用自底向上集成。


    五、持续集成测试
    ◆ 实际测试中,各种集成方法有机结合。
    ◆ 采用并行自顶向下,自底向上混合集成。
    ◆ 由于模块开发先后次序,尽早将已完成模块集成。
    ◆ 充分利用各种集成方式有效节省桩模块和驱动模块的开发费用。


    2.6.5 系统测试之八大分测

    强度测试(压力测试)
    是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如∶
    ◆ 把输入数据速率提高一个数量级,确定输入功能将如何响应。
    ◆ 设计需要占用最大存储量或其它资源的测试用例进行测试。

    性能测试
    是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。
    ◆ 性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。
    ◆ 通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小、处理精度等。


    恢复测试
    恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。
    ◆ 错误探测功能—─系统能否发现硬件失效与故障;
    ◆ 能否切换或启动备用的硬件;
    ◆ 在故障发生时能否保护正在运行的作业和系统状态;
    ◆ 在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业等。

    安全测试
    安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞,以检查系统对非法侵入的防范能力。
    ◆ 测试人员扮演非法入侵者。
    ◆ 系统安全设计的准则:使非法侵入的代价超过被保护信息的价值。


    可靠性测试
    是为了检验系统的可靠性是否达到预期目标而进行的测试。
    ◆ 平均失效间隔时间 MTBF(Mean Time Between Failures) 是否超过规定时限?
    ◆ 因故障而停机的时间 MTTR(Mean Time To Repairs) 在一年中应不超过多少时间。

    安装测试
    安装测试的目的不是找软件错误,而是找安装错误。在安装软件系统时,会有多种选择:
    ◆ 要分配和装入文件与程序库
    ◆ 布置适用的硬件配置
    ◆ 进行程序的联结
    安装测试就是要找出在这些安装过程中出现的错误,验证成功安装系统的能力。


    容量测试
    是根据预先分析出的某项指标极限值,测试系统在其极限值状态下是否能保持正常运行,即在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。例如,
    ◆ 对于编译程序,让它处理特别长的源程序;
    ◆ 对于操作系统,让它的作业队列 “满员”;
    ◆ 对于信息检索系统,让它使用频率达到最大。
    ◆ 容量测试完成标准:所计划的测试已全部执行,而且达到或超出指定的系统限制而没有出现任何软件故障。


    文档测试

    检查用户文档的清晰性和精确性。文档测试目的:
    ◆ 检查文档所描述的是否在产品中提供;·检查产品中有的是否在文档中做了正确解释;
    ◆ 检查文档中的诸如拼写和语法错误等语言使用问题。


    2.6.6 验收测试

    验收测试

    是以用户为主的测试,软件开发人员和QA(质量保证)人员也应参加。
    ◆ 由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。
    ◆ 一般使用生产中的实际数据进行测试。
    ◆ 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。


    验收测试任务
    ◆ 制定验收测试计划;
    ◆ 指定验收标准和验收日程表;
    ◆ 规划安排验收测试活动如何执行;
    ◆ 进行验收测试;
    ◆ 依据验收测试的结果进行决策。


    2.6.6 面向对象的软件测试

    以对象为中心,以消息为驱动面向对象的软件测试


    ◆ 面向对象的单元测试:类测试
    ◆ 面向对象的集成测试:类簇测试
    ◆ 面向对象的系统测试


    面向对象软件的单元测试
    ◆ 最小的可测试单位是封装的类或对象,而不再是个体的模块。
    ◆ 面向对象的单元测试通常也称为类测试。
    ◆ 主要考察封装在一个类中的方法和类的状态行为。

    面向对象的集成测试:类簇测试
    类簇是指一组相互有影响,联系比较紧密的类。它是一个相对独立的实体,在整体上是可执行和可测试的,并且实现了一个内聚的责任集合,但不提供被测试程序的全部功能,相当于一个子系统。
    类簇测试主要根据系统中相关类的层次关系,检查类之间的相互作用的正确性,即检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等等。

    面向对象软件的集成策略
    1)基于类间协作关系的横向测试
    2)基于类间继承关系的纵向测试

    系统测试一般不考虑内部结构和中间结果,因此与传统的系统测试差别不大,可沿用传统的系统测试方法。
     

    展开全文
  • 软件测试方法分类

    千次阅读 2019-05-20 21:31:24
    软件测试方法按各种类划分为: 一. 按开发阶段划分 单元测试(模块测试) 单元测试是对软件组成的单元进行测试,其目的是检验软件基本组成单位的正确性 TDD(测试驱动开发),开发人员先不写代码,测试人员先写测试...

    软件测试方法按各种类划分为:

    一. 按开发阶段划分

    单元测试(模块测试)

    单元测试是对软件组成的单元进行测试,其目的是检验软件基本组成单位的正确性

    TDD(测试驱动开发),开发人员先不写代码,测试人员先写测试用例,开发人员根据测试用例写代码 

    • 测试阶段:编码后或者编码前(TDD)
    • 测试对象:最小模块
    • 测试人员:白盒测试工程师或者开发工程师
    • 测试依据:代码和注释+详细设计文档
    • 测试方法:白盒测试
    • 测试内容:模块接口测试,局部数据结构测试,路径测试,错误处理测试,边界测试

    集成测试

    集成测试又称为联合测试,组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检验的的测试工作

    • 测试目的:检查软件单位之间的接口是否正确
    • 测试阶段:一般在单元测试之后进行
    • 测试对象:模块间的接口
    • 测试人员:白盒测试工程或开发工程师
    • 测试依据:单元测试的模块+概要设计文档
    • 测试方法:白盒测试和黑盒测试方法的结合(接口就是黑盒测试,功能就是白盒测试)
    • 测试内容: 模块之间数据传输.模块之间功能冲突,

    系统测试

    将软件系统看成是一个系统的测试,包括对功能,性能以及对软件运行软硬件环境的测试,时间大部分在系统测试执行阶段,包括回归测试和冒烟测试

             回归测试在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次的回归测试  

             冒烟测试一般在开发人员开发完之后送给测试人员来进行测试,测试人员会先进行冒烟测试,保证基本功能正常,不阻碍后续 的测试

            冒烟测试的执行者是版本编译人员

    1. 回归测试:指修改了旧代码之后,重新进行测试以确认没有引入新的错误或者导致其他代码产生产生错误
    2. 冒烟测试:对一个硬件或者硬件组件进行更改或者修复之后,直接给设备加电,如果没有冒烟,则该组件就通过了测试,也可以理解为这种测试时间短,仅用一袋烟功夫就够了 
    • 测试阶段:集成测试通过之后
    • 测试对象:整个系统(软硬件)
    • 测试人员:黑盒测试工程师
    • 测试依据:需求规格说明文档
    • 测试方法:黑盒测试
    • 测试内容:功能,界面,可靠性,易用性,性能,安全性

    验收测试

    验收测试是软件部署之前的最后一个测试动作,它是技术测试的最后一个阶段,也称为交付测试

    • 测试目的:确保软件准备就绪,按照项目合同,任务书,双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求
    • 测试阶段:系统测试通过之后
    • 测试对象:整个系统
    • 测试人员:最终用户或者需求方
    • 测试依据:用户需求,验收标准
    • 测试方法:黑盒测试
    • 测试内容:功能,界面,可靠性,易用性,性能,安全性,各类文档

    二.  按测试实施组织划分

    α测试

    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试

    目的:评价软件产品的FLURPS(即功能,局域化,可使用性,可靠性,性能和支持)

    大型通用软件在正式发布前,通常需要执行α和β测试,注意:α测试不能由程序员或者测试人员完成,需要用户或者公司内部用户完成

    β测试

    β测试是一种验收测试,β测试由软件的最终用户们在一个或多个场所下进行

    α测试和β测试的区别:

    测试的场所不同:

          α测试是指把用户请到开发方的场所来做测试

          β测试是指在一个或多个用户的场所进行的测试

    测试的时间不同:

         α测试先于β测试执行,通用的软件产品需求需要较大的规模的β测试的周期比较长

    三. 按测试执行方式划分

    静态测试

    静态测试是指不运行被测程序本身,仅通过分析或者检查源程序的语法,结果,过程,接口等来检查程序的正确性

    分析如下:

    • 检查项:代码风格和规则核审:程序设计和结构的审核;业务逻辑的审核,走查,审查与技术复审手册
    • 静态质量:功能性,可靠性,可用性,有效性,可维护性,可移植性(质量六性)

    代码静态分析和文档测试都属于静态测试 

    动态测试

    动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率,正确性和健壮性等

    由三部分组成:构造测试用例,执行程序,分析程序的输出结果

    四. 按是否查看代码划分为

    黑盒测试

    黑盒测试也称功能测试,测试中把被测软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据

    白盒测试

    白盒测试又称为结构测试,透明盒测试,逻辑驱动测试或基于代码的测试,白盒指的是打开盒子,去研究里面的源代码和程序结果

    接口测试也是白盒测试的一种

    灰盒测试

    灰盒测试,是介于黑盒测试和白盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出输入,输出的正确性,同时也关注程序的内部情况

    五. 按是否手工划分为

    手工测试

    手工测试就是就是由人一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤

    优点:自动化测试无法替代探索性测试,发散思维结果的测试

    缺点:执行效率慢,量大易错

    自动化测试

    自动化测试是以人为驱动的测试行为转化为机器执行的一种过程

    自动化测试有比如功能测试自动化,性能测试自动化,安全测试自动化,通常说的自动化是指功能测试自动化

    自动化按对象来分,还可以分为接口测试,UI测试等 

    六. 按测试地域划分为

    国际化测试

    本地化和国际化测试与其他类型的测试存在很多不同之处。下面是本地化和国际化测试 的一些要点。

    1. 本地化后的软件在外观上与原来版本是否存在很大的差异,外观是否墼齐、不走样。
    2. 是否对所有界面元素都进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等。
    3. 在不同的屏幕分辨率下界面是否正常显示。
    4. 是否存在不同的字体大小,字体设置是否恰当
    5. 日期、数字格式、货币等是否能适应不同国家的文化习俗。例如,中文是年月日,而英文是月日年
    6. 排序的方式是否考虑了不同语言的特点。例如,中文按照第一个字的汉语拼音顺序排序,而英文按照首字母排序。
    7. 在不同的国家采用不同的度量单位,软件是否能自适应和转换
    8. 软件是否能在不同类型的硬件上正常运行,特别是在当地市场上销售的流行硬件上。
    9. 软件是否能在Windows或者其他操作系统的当地版本上正常运行。
    10. 联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当, 是否有语法错误。

    本地化测试

    软件本地化和国际化测试是一个综合了翻译行业和软件测试行业的测试类型。它要求测 试人员具备一定的翻译能
    力、语言文化,同时具备测试人员的基本技能

    七. 按测试对象划分为

    性能测试

    检查系统是否满足需求规格说明书中规定的性能

    通常包括:

    • 对资源利用进行的精确度量
    • 对执行间隔
    • 日志事件(如中断,报错)
    • 响应时间
    • 吞吐量(TPS)
    • 辅助存储区(缓冲区,工作区大小)
    • 处理精度等进行监测

    界面测试

    界面测试(简称UI测试),测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等。

    容错性测试

    容错性测试是检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段。当系统出错时,能否在
    指定时间间隔内修正错误并重新启动系统。容错性测试包括两个方面:

                 (1) 输入错误的数据类型,如“猴”年“马”月。

                 (2) 输入定义域之外的数值,上海人常说的“十三点”也算一种。

                 粗暴一些的容错性测试俗称“大猩猩”测试,除了不能拳打脚踢嘴咬,什么招术都可以使出来 

    • 输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好,系统只给出提示或内部消化
      掉,而不会导致系统出错甚至崩溃。
      比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:
    • 灾难恢复性测试,通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复。

    安全测试

    安全测试是一个相对独立的领域,需要更多的专业知识。例如web的安全测试,需要熟悉各种网络协议TCP\HTTP,防火墙,CDN,熟悉各种操作系统的漏洞,熟悉路由器等。从软件来说,熟悉各种攻击手段,例如
    SQL注入、Xss等。

    兼容性测试

    兼容性主要是指软件之间能否很好的运做,会不会有影响、软件和硬件之间能否发挥很好的效率工作,会不会影响
    导致系统的崩溃。

    • 平台测试
    • 浏览器测试
    • 软件本身能否向前或者向后兼容
    • 测试软件能否与其它相关的软件兼容
    • 数据兼容性测试

    最常见的就是浏览器的兼容性测试,不同浏览器在css,js解析上的不同会导致页面的显示不同。常见的IE8的兼容
    性 

    文档测试

    • 开发文件:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。
    • 用户文件::用户手册、操作手册,用户文档的作用:改善易安装性;改善软件的易学性与易用性;改善软件可靠性;降低技术支持成本
    • 管理文件:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告

    文档测试的关注点:

    1. 文档的术语
    2. 文档的正确性
    3. 文档的完整性
    4. 文档的一致性
    5. 文档的易用性 
    6. 文档的可读性

    易用性测试(用户体验测试)

    易用性(Useability)是交互的适应性、功能性和有效性的集中体现。易用性属于人体工程学的范畴,人体工程(ergonomics)是一门将日常使用的东西设计为易于使用和实用性强的学科。

    业务测试

    业务测试是测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的
    过程

    业务测试关注需求和用户

    安装测试

    测试程序的安装、卸载
    典型的是app的安装、卸载

     

    展开全文
  • 软件测试方法可以分为几种?

    千次阅读 2021-05-27 14:01:26
    (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。 (2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑...
  • 常见的几种软件测试方法都有哪些

    千次阅读 2021-07-26 06:44:57
    随着互联网的不断发展,越来越多的人也都开始学习软件测试的相关技术,而今天我们就一起来了解一下,常见的几种软件测试方法都有哪些。1、单元测试单元测试测试的是代码库的单元。它们直接调用函数或单元,并确保...
  • 软件测试方法之黑盒测试与白盒测试 摘要:黑盒测试与白盒测试都是软件测试的重要方法。白盒测试是通过程序的源代码进行测试而不使用用户界面,它主要用于检测软件编码过程中的错误;而黑盒测试是是通过使用整个软件...
  • 软件测试方法与技术朱少民第三章答案部分答案3.综合应用边界值和等价类划分方法设计相应的测试用例,包括尽可能多的无效等价类;输入三个参数作为边,分别满足一般三角形,等腰三角形和等边三角形。答:边边边输出...
  • 常见的二十种软件测试方法详解(史上最全)

    千次阅读 多人点赞 2021-01-27 22:15:57
    测试方法:白盒测试(因为要测源码) 测试内容:模块接口测试(测试模块里面的参数传递是否正确)、局部数据结构测试(测试变量的作用域范围)、路径测试(if-else 判断必须覆盖所有分支)、错误处理
  • 白盒测试方法 一、概念 白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。它可以形象得用下图表示: 二、白盒测试方法...
  • 软件测试方法大汇总

    万次阅读 多人点赞 2017-03-22 16:21:15
    软件测试方法种类繁多,记忆起来混乱, 如果把软件测试方法进行分类, 就会清晰很多。 我参考一些书籍和网上的资料, 把常用的软件测试方法列出来, 让大家对软件测试行业有个总体的看法。   从测试设计方法...
  • (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。 (2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑...
  • 软件测试之软件测试方法

    千次阅读 2019-06-15 15:50:40
    软件测试过程中,最主要的就是要掌握好软件测试的方法,掌握好了软件测试方法,有利于测试技能的大幅度提高。 软件测试方法 软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样...
  • 软件测试方法——黑盒测试

    万次阅读 多人点赞 2018-09-08 00:16:33
     黑盒测试法也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试...
  • 软件测试常用方法

    千次阅读 2022-02-21 22:54:29
    软件测试常用方法
  • 软件工程-软件测试-测试方法

    千次阅读 2020-08-17 14:00:11
    软件工程的白盒和黑盒测试 白盒测试 概念 方法 测试用例 适用范围 黑盒测试 概念 方法 测试用例 适用范围
  • 软件测试方法和测试流程

    万次阅读 2015-07-28 20:09:58
    一、软件测试方法 软件测试方法可分为人工测试和机器测试: 人工测试包括个人复查、走查和会审; 机器测试可分为白盒测试和黑盒测试。  1、人工测试的方法  (1)个人复查  个人复查是指...
  • 软件测试常用方法实例与分析

    千次阅读 2022-02-22 23:28:51
    软件测试常用方法总结实例分析
  • 软件测试方法和策略

    万次阅读 多人点赞 2018-07-23 11:26:39
    什么是软件测试软件测试的目的与原则 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 软件测试的目的: 测试是程序的执行过程,目的在于发现错误 一...
  • 软件的开发过程中,有两类人是决定软件开发质量的,这两类人是开发人员和测试人员。这两类人必须紧密配合,充分合作,才能一起开发出完美的软件。两者之间在一个软件开发过程中,按照如下的关系紧密结合在一起: ...
  • 软件测试方法和技术》电子课件之二

    千次下载 热门讨论 2008-04-22 22:37:07
    前 言 <br>第一篇 软件测试的原理 第1章 软件及其开发过程 第2章 软件测试的基本概念和方法 第3章 质量保证与测试策略 第4章 软件测试依据和规范 <br>第二篇 软件测试的技术 第5...
  • (1)定义:单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程...
  • 软件测试方法之正交试验测试方法

    千次阅读 2019-03-26 13:33:15
    优点:正交试验从全面试验中选出有代表性的点进行试验,减少了测试用例,合理地减少了测试的时间,提高测试效率,是一种高效率,快速,经济的测试方法; 缺点:每个状态点同等对待,重点不突出,容易造成在不常用...
  • 软件测试方法的总结

    千次阅读 2015-11-07 19:20:08
    1、按是否查看程序内部结构分为: (1)黑盒测试(black-box testing):只关心输入和输出的结果。 (2)白盒测试(white-box testing):去研究里面的源代码和程序...黑盒测试也称功能测试或数据驱动测试,它是在已
  • 软件测试的步骤和方法

    千次阅读 2020-07-29 11:36:41
    软件测试的两种方法 答:黑盒测试和白盒测试 黑盒:这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。 ...
  • 软件测试常用的七大方法

    千次阅读 2021-08-02 08:21:58
    软件测试常用的七大方法一、测试用例包含的十要素二、软件测试常用方法第一、等价类划分1、定义2、划分3、划分规则4、案例说明第二、边界值分析1、边界值上的三点2、边界值应用场景3、边界值方法应用步骤第三:判定...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 919,250
精华内容 367,700
关键字:

软件测试的方法

友情链接: qie_ps70.zip