笔者从事软件测试行业已有7个年头的时间,针对工作实际浅谈软件测试是什么,以及如何进行软件测试。

笔者从事软件测试行业已有7个年头的时间,针对工作实际浅谈软件测试是什么。

大家如果去百度上搜索什么是软件测试”给出的答案大体应该都是“描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程”但是这种文字描述太抽象了,本人在刚进入软件测试行业时看到这种解释,会认为软件测试就是多方面测试找出软件存在的问题(BUG),这样理解是没错的,但是让我在深入说明怎么进行软件测试,如何提高软件质量时我就会一知半解,无法深入了,我想这也是大多数刚入测试行业“新手”们的通病,这里我结合多年测试检验浅谈下个人看法,希望对大家有帮助。

软件的核心是代码。我想就算是刚入行的“新手”只要是做IT的应该都能理解,代码是软件的核心,代码组成了软件所有功能,软件测试就是检查代码是否有问题(BUG),在此基础上软件测试划分了多种测试方法如:单元测试、静态分析、API接口测试、功能测试、性能测试等等。

什么是测试左移?

个人认为软件测试在能力和条件符合的情况下应该尽量左移,即“测试左移”。

测试左移是在一次浏览帖子是看到的术语,其实测试左移的表述早就有了,只是一直没有合理和总结概念。

首先,测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件快速失败,促使团队更早的修改所有的bug

测试左移并没有什么独特的,只是让测试人员在软件开发生命周期内更早的参与进来,同时让他们去理解需求、软件设计、软件架构以及软件功能,也让他们去向客户、商业分析师和开发人员问问题,寻找答案,提供反馈结果已达到支持团队的工作得可能性。

参与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。

在什么阶段介入软件测试最合适?

根据测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件快速失败,促使团队更早的修改所有的bug测试左移让我们尽快介入,但在什么阶段介入是个问题。我们看下面的金字塔模型:

                                                          金字塔模型

通过之前对金字塔结构的学习,大概了解到了金字塔模型想告诉我们的几个道理:

  1.越底层,越稳定。

  金字塔主要观点认为单元测试的稳定性高,需要多投入。

  2.越底层,越高效。

  程序的问题,最终还得落在具体的代码上,所以底层的测试更容易发现问题。

  3.越底层,越低成本。

  越底层测试能越早发现问题,越早发现问题,修复的成本自然越低。

  4.越底层,越难实施。

  越底层的实现对技术专业性要求越高,这点跟第三点有点矛盾,往往越专业的人才也意味着人力成本越高。

  综合下金字塔模型,随着前后端分离越来越清晰,我个人愚见提出了灯笼模型,拿接口测试和UI层测试以及单元测试做了比较,从图中各部分所占有的比重,可以一目了然的看出并最终认定接口(API)测试可以获得较高的投资回报。

 

                                                                 灯笼模型

接口将前端和后端进行很好的分离,帮前后端实现数据交互,这样在项目初期就可以和前端工程师讨论需要的后端数据,然后后端根据需求开发后接口,将数据返回给前端,测试人员提前进入测试接口,前后端然后在各自开发自己模块。

 项目迁移,以及后期维护,接口带来的便利性,试想一下,如果没有项目交付以后,后端人员将数据库的某个字段的长度、类型修改后发版,而由于某些原因没有及时通知前端工程师,而此时前端的获取的这个字段的类型、长度是以前的,那么就可能引发线上事故。如

果前端技术牛叉,存储获取字段是一个变量,工作量还小点。只需要改变变量类型、长度即可,如果是一个差一点的没有用变量,而前端又是好几百个页面都用到这个字段,这样就造成后果无法想象的,但是用到接口就有不一样了,如果出现类似的情况,后端人员只需

要将这个字段通过接口做处理是返回的字段保持一致即可,也就是分分钟的事,可能用户都没有察觉就修复了。而且前端、后端、测试也很好排查问题,跑一下接口,查看接口文档返回数据有差异,修给接口就可以,这样处理问题效率也会大大提高。

  简单概括:

①.越底层发现bug,它的修复成本是越低的。

②.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

③.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

④.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

⑤. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

⑥.   现在很多系统前后端架构是分离的,从安全层面来说:

如何提高软件产品质量?

进过上面的介绍我们知道了,软件测试方法是手段,提高软件质量是目的,根据金字塔模型和灯笼模型知道了在API阶段介入最合适(投资小回报大);但是除了API测试我们怎么提高软件产品质量呢?

一个软件产品的生命周期一般是:问题定义及规划->需求分析->软件设计->程序编码->软件测试-运行维护。

其中问题定义及规划->需求分析阶段是软件收集需求的阶段,这会软件还没有定型,我们测试不必过多介入,如果有条件也可以跟着,这样对需求更熟悉(当然一般是不可能的);在软件设计阶段我们可以介入API接口测试,接口测试不单单是测试请求通过了, 还要从业务出发, 对功能,性能等方面考虑,接口测试主要是从后端角度出发的,API接口测试可以用到的一些工具有postmanpython+request等,这部分是可以和程序编码同时进行的;等编码结束我们的接口测试也到了尾声,这会就可以进行软件测试了,软件测试主要是从前端UI考虑的功能、流程、安全等;运行维护阶段是产品已经交付了,但在软件服役期间可能会有新的需求或问题,不管哪种情况都会修改软件代码,只要代码修改了,我们就要进行测试,而且是全部测试,不管是功能、性能、接口,因为我们也不知道修改的代码会影响那部分功能,这会我们就可以考虑接口和已有功能的自动化了,当然新功能还是要按部就班的进行测试。

原文地址:https://www.cnblogs.com/lirongyang/p/11927827.html