软件测试方法总结

张开发
2026/4/17 17:35:01 15 分钟阅读

分享文章

软件测试方法总结
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快根据利用的被测对象信息的不同可以将软件测试方法分为黑盒测试、灰盒测试、白盒测试。1、白盒测试1概念是依据被测软件分析程序内部构造并根据内部构造分析用例来对内部控制流程进行测试可完全不顾程序的整体功能实现情况即已知软件产品的内部实现过程可以通过测试证明每种内部操作是否符合设计规格的要求所有内部成分是否已经过检查。2思想白盒测试又被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试、是基于程序结构的逻辑驱动测试。3测试对象 函数、算法与数据结构4目的1一般在测试前期进行通过达到一定的逻辑覆盖率指标使得软件内部逻辑控制结构上的问题能基本得到消除2保证内部结构达到一定的覆盖程度能够给予软件代码质量更大的保证3白盒测试发现问题后解决问题的成本较低。5白盒测试的常用技术1静态分析包括控制流分析、数据流分析、信息流分析2动态分析逻辑覆盖测试分支测试、路径测试等、程序插装等 逻辑覆盖测试根据覆盖的对象不同可以分为语句覆盖、判定分支覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 程序插装指调试程序时在程序中插入一些打印语句程序执行时打印出我们关心的信息通过这些信息了解执行过程中程序的一些动态行为。6白盒测试的特点1测试人员需要了解软件的实现2可以检测代码中的每条分支和路径3揭示隐藏在代码中的错误4对代码的测试比较彻底5实现代码结构上的优化6投入较大成本高7无法检测代码中遗漏的路径和数据敏感性错误8不验证规格的正确性。2、黑盒测试1定义把测试对象看成是一个黑盒只考虑其整体特性不考虑其内部具体实现过程。即已知产品的需求规格但不知其内部实现可以进行测试证明每个需求是否实现。2思想基于规格的测试测试类型都来源于质量模型。3测试对象系统、子系统、模块、子模块、函数等。4常用的黑盒测试方法等价类划分法、边界值分析法、因果图分析法、判定表法、状态迁移法等。5目的减少测试时的测试用例数用尽量少的测试用例完成测试发现更多的问题。6黑盒测试的特点1对于更大的代码单元来说子系统甚至系统级比白盒测试效率要高2测试人员不需要了解软件的实现细节包括特定的编程语言3从用户的视角进行测试很容易被理解和接受4有助于暴露任何规格不一致或有歧义的问题5没有清洗和简明的规格测试用例很难设计6不能控制内部执行路径会有很多内部程序路径没有被测试到7不能直接针对特定的程序段这些程序可能非常复杂因此可能隐藏更多的问题3、灰盒测试利用被测对象的整体特性信息采用黑盒测试方法利用被测对象的内部具体实现信息采用白盒测试方法介于白盒和黑盒测试之间的测试方法测试方法称之为灰盒测试。1定义如果即利用被测对象的整体特性信息又利用被测对象的内部具体实现信息采用得就是灰盒测试方法。两种信息占得比例不同相应的灰度就不同。2适用对象一般集成测试采用灰盒测试方法。按照被测试的软件系统是否运行将测试分为静态测试和动态测试。1、静态测试1定义不运行被测试的软件系统而是采用其他手段和技术对被测试软件进行检测的一种测试技术例如代码走读、文档评审、程序分析等。2常用技术静态分析技术。1定义静态分析是一种不通过执行程序而分析程序的技术。2功能检查软件的表示和描述是否一致没有冲突或者没有歧义3目的纠正软件系统在描述、表示和规格上的错误因此是任何进一步测试的前提。4静态分析技术主要有3种不同的程序测试可能性考虑程序是否满足编码规则语法上是否具有一致性和完整性考虑文档描述是否规范、准确、便于查阅考虑程序和文档之间的一致性。5静态分析技术有控制流分析、数据流分析和信息流分析下面一一介绍1、控制流分析控制流相关概念程序元素一个程序元素通常是一个条件一个简单的语句或者一块语句多个连续语句。控制流关系一个程序的控制流关系Control Flow Relation叙述了程序元素和他们执行的次序之间的关系。控制流图对应于控制流关系的图被称为控制流图。控制流矩阵有控制流图得到反映相邻程序元素之间的先后顺序关系。控制流分析能发现的问题 通过对控制流信息进行分析确保写出的程序不应包含转向并不存在的标号没用的语句标号从程序入口进入后无法达到的语句不能达到停机语句的语句。2、数据流分析数据流相关概念 数据流分析最初是随着编译系统要生成有效的目标码而出现的这类方法主要用于代码优化代码优化主要包含结构优化即可读性、时间效率和空间效率优化、可移植性优化。数据流分析法关键是数据的引用和定义。 数据的定义如果程序中某一语句执行时能改变某程序变量V的值则称V是被该语句定义的。数据的引用如果程序中一语句的执行引用了内存中变量V的值则称V是被该语句引用的。数据流分析步骤 根据代码得到数据流表分析数据流表找到以下两种错误变量未定义但被引用变量定义但未被引用2、动态测试1定义按照预先设计的数据和步骤去运行被测软件系统从而对被测试软件进行检测的一种测试技术。2特点主要分析软件系统在模拟或是真实的环境中执行之前、之中、之后的动态行为。3常用技术动态分析技术1定义对软件系统运行行为进行分析包含程序在受控的环境下使用特定的输入进行正式的运行和期望的结果比较以检查系统运行是正确还是不正确。2常用动态分析技术路径测试分支测试性能测试3常用动态分析工具及功能测试覆盖率分析用于测试对代码的检测范围跟踪跟踪程序执行期间的所有路径调整度量程序执行过程中所有的资源模拟模拟系统的部分3、所有测试方法都可以归类为手工测试和自动化测试1、手工测试1定义手工测试是传统的测试方法由测试人员手工编写测试用例执行观察结果。2缺点测试工作量大重复多回归测试难以实现2、自动化测试1定义自动化测试指利用软件测试工具自动实现全部或者部分测试工作管理、设计、执行和报告自动化测试节省大量的测试开销并能够完成一些手工测试无法实现的测试。2自动化测试的意义1对程序新版本运行前一版本执行的测试提高回归测试效率2可以运行更多更频繁的测试3可以执行手工测试困难或不可能做到的测试比如大量的重复操作或者集成测试4更好的利用资源比如测试仪器或者被测对象5测试具有一致性和可重复性及自动化测试的步骤和结果完全一样的测试的复用性及自动化测试甲苯可以拆分开给其他测试脚本使用6可以更快地将软件推向市场软件发布前进行高效的回归测试减少软件发布的时间7增加软件的信任度通过自动化测试提高了测试效率可以吧节约的时间拿出来做更多的测试3自动化测试的限制1不能取代手工测试自动化测试只能提高测试效率不能提高测试有效性即不可能发现更多缺陷更多2对测试设计依赖性极大测试设计的不好会遗漏问题3自动化测试对软件开发具有很大的依赖性开发出现变更可能导致前面的自动化测试完全失效4工具本身并不具备想象力工具不具有智能4自动化测试的误区1不现实的期望希望自动化能取代手工测试2缺乏测试实践经验手工测试都做不好或者经验积累不够就尝试自动化很难成功3期望自动化测试发现大量新缺陷自动化只能保证测试执行效率确保已有的问题不会再发生发现新缺陷不是其目的4安全性错觉认为进行了自动化测试的软件就是安全的、质量有保证的只有手工测试做好了明确了测试的观察点才能把自动化测试做好,所以手工测试是自动化测试的一个基础。最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。

更多文章