网站建设有哪些推广渠道,wordpress主题添加右边栏,乐陵seo快速排名,wordpress主题W3C大家好#xff0c;我是洋子
在进行日常测试的时候#xff0c;我们大部分时间花在手动的功能测试上#xff0c;功能测试又可称为手工测试#xff0c;官方一点的学名叫黑盒测试#xff0c;当然作为测试工程师#xff0c;我们一般俗称点点点 黑盒测试是一种软件测试方法我是洋子
在进行日常测试的时候我们大部分时间花在手动的功能测试上功能测试又可称为手工测试官方一点的学名叫黑盒测试当然作为测试工程师我们一般俗称点点点 黑盒测试是一种软件测试方法它的主要目的是检查软件的功能和性能而不考虑软件的内部实现和代码。在黑盒测试中测试人员不了解软件的内部结构和实现只能根据软件的需求文档PRD、用户手册或其他相关文档来设计测试用例和执行测试 在进行黑盒测试时不需要看代码而是直接根据需求文档编写黑盒测试用例根据测试用例就可以进行业务测试
在IT行业不断发展过程中白盒测试逐渐走进了我们的视野 白盒测试是一种软件测试方法它通过检查和评估软件代码的内部结构和实现细节来测试软件的功能、安全性和稳定性。在白盒测试中测试人员通常具有软件开发和编程的知识可以访问代码和系统的内部结构以检查代码是否符合规范和标准是否遵循最佳实践和设计原则 对比黑盒测试和白盒测试的最大区别就是测试工程师能否看到开发写的代码
白盒测试究竟该怎么做在一直做点点点的同学心里一直是一个谜其实白盒测试本来在工业界并没有完整的方法论标准
看过许多软件测试相关书籍以及博客大家了解到的白盒测试理论一般局限在白盒测试的分类以及6种常用白盒测试的覆盖方法 白盒测试的分类 静态分析不需要执行程序代码就可以进行的测试例如Code Review代码走查、静态代码扫描动态分析需要执行程序代码才可以进行的测试例如单元测试Debug测试打桩测试等 6种白盒测试的覆盖方法 语句覆盖每条语句至少执行一次判定覆盖每个判定的每个分支至少执行一次条件覆盖每个判定的每个条件应取到各种可能的值判定条件覆盖同时满足判定覆盖条件覆盖条件组合覆盖每个判定中各条件的每一种组合至少出现一次路径覆盖使程序中每一条可能的路径至少执行一次
若按照覆盖严格程度来看语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖即在这6种覆盖方法中最严格的是路径覆盖
在这篇文章当中《互联网大厂服务端测试流程》我对语句覆盖/判定覆盖/条件覆盖这3种覆盖方法进行了举例探讨感兴趣可以阅读
看到这里对于新人小白来说可能就会产生疑问了做好白盒测试是不是只要达到最严格的路径覆盖就行
理论能够指导实践我们可以根据覆盖方法进行白盒测试但不管是黑盒还是白盒测试测试的目的都是在有限的测试时间内尽量发现更多的Bug而不是追求更加严格的测试覆盖率
做好白盒测试的关键点
那么做好的白盒测试的关键点到底是什么呢抛出一个观点就是理解代码换句话说就是能看懂开发写的每一行代码并定位到有问题的代码行至于是否要达到白盒测试中的非常严格的覆盖程度是次要的
为什么会这么说主要是因为看懂代码是发现Bug的最快方式扫一眼就能知道这里会不会有Bug当然想拥有这样过眼就能发现问题的能力需要掌握扎实的计算机基础以及看过几万甚至几十万行代码
另外开发写的代码当中有的逻辑并没有分支所以达到语句覆盖就行个别存在多个分支的情况可以考虑加大覆盖程度如到达条件覆盖但达到更高的覆盖率意味着测试时间会拉长
测试是否要去看开发的代码是一个长久以来比较有争议的话题持反对意见的同学认为没必要看公司没要求自己也看不懂有问题直接抛给开发
但从目前测试行业来看以及微服务架构和前后端分离的流行互联网大厂的测试早已经划分出一种测试角色叫服务端测试也称SQAServer QA这种工种承接的日常测试工作基本以接口测试Code Review以及后端代码的白盒测试为主也是目前在测试行业里面发展相对前景较好的岗位
综上能够看懂代码对于我们测试来说只有好处没有任何坏处在就业环境如此差的今天测试能看懂代码就是一道分水岭
白盒测试举例
从看懂代码语法再到理解代码再到定位Bug到代码行提供修改建议是一个循序渐进的过程
代码究竟怎么看才能快速发现问题应该关注哪些测试点拿一个比较典型的接口来举例子下面是一段伪代码描述了一个很常见的业务场景如果Redis缓存中有数据则读取Redis当中的数据没有数据则读取数据库DB里面的数据 如果要测试这段代码需要检查Redis里面有数据的情况下是否能正常从Redis当中读取数据。同理需要检查在Redis没有数据的情况下能否正常从MySQL当中读取数据
为了便于验证数据我们可以使用编程语言自带的打印函数如各大编程语言当中的print函数PHP当中的var_dump或者调用代码框架当中已经封装好打印日志函数 测试这段代码的核心关键是在于理清数据流变量var从哪里来接下来又会在哪些地方去使用理清数据流同样也是白盒测试当中的关键点
留一个思考题假设在测试过程当中发现Redis里面有数据但是经过Debug后发现代码逻辑走到了读取数据库当中的数据这个问题产生的原因是什么
结束语
在白盒测试当中理解代码和理清数据流是做好白盒测试两个关键点至于能够在白盒测试当中发现多少问题取决于测试工程师对于技术的理解深度