2021-12-15点击量:261
软件测试之“支付功能”测试1、测试思维要分析测试点之前,我们先来梳理一下测试思维。总结来说,任何事物的测试思路都可以总结如下:第一步:梳理产品的核心业务流程:明白这是个什么项目,实现了什么业务,以及是怎么实现的?这个步骤一般是参考公司的需求文档来的,如果产品提供需求文档的同时提供了业务流程图,可以遵循流程图来梳理;如果产品没有提供流程图,就需要测试人员根据需求的理解自己画出流程图,达到梳理业务的目的。第二步:根据流程进行模块细分,然后针对每个功能模块进行详细的测试点设计和提取。这个单个功能的测试点提取要覆盖以下几个方面:正常功能验证:优先覆盖正常的业务流程和功能验证,这其实也是单个功能的冒烟测试。冒烟测试先行,如果不通过,可以直接停止测试等开发修复后继续测试。异常功能验证:为了更加贴近用户的使用产品,我们也要验证各种异常的场景,故意操作导致出错,检查系统的反馈和提示,保证用户操作失误的情况能够得到系统的友好指示。因为有很多地方的操作都有可能会导致系统异常和报错,所以为了不漏测,我们需要找出所有可能导致异常的输入项和选项。所以就到了第三步:第三步:针对具体功能,寻找每个输入项和步骤,从以下三个角度来分析测试点。长度,数据类型,必填项,重复需求的约束条件+隐形需求功能之间的交互这其中就需要用到一些用例的具体设计方法了,比如场景法,等价类法,边界值法,错误推测法等等第四步:考虑非功能测试点,包括界面、易用性、兼容性、安全性、性能压力2、支付功能的测试点基于上面的测试思路,我们可以分析得出“支付功能”测试点如下:梳理支付的业务流程如下:点击支付--->选择支付方式--->确认金额--->输入密码--->成功支付完成这个流程测试,也就是完成了项目的冒烟测试!然后需要测试针对流程中的每个阶段和步骤,具体分析可能导致异常的测试点,所以我们按阶段和输入项来进行划分。非现金支付时代,非现金支付已经成为了生活不可或缺的一部分,我们只需要一台手机便可走遍全国各地(前提是支付宝,微信有钱),那么作为测试人员,支付测试也是非常重要的一环,那么下面我就结合一下我的工作中遇到的一些问题,总结一下常见的支付测试:一:支付的分类其次,一般来讲,线上支付分为两种消费模式。一种是直接支付金额,如淘宝,京东等购物网站,或是360云盘,视频会员等这种会员服务;另一种是充值购买金豆之类的虚拟币,在网站中使用虚拟币进行消费,比如游戏平台、花椒等产品!二:功能测试接下来就是测试方面的工作了,首先进行的是功能测试,那么我将边界值、等类划分、错误推测,因果图等各种测试方法相结合,整理出来了一套相对全面的测试案例,对支付功能进行测试,从而确保整个支付流程和涉及到的支付流程在任何情况下都能使用。三:接口测试明确整个支付流程所需要调用的接口,分清楚商家和第三方平台的接口以及参数的请求方式,包括对接口特定参数的加密,使用异常单号模拟支付,对服务端的检验等等四:安全测试支付都会涉及到金额,那么就需要考虑安全测试这个方面,支付请求的伪造,金额的恶意篡改,恶意模拟第三方接口来调用商家接口等,均是我们需要考虑清楚的问题本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-14点击量:290
软件测试面试题1、设计测试用例时应该考虑哪些方面,即不同的测试用例针对那些方面进行测试?设计测试用例时需要注意的是,除了对整体流程及功能注意外,还要注意强度测试、性能测试、压力测试、边界值测试、稳定性测试、安全性测试等多方面。(测试用例需要考虑的四个基本要素是输入、输出、操作和测试环境;另外,测试用例需要考虑的是测试类型(功能、性能、安全……),这部分可以参照TP做答。此外,还需要考虑用例的重要性和优先级)2、在windows下保存一个文本文件时会弹出保存对话框,如果为文件名建立测试用例,等价类应该怎样划分?单字节,如A;双字节,AA、我我;特殊字符/‘。‘;、=-等;保留字,如com;文件格式为8.3格式的;文件名格式为非8.3格式的;/,\,*等九个特殊字符3、假设有一个文本框要求输入10个字符的邮政编码,对于该文本框应该怎样划分等价类?特殊字符,如10个*或¥;英文字母,如ABCDefghik;小于十个字符,如123;大于十个字符,如11111111111;数字和其他混合,如123AAAAAAA;空字符;保留字符4、软件测试项目从什么时候开始?为什么?软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,并且软件缺陷存在放大趋势,缺陷发现的越晚,修复它所花费的成本就越大。5、什么是回归测试?回归测试(regressiontesting)有两类:用例回归和错误回归用例回归,是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题。错误回归,就是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改的部分进行测试的方法。6、单元测试、集成测试、系统测试的侧重点是什么?单元测试针对的是软件设计的最小单元--程序模块(面向过程中是函数、过程;面向对象中是类),进行正确性检验的测试工作,在于发现每个程序模块内部可能存在的差错,一般有两个步骤:人工静态检查\动态执行跟踪集成测试针对的是通过了单元测试的各个模块所集成起来的组件进行检验,其主要内容是各个单元模块之间的接口,以及各个模块集成后所实现的功能.系统测试针对的是集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件\外设\某些支持软件\数据和人员等其他系统元素结合在一起,要在实际的运行环境中,对计算机系统进行一系列的集成测试和确认测试。7、一个测试工程师应具备哪些素质?责任心沟通能力团队合作精神耐心、细心、信心时时保持怀疑态度,并且有缺陷预防的意识具备一定的编程经验8、你所了解的的软件测试类型都有哪些,简单介绍一下按测试策略分类:静态与动态测试黑盒与白盒测试手工和自动测试冒烟测试回归测试按测试阶段分类:单元测试集成测试系统测试其他常见测试方法:功能测试、性能测试、压力测试、负载测试、易用性测试、安装测试、界面测试、配置测试、文档测试、兼容性测试、安全性测试、恢复测试9、为什么要在一个团队中开展软件测试工作?因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。10、您认为做好测试用例设计工作的关键是什么?白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-14点击量:220
在软件测试的过程中,多多少少都是会接触到一些测试工具,作为辅助测试用的,以提高测试工作的效率,使用好了测试工具,能对测试起到一个很好的作用,同时,有些公司,也会要求掌握一些测试工具,或者,是在面试时,也会被问到测试工具的,比如,在面试时,最常见的问题便是,你在测试时,用的是什么测试工具?或者,要做性能测试时,要用什么测试工具进行测试会比较好?等等问题。作为测试人员,了解下现在有哪些工具可以用,这些工具是运用在什么方面的,然后,选择几个较为主流的测试工具,深入研究,并且运用它们,对于提高测试技能,是很有必要的。一、测试管理工具软件测试活动开展过程中,将会涉及到大量的测试活动管理及资源文档管理,因此,拥有一个完善、有效的测试管理工具,将会给软件测试工作带来事半功倍的效果。目前业内应用较为广泛的两款测试管理工具,分别是HP的ApplicationLifecycleManagement(简称ALM)和国内开源的项目管理软件-禅道。1、ALMALM,全称ApplicationLifecycleManagement,应用程序生命周期管理软件,顾名思义,该产品用于软件研发活动的整个生命周期管理。有HP公司生产,其早期版本分别是TestDirect及QualityCenter。2、禅道禅道是国内第一款开源的项目管理软件,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程。测试工程师在禅道平台更多应用的是“测试”模块,测试模块中包括用例、用例库、Bug、报告等功能,与ALM类似,从需求分析、用例设计、用例执行、缺陷管理、报告输出完整实现了软件测试流程管理。3、SVNSVN是一个开源的集中式版本控制系统,是常用的代码和项目管理工具。简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。可以把SVN理解为一个库,里面存放各种文件,SVN给每个文件打上标签,记录文件的每次变动,方便你查找、获取最新的文件。4、gitgit和SVN的功能很像,但不同的是,SVN是集中式的,必须联网才能正常工作。而git是分布式的,所以git支持离线工作,分支管理比SVN好用。但是git的命令繁多且复杂,没有SVN简单易用。二、单元测试工具软件测试理论中有一个观点:单元测试大约能发现80%的缺陷。意味着如果在单元测试阶段投入更多的精力,则可最大程度的降低软件系统中的缺陷。由于目前大多数企业级应用开发语言基本都是Java,故而行业内应用较多的单元测试工具为Junit及TestNG。1.JUnit传统的单元测试,需要针对被测对象再重新编写调用断言程序,从而验证被测函数或类的正确性,项目规模小的时候测试人员尚能承受,随着项目的不断复杂化,工作量呈数量级增加,测试人员需要投入更多的精力,而企业也需要投入更多的成本,而Junit的出现,解决了之前的一切问题,使得单元测试变得非常简单,易于实施。2.TestNGTestNG与JUnit一样,属于Java语言中的一个测试框架,TestNG与JUnit相比功能更为强大,JUnit目前仅能实现单元测试,并且在编程语法上具有一定的局限性,而TestNG更为简洁,同时支持多组测试Case及更多的测试应用,如功能测试、自动化测试等。三、接口测试工具系统间接口,通常可以利用为两个不同的系统间,如第三方登录、第三方支付等。这类接口测试相对较难,需要提供较为完善的接口文档。目前业内主流接口测试工具主要有Jmeter、Postman、soapUI等几种,本节介绍相对常用的Jmeter及Postman。1、JmeterJmeter,是Apache组织开发的基于Java语言的压力/负载测试工具。与LoadRunner一样,用于对软件做压力/负载测试,随着应用范围的不断扩大及功能不断升级,越来越多的测试人员利用Jeter实施接口自动化测试。Jmeter提供断言功能,便于测试人员开发脚本验证被测对象的返回结果是否与预期结果一致。Jmeter除了可以实现接口功能测试之外,实际上它的主营业务是负载测试。通过设置线程池、参数化、关联等类似于LoadRunner的策略设置后,同样可以实现性能测试。2、Postman对于没有UI界面,纯粹是数据传递或业务逻辑处理的接口API时,利用Postman也是个不错的选择。Postman在测试App接口方面具有一定的优势,App应用开发初期可能涉及大量的接口数据处理,可利用Postman快速构建请求,设置验证点,在Test模块中实现返回结果与预期结果的比较,从而实现测试目的。四、自动化测试工具自动化测试,利用自动化测试工具,通过录制/编程方式实现测试活动,发现被测对象存在的缺陷,从而替代手工测试活动。自动化测试不局限于某个具体测试阶段,也不局限被测对象的类型,只要满足自动化测试的必要条件即可实施。根据被测系统的结构形式,目前业内主要有两款开源的基于UI层面的自动化测试工具应用较为广泛,一是测试Web结构的Selenium,二是测试移动应用结构的Appium。1、SeleniumSelenium直接运行于浏览器中,更真实的模拟了用户的业务行为,验证被测对象的功能表现及在不同浏览器中的兼容性特性。与传统的自动化测试工具不同,Selenium没有独立的操作UI界面,支持更多的编程语言,如Java、Python等,更为简洁与快捷,易于测试工程师掌握应用。Selenium实际上不是一个测试工具,而是一个工具集,其主要由三个核心组件构成:SeleniumIDE、SeleniumRC(RemoteControl)及SeleniumGrid。2、AppiumSelenium是目前业内应用较多的Web自动化测试工具,而开源的移动应用自动化测试工具,则多采用Appium。Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持OS、Android。Appium使用WebDriver的jsonwire协议,驱动Apple系统的UIAutomation库及Android系统的UIAutomator框架。3、FiddlerFiddler是一个常用的抓包工具。它是用C#写出来的,可以支持众多的http调试任务,并且能够使用.net语言进行扩展。Fiddler支持断点试技术,还可以显示所有的Http通讯,你可以很轻松地看到你请求的某个页面,总共被请求了多少次,以及多少字节被转换了。同类型的工具还有httpwatch,wireshark等等。4,JmeterJmeter,是Apache组织开发的基于Java语言的压力/负载测试工具。与LoadRunner一样,用于对软件做压力/负载测试,随着应用范围的不断扩大及功能不断升级,越来越多的测试人员利用Jeter实施接口自动化测试。Jmeter提供断言功能,便于测试人员开发脚本验证被测对象的返回结果是否与预期结果一致五、性能测试工具1、LoadRunnerLoadRunner是一种评测软件系统性能的负载/压力测试工具。测试工程师利用该工具模拟成千上万个终端用户实施并发负载查找问题,并利用其自带的Analysis模块进行确认问题。LoadRunner适用于各种体系架构的软件系统性能测试,利用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。2、JMeterJmeter和Loadrunner区别是,一个是开源免费,一个是收费,不开源。但是Loadrunner比Jmeter更加稳定,数据监控的报表也比Jmeter丰富。还有LoadRunner的IP欺骗功能可以更好地模拟实际用户场景。六、负载测试工具LoadNinja是一个性能和负载测试框架,用于诊断API和UI性能问题。LoadNinja具有内置的TrueLoad技术,与传统的按协议进行的性能测试相比,该技术可使测试终端用户体验的速度提高60%。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-13点击量:309
软件测试面试题之用例设计题,你有遇到过吗?一、功能测试之点赞功能:1.点击点赞按钮,是否可以成功点赞,并显示点赞图标和微信昵称;2.点赞成功后是否可以取消点赞;3.没有网络情况下是否可以点赞;4.点赞成功后是否可以评论;5.是否按照点赞顺序进行排序;6.点赞刚好一排可以显示多少头像;7.是否有点赞人数限制;8.是否可以多次点赞/取消点赞;9.点赞成功后,原“点赞”字样是否变为“取消”;10.朋友圈是否可以看到共同好友的点赞;11.是否可以点赞刚删除的朋友圈;12.是否可以点赞图片/视频/纯文字的动态;13.朋友圈限制仅自己可见,是否可以点赞;14.朋友圈设置三天后不可见,是否可以点赞;15.朋友圈主页中,是否可以看到点赞信息;16.是否可以点赞1天/7天/30天前/1年前/半年前朋友圈,并点赞朋友圈;17.是否可以点赞自己发送的朋友圈;18.是否可以点击刚加好友的朋友圈;19.陌生人可见10条动态的朋友圈是否可以评论;20.朋友点赞是否有提示本人收到朋友圈被朋友点赞信息;二、评论功能:1.点击评论按钮,是否可以成功评论,并显示评论内容和微信昵称;2.评论成功后是否可以删除评论;3.没有网络情况下是否可以评论;4.是否按照评论的时间顺序进行排序;5.评论时,是否支持表情,文字,颜文字形式等;6.评论时,是否支持粘贴内容进行评论;7.是否有评论人数限制;8.是否可以多次评论/删除评论;9.评论内容是否有长度限制;10.朋友圈是否可以看到共同好友的评论;11.是否可以评论刚删除的朋友圈;12.是否可以评论图片/视频/纯文字的动态;13.朋友圈限制仅自己可见,是否可以评论;14.朋友圈设置三天后不可见,是否可以评论;15.朋友圈主页中,是否可以看到评论信息;16.是否可以评论1天/7天/30天前/1年前/半年前朋友圈;17.是否可以评论自己发送的朋友圈;18.是否可以评论刚加好友的朋友圈;19.是否可以评论账号异常的朋友圈动态;20.是否有提示本人收到被朋友评论的信息提示;21.陌生人可见10条动态的朋友圈是否可以评论;三、性能测试1.点赞完成后,点赞的头像显示速度;2.网速对点赞是否有影响;3.能否及时刷新点赞人数;4.能否及时刷新评论人数;5.网速对评论是否有影响;四、界面测试1.界面与UI设计的效果图是否一致;2.图片位置显示是否正确;3.下拉朋友圈是否刷新;4.是否是中文简体;5.是否有错别字;五、易用性测试1.操作是否简单;2.是否适合于不同年龄段人使用;六、兼容性测试1.不同操作系统是否好用;2.不同微信版本;3.不同手机型号;七、安全测试1.朋友圈内容涉嫌不良信息,是否判断为异常;2.非好友,且对陌生人不可见则不可以看到朋友圈;八、弱网测试1.2g网络点赞需要多长时间/是否可以点赞/是否可以评论;2.3g网络点赞需要多长时间/是否可以点赞/是否可以评论;3.4g网络点赞需要多长时间/是否可以点赞/是否可以评论;4.5g网络点赞需要多长时间/是否可以点赞/是否可以评论;5.公共网络点赞需要多长时间/是否可以点赞/是否可以评论;本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-11点击量:325
软件测试基础理论知识有哪些?一、、软件测试概述1、软件测试的IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。软件测试的发展趋势:①测试工作将进一步前移。软件测试不仅仅是单元测试、集成测试、系统测试和验收测试,还对需求的精确性和完整性的测试技术、对系统设计的测试技术将成为新的研究热点。②软件架构师,开发工程师,QA人员,测试工程师将进行更好的融合③测试职业将得到更充分的尊重。④设置独立的软件测试部门将成为未来软件公司的共识。⑤测试外包服务将快速增长,和软件开发外包一样,软件测试外包将成为全球化的趋势。2、软件测试工程师的素质:责任心;沟通能力;团队合作精神;耐心、细心和信心;保持怀疑的态度,有缺陷预防的意识;不断学习的能力。3、合格的测试工程师应具有的能力:一般能力:包括表达、交流、协调、管理、质量意识、软件开发过程方法、软件工程等;测试技能及方法:包括测试基本概念及方法、对测试工具的掌握、对专业测试标准的熟悉程度等;测试规划能力:包括风险分析及防范能力、测试目标及计划的制定能力等;测试执行能力:包括测试数据/脚本/用例的制定能力、测试比较及分析能力、缺陷记录及处理能力;测试分析、报告和改进能力:包括测试度量、统计技术、测试报告、过程监测及持续改进能力。4、测试工程师的职责:测试人员要了解项目需求内容,从用户的角度提出自己的测试看法;测试人员要编写合理的测试计划并与项目整体计划有机地整合在一起;测试人员要编写覆盖率高的测试用例;测试人员要认真仔细的实施测试工作,并提交测试报告以供项目参考;测试人员要进行缺陷跟踪和分析。二、、软件测试基础软件的概念软件是计算机系统中与硬件相互依存的一部分,包括程序、数据、与其相关文档的完整结合。软件=程序+数据+文档。1、软件的特点:①软件是一种逻辑体,而不是具体的物理体,因而它具有抽象性;②软件的生产与硬件不同,它没有明显的制造过程,对软件质量的控制,必须在开发方面下功夫;③在软件运行和使用期间,没有硬件那样的机械磨损和老化问题,然而它存在退化问题,必须进行多次的修改和维护;④软件的开发和运行常常受计算机系统的制约,对计算机系统有着不同程度的依赖性,为了解除这种依赖性,在软件开发过程中提出了软件移植问题。⑤软件本身是复杂的,软件的复杂性可能来自它所反映问题的复杂性,也可能来自程序逻辑结构的复杂性。⑥软件成本的昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力,它的成本比较高。2、软件的分类:按照功能划分:系统软件:如操作系统、数据库管理系统,各种驱动软件等应用软件:如Office、金山词霸、QQ等按照技术结构划分:单机版本:如Office,画图工具等C/S结构软件:如QQ、MSN等B/S结构软件:如新浪、搜狐、google等按照用户划分:产品软件:Office、财务处理软件、金山毒霸等项目软件:如为企业定制的OA系统等按照开发规模划分:类别参与人数开发时间小型10人以下1-4个月中型10-100人1年以下大型100人以上1年3、软件测试的概念:软件测试就是为了发现错误而执行程序的过程(狭义观点)。使用人工或自动的手段,来运行或测试软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。(标准定义IEEE)软件测试就是为了证明程序有错,而不是证明程序无错误(辨证观点)。测试被定义为“对软件系统中潜在的各种风险进行评估的活动”。(风险观点)软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,即软件测试V&V。(标准观点)要完整理解软件测试,就要从不同方面去审视软件测试,概括起来,软件测试就是贯穿整个软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件的缺陷。4、软件测试的对象:①源程序/目标代码②各开发阶段的文档(需求规格说明、概要设计说明、详细设计说明及其它相关文档)5、软件测试的目的:从用户角度看的目的:通过软件测试发现隐藏的错误和缺陷,考虑是否可以接受该产品。从开发者角度看的目的:表明软件产品不存在错误,验证软件实现了所有用户的要求。从测试人员角度看的目的:发现错误,预测错误,提供软件可靠性错误,对软件做出评价。①帮助开发人员、测试工程师发现问题、分析问题。②减少软件的缺陷数目或者降低软件缺陷的密度。③提高软件的可靠性④评估软件的性能指标。⑤增加用户对软件的信心。⑥测试的最终目的是尽快尽早地发现在软件中的缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。6、软件测试的原则:所有测试的都应追溯到用户需求。应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。由于软件的复杂性和抽象性,在软件生命周期各个阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段的工作,而应当把它贯穿到软件开发的各个阶段中。在软件开发的需求和设计阶段就应开始测试工作,编写相应的测试文档。完全测试是不可能的,测试需要终止。想要进行完全的测试,在有限的时间和资源条件下,找出所有的软件缺陷和错误使软件趋于完美是不可能的主要有三个原因:①输入量太大;②输出结果太多;③路径组合太多。测试无法显示软件潜在的缺陷:进行测试是可以查找并报告发现的软件缺陷和错误,但不能保证软件缺陷和错误全部找到。充分注意集试中群集现象(二八定理):经验表明,在所测试程序段中,若发现的错误数目多,则残存的错误数目也较多。缺陷的二八定理指的是,一般情况下,80%软件缺陷出现在20%的功能区域,在测试过程中,投入主要的人力和精力重点测试这20%的功能区域。开发人员应避免检查自己的程序:基于心理因素,揭露自己程序中的问题总不是一件愉快的事,不愿否认自己的工作;由于思维定势,人们难于发现自己的错误。因此为达到测试的目的,应由客观、公正、严格的独立的测试部门或独立的第三方测试机构进行测试。尽量避免测试的随意性:应从工程的角度理解测试,它是有组织、有计划、有步骤的活动。7、软件测试误区:误区一:如果发布出去的软件有质量问题,都是软件测试人员的错。误区二:软件测试技术要求不高,至少比编程容易多了。误区三:有时间就多测试一些,来不及就少测试一些。误区四:软件测试是测试人员的事,与开发人员无关。误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-10点击量:307
作为一个资深测试开发工程师,同时以三年面试官的经验,感觉现在测试岗位供求关系严重失衡,同时也为一些测试工程师,测试开发工程师而着急,所以写了这篇文章,希望能给相关人员一些帮助,来阐述一下存在的现状。一、功能测试关注点比较窄不管我们测试的是web,app还是m端,或是如微软C/S架构的软件,还是如银行,国企等专项的产品,功能测试是基础。工作上一年半载的,就能了解相关的测试流程,如需求分析,测试用例编写,用例评审,提测试验收,功能测试,Bug回归以及上线和线上回归。但是很多人员比较关注自己的需求,而不是整体项目或是这个需求在整体项目中的作用,在大型项目或是与多部门合作的时候就手足无措。在一个新项目的测试的时候,如app,仅仅考虑到App本身,而对接口的传递,服务的测试,以及后端数据的校验不去关注。在测试工具的使用上,局限于公司提供的工具,仅仅会使用就满足了,而不去了解为什么要这么用?还有没有其他相关的工具?再者是就是沉迷于自己公司的产品,如微软的产品测试方法与流程可能和其他互联网公司不一样,也不去了解大部分企业是怎么测试的,深信自己公司的测试方案比较牛。除非你想一直在公司干下去,否则你就要了解一下行业现状,现在没有公司愿意花大量的时间来培训员工,招你来就是让干活的。你以往的工作经历再厉害,企业如果用不上也不会要你的。离开现在的平台,你还有什么,这个才是最重要的。二、自动化测试没有方向在最近一年多的时间,大多数做测试相关的同学都意识到了如果没有代码经验,测试工作也达到了瓶颈。所以都会去学习相关的自动化测试,但是往往不得法。一者通过参加培训班来学习,参加培训班的时候由于不了解行业发展现状,学习一些过时的技术或是方法,一至实际工作中就变得无所事从。如学习QTP,Loadrunner等自动化测试软件,发现社会上使用不多;学习通过Excel来组织测试数据,用python或是java来编写自动化测试用例,执行起来效率非常低;编写自动化测试用例的时候,没有整体考虑,后期执行用例时一个个执行,没有执行结果汇总,没有错误记录等问题层出不穷。由于自己公司业务的限制,缺乏尝试和创新,要么只了解公司现有的框架,要么就是在公司现在的框架上写用例而不去了解整体框架的工作原理。当面试的时候问到自己的自动化测试用例的优缺点,是否了解过业界其他相关的框架或是开发模式的时候,两眼一抹黑。这些情况在现在的面试过程中很常见,而如果你是这种水平的话,不能说明你会自动化测试,当然也很难面试通过。三、企业空缺大,求职者达标少目前企业对测试人员也要求越来越高,仅仅响应需求的功能测试人员基本饱和或是留给了校招生。通过社招渠道找工作的人,都要求有一定的自动化或是代码经验,能解决工作过程中遇到的问题;或是编码能力较强,能参与公司相关测试项目的开发工作。薪资待遇基本上是15—25K,然后是一大堆岗位要求,要求会上一串很唬人的语言或是技术。应该有不少人员在面试过程中会被要求写不少编程题,如单链表逆序,二叉树遍历,日志过滤等。这一方面是看你的编码能力如何,另一方面也能从编码习惯来看你有没有参加过大型的项目开发。再者还有给你一个具体的问题,让你来给出解决方案,如:现在有一个全新的App,如果让你负责测试,你可能会实施哪些测试方案?而不像以前那样做个逻辑题,或是写个测试用例什么的了,这个变化相信大家一定深有感触。在这几年的面试过程中,公司一直在招聘T3,T4级别的测试人员,通过简历筛选进入面试的人,差不多三四十个才能有一两个达到要求。更多的人员是在公司完成部分代码工作,模仿和重复的成份居多,同时不关注当前业界测试技术的发展。四、资深测试开发,测试架构师独孤求败测试行业不断发展,公司的测试部门也需要一些大牛来进行相关的工作。一是由于行业原因,代码能力强,有架构经验的人员一般都在开发部门;二是要求高,资源测试开发工程师不仅要精通测试相关的技能,还要会前端设计,服务器配置等等,几乎是全栈工程师;而做程序的人员一般精通一点或是几点的较多,从前到后全都能上的越来越少。但是企业想快速发展自己的业务的时候,必须有一个强大的测试团队来保证质量,通过一系列的CI,CD以及其他的手段来促进项目的实施与投放。这就要求相关工程师要从多方面来考虑问题,不仅要考虑项目的实施成本,还要考虑参考与的测试,开发,产品甚至用户等人员,同时要与公司发展的前景及方向相切合,并能很好地为之服务。同时这类人才公司都比较看中,每年的找工作季节也就那么几个人会进入人才市场流通,而且很快就能找到工作,企业的通常定位都在30K以上。这也是我们每个测试人员的努力方向,只有你具备了相应的实力,才有资格向企业要求你期望的薪资。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-10点击量:140
对于软件测试来说,怎么样才算测够了?如何评价测试的有效性?那么多测试用例,以后怎么删?在软件测试中会遇到非常多的问题,下面分享了几个总结出的难题以及相关看法,希望对同学们有所启发。一、测试充分度(TestSufficiency)如何回答“测够了吗“(包括测新和测旧)。代码覆盖率是衡量测试充分性的起点,但远远不是终点。要回答”测够了吗“,至少还要考虑是否测了所有的场景、所有的状态、所有的状态转移路径、所有的事件序列、所有可能的配置、所有可能的数据等等等等。即便如此,我们可能还是无法100%确信我们已经测够了。可能我们最终只能做到非常趋近于测够了。二、测试有效性(TestEffectiveness)如何评价一组测试用例的发现bug的能力。有效性(发现bug的能力)和充分性(测够了没有)是两个正交的属性。评价测试用例有效性可以通过正向的分析进行,例如,分析测试用例是否校验了所有在测试过程中SUT落库的数据。更具有通用性的做法是变异测试(MutationTesting),即在被测代码里注入不同的“人造bug”,统计多少能被测试用例感知到。目前变异测试我们已经有工程化规模化的落地了,后续的工作重点有:1)如何防止钝化(或曰“杀虫剂效应”),2)不但对被测代码进行注入,还能对配置、数据等进行更全面的注入。三、测试用例瘦身以前广告行业有句话:我知道广告费有一半是浪费掉的,但不知道哪一半是浪费掉的。软件测试也有类似的困惑:那么多用例,要花那么多时间去跑,我知道这里面有很多时间是浪费掉的,但我不知道哪些时间是浪费掉的。浪费的形式包括:冗余步骤:有些是浪费在一些重复的步骤上,每个用例都要去做一些类似的数据准备,每个用例都要去执行一些中间过程(这样才能推进到下一步)。等价类:一个支付场景,我要不要在所有的国家、所有的币种、所有的商户、所有的支付渠道和卡组的排列组合都测一遍?这么测,代价太高。不这么测,我担心可能某个特定商户在某个特定国家有个特定逻辑我就漏掉了。对于具体的业务,还可以进行人肉分析。有没有更通用的、而且比较完备和可靠的等价类分析的技术手段?我有N个用例,我猜这N个用例里面可能存在M个用例,即使删掉这M个用例,剩下的N-M个用例的效果和之前N个用例的效果一样。如何识别是否存在这样的M个用例、如果存在的话是哪M个。四、测试分层很多团队都会纠结到底要不要做全链路回归、做到什么程度。这个问题的核心点就是:有没有可能、有没有一种做法,只要把系统间的边界约定的足够好足够完整,就可以做到在改动一个系统的代码后,不需要和上下游系统进行集成测试,只要按照边界约定验证好自己的代码就可以确保没有任何regression了。五、减少分析遗漏分析遗漏是很多故障的原因。开发做系分的时候,有一个cornercase没考虑到、没有处理。测试做测分的时候,忘记考虑某个特殊场景了。兼容性评估,评估下来没有兼容性问题的,但结果是有的。而且很多时候,分析遗漏属于unknownunknowns,我压根就不知道我不知道。有没有一套方法和技术,可以减少分析遗漏,可以把unknownunknowns转化为knowns?六、用例自动生成FuzzTest、ModelBasedTest、录制回放、TrafficBifurcation(引流)等都是自动生成用例的手段。有些已经比较成熟(例如单系统的录制回放、引流),有些多个团队都在探索(例如Fuzz),有些则一直没有大规模的成功实践(例如MBT)。我们也有过探索如何从PRD里通过NLP来生成用例。用例自动生成中,有时候难点还不是生成teststeps,难度反而是怎么生成testoracle。Anyway,测试用例自动生成是一个非常大的领域,这个方向上未来可以做的还非常多。七、问题自动排查包括线上和线下。对于比较初级的问题,自动排查方案往往有两个局限性。首先,方案不够通用,多多少少比较定制化。其次,比较依赖人工积累规则(说的好听点叫“专家经验”),主要是通过记录和重复人肉排查的步骤来实现。然而,每个问题都不完全一样,问题稍微一变,之前的排查步骤可能就不work了。现在有一些技术,比如调用链路的自动比对,对排查问题和缺陷自动定位很有帮助。八、缺陷自动修复阿里的Precfix、Facebook的SapFix等是目前比较知名的一些工业界的做法。但总的来说,现有的技术方案,都有这样那样的局限性和不足,这个领域还在相对早期阶段,后面的路还很长。九、测试数据准备测试用例的一个重要设计原则是:测试用例之间不应该有依赖关系,一个测试用例的执行结果不应该受到其他测试用例的执行结果(包括是否执行)的影响。基于这个原则,传统的最佳时间是确保每个测试用例都应该是自给自足的:一个用例需要触发的后台处理流程应该由这个用例自己来触发,一个测试用例需要的测试数据应该自己来准备,等等。但如果每个用例所需要用到的测试数据都是自己来从头准备的,执行效率就比较低。怎么既不违背“测试用例之间不应该有依赖关系”的大原则,又能减少测试数据的准备时间?我设想的是一种更加完备的数据银行。每个测试用例执行完后,都会把它自己产生的数据交给数据银行,例如,一个在某个特定国家的已经通过KYC、已经绑了一张卡的会员,一笔已经支付成功的交易,一个已经完成入驻签约流程的商户。下一个测试用例开始的时候,会先问一下数据银行:“我要一个满足这样这样条件的商户,你有没有”。上个用例跑出来的那个商户正好符合条件,数据银行就会把商户“借”给这个用例用。而且一旦借出,直到被归还前,这个商户不会被借给其他用例。经过一段时间的运行,数据银行能够学习到每个测试用例需要什么样的数据、以及会产生什么样的数据。这个知识是通过学习得到的,不需要人肉去添加描述,所以也能适用于老系统的存量用例。有了这个知识,数据银行可以实现两个优化:一次测试执行批次开始后,数据银行会看到这个批次中后面那些用例需要什么样的数据,提前先准备起来。这样,等执行到那些用例的时候,数据银行里就已经有符合条件的数据准备好了。根据每个测试用例需要什么样的数据、以及会产生什么样的数据,数据银行可以合理的编排测试用例的执行先后次序,最大化的实现测试数据的复用,减少测试数据的量和准备开销。测试银行把测试数据“借”给用例的时候,可以有多种不同的模式。可以是独占(exclusive)的,也可以是共享的。共享的也可以指定共享读、共享写、还是都只读不能写(例如,一个商户可以被多个用例用来测试下单支付结算场景,但这些用例都不可以去修改这个商户本身,例如重新签约)。如果把开关、定时任务等resource也作为一种广义的测试数据由数据银行来管理,能实现测试用例尽可能并行执行。例如,有N个用例都需要修改一个开关值,这N个用例如果并行执行的话就会相互影响,他们相互之间应该串行执行。但N个用例中的任何一个,都可以和这N个用例之外的用例并行执行。数据银行掌握了每个用例对各种资源的使用模式的详细情况,再加上每个用例的平均运行时间等数据,就可以最优化、最准确的对一批测试用例进行编排,做到可以并行的都尽可能并行、不能并行的确保不并行,而且还可以在一个批次的执行过程中不断的调整余下还未执行的用例的编排。这样一个数据银行是普遍适用的,不同业务之间的差异无非是具体的业务对象和resource不一样。这些差异可以通过插件形式实现。如果有这么一个通用的数据银行[4],可以很方便的adopt,大量的中小软件团队的测试效率都可以得到明显的提高。这样的一个更加完备的数据银行的想法,我到目前为止还只是想法,一直没有机会实践。十、异常测试一个分布式系统,它的内部、内部各部分之间以及它和外部的交互都会出现各种异常:访问超时、网络连接和耗时的抖动、连接断开、DNS无法解析、磁盘/CPU/内存/连接池等资源耗尽等等。如何确保系统的行为(包括业务逻辑、以及系统自保护措施如降级熔断等)在所有的情况下都是符合预期的?今天我们的线上演练(本质上也是一种异常测试))已经做了很多了。如何把更多的问题提前到线下来发现?对于一个复杂的分布式系统来说,要遍历所有可能出现异常的地方和所有可能出现的异常,异常用例的数量是非常大的。此外,某些异常情况下,系统对外表现出来的行为应该没有变化;而另一些异常情况下,系统行为是会有变化的。对于后一类,如何给出每一个异常用例的预期结果(即testoracle),也是比较有难度的。十一、并发测试(ConcurrencyTest)并发(concurrency)可能出现在各个level:数据库层面,对同一张表、同一条记录的并发读写;单系统层面,同一个进程内的多个线程之间的并发,单服务器上的多个进程之间的并发,以及单个服务的多个实例之间的并发;业务层面,对同一个业务对象(会员、单据、账户等)的并发操作,等等。传统的并发测试是基于性能测试来做的,有点靠撞大运,而且经常是即便跑出问题来了也会被忽视或者无法repro。并发测试领域,我接触过的一些成果包括Microsoft的CHESS以及阿里的谭锦发同学在探索的分布式模型检查&SST搜索算法。十二、回滚的测试安全生产三板斧宣传了多年,在阿里经济体内大家都能做到“可回滚”了。但我所观察到的是:很多时候我们有回滚的能力,但是对回滚后系统的正确性,事前保障的手段还不够。我们更多的是靠灰度和监控等事后手段来确保回滚不会回滚出问题来。事实上,过去两年,我自己已经亲身经历过好几次回滚导致的线上故障。回滚测试的难度在于:需要覆盖的可能性非常多,一个发布可能在任何一个点上回滚。回滚可能还会引发兼容性问题:新代码生成的数据,在新代码被回滚后,老代码是否还能正确的处理这些数据。十三、兼容性测试代码和数据的兼容性问题有很多形式。例如,如何确保新代码能够正确的处理所有的老数据?有时候,老数据是几个月前的老代码产生的,例如,一个正向支付单据可能会到几个月以后才发生退款退票。有时候,老数据可能就是几分钟前产生的:用户的一个操作,背后的流程执行到中间的时候代码被升级了。验证这些场景下的兼容性的难度在于:需要验证的可能性太多了。今天的退款请求对应的正向单据,可能是过去很多个版本的代码产生的。一个业务流程执行到中间具体什么地方代码被升级了,可能性也非常多。异常测试、并发测试、回滚测试、兼容性测试,这些问题的一个共同点是:我们知道这些问题是可能存在的,但要测的话,需要测的可能性又太多。十四、Mock测试的有效性也依赖于mock的正确性。既然是mock,它和被mock的服务(包括内部的、二方的和三方的)的行为就多多少少会有差异。这种差异就有可能导致bug被漏过。前人也为此想出了“流量比对”等办法。我曾经有另一个想法:“一鸭三吃”。也就是说,通过bundle和compilerinstruction等方法,让同一套源代码支持三种不同的编译构建模式:正常模式:这就是和今天的编译构建是一样的,产出的构建物是拿去生产环境跑的。Mock模式:这个模式编译出来的就是该服务的一个mock,但由于是同一套代码编译出来的,最大可能的保留了原来的业务逻辑,做到最大限度的仿真。而且由于是同一套代码编译出来的,后期也不会有“脱钩”的担心,应用代码里的业务逻辑变化都能及时反映在mock里,大大减少mock的人肉维护工作量。压测模式:这个模式编译出来的也是一个mock,但这个mock是用来给(上游)做性能测试用的。过去在线下的性能压测中经常遇到的情况是:我们想要压的系统还没到瓶颈,这个系统的下游系统(往往是一个测试环境)反而先到瓶颈了。压测模式编译出来的这个mock牺牲了一部分的业务逻辑仿真,但能确保这个mock本身性能非常好,不会成为性能瓶颈(但对lantency仍然是仿真的)。这个“一鸭三吃”的想法sofar还停留在想法层面,我还一直没有机会实践一下。十五、静态代码分析有一些类型的问题,要用通常意义上的软件测试来发现,难度和成本很高,但反而是通过静态代码分析来发现反而比较容易。例如,ThreadLocal变量忘记清除,会导致内存溢出、会导致关键信息在不同的不同的上游请求之间串错。另一个例子是NullPointerException。一种做法是通过fuzztesting、异常测试等手段来暴露代码里的NPE缺陷,以及可以在执行测试回归的时候观察log里面的NPE。但我们也可以通过静态代码分析,更早的就发现代码里面可能存在的NPE。有一些并发问题也可以通过静态代码分析来早期准确发现。总之,我们希望尽可能多的通过静态代码分析来防住问题。十六、形式化验证(FormalVerificaition)除了在协议、芯片、关键算法等上面的运用以外,形式化方法在更偏业务的层面是否有运用的价值和可能?十七、防错设计(MistakeProof)严格来说,防错设计并不是softwaretesting范畴内的。但做测试做久了就发现,有很多bug、很多故障,如果设计的更好一点,就压根不会发生(因此也就谈不上需要测试了)。去年我总结了一下支付系统的防错设计,后面希望能看到在各类软件系统形态下的防错设计原则都能总结出来,另外,最好还能有一些技术化的手段来帮助更好的落地这些防错设计原则,这个难度可能比总结设计原则的难度更高。十八、可测性(Testability)虽然目前大部分开发和QA同学都知道“可测性”这么件事情,但对可测性把握的还不够体系化,很多同学觉得可测性就是开接口、加testhook。或者,还没有很好的理解可测性这个东西落到自己这个领域(例如支付系统、公有云、ERP)意味着什么。在需求和系统设计分析阶段还不能做到很有效很有体系的从可测性角度提出要求,往往要求比较滞后。我希望可测性设计可以总结出一系列像程序设计的DRY、KISS、CompositionOverInheritance、SingleResponsibility,RuleofThree等设计原则,总结出一系列的反模式,甚至出现像《设计模式》那样的一本专门的著作。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-06点击量:217
软件测试面试必问之项目的组成一、项目的基本组成先了解一下软件项目中所涉及到的一些重要角色和关键词,分别是项目,项目经理,需求,用户,开发人员,测试人员和产品人员。项目:代表软件研发的项目,包括了从前期项目预研,立项,组建项目团队,设计开发软件,测试调试,交付验收,以及软件运营等各项具体的工作。项目经理:软件项目的总负责人。项目经理既需要广泛的计算机知识,又需要项目管理技能,能够对项目的成本,人力,进度,质量,风向,安全等进行准确的分析和管理。从而使项目按照计划顺利完成。需求:用户需求,有了需求,才有项目,开发人员根据需求开发对应的产品。用户:这里一般指的是提出需求的用户,同时软件验收的主要人员。开发人员:软件项目组中负责研发的技术人员。测试人员:软件项目组中负责测试的人员。产品人员:负责产品的设计,需求分析整理等工作。二、评审需求文档1、需求文档是一个文字描述性的文档,开发和测试在阅读的时候可能会有不同的理解,所以需要产品,测试,开发三方人员进行评审。2、评审的方式一般是:产品经理对着需求文档的内容一一讲解,然后解释其中的意思。测试,开发针对一些自己理解不一致的需求进行提问,提出自己的开发和建议。产品人员最终决定。最后形成一个标准的,统一的需求文档三、如何评审需求文档正确性:对照原始的需求,检查产品人员制定的文档是否偏离了最原始的用户需求。明确性:检查需求文档中是否包含一些含糊其辞的词汇,比如过多,过少,适量,是否。检查用语是否清晰,无歧义。完整性:对照原始的需求文档,检查产品人员制定的需求文档是否完全覆盖用户所有的需求点。限制性:每个需求中是否清晰描述了这个软件能做什么,不能做什么,什么能输入,什么不能输入。优先级:需求文档中哪些文档比较重要,哪些不重要,要有优先级。一致性:检查需求文档中的内容是否前后一致,确保不冲突,不矛盾。四、常见问题1、测试工作是从什么时候开始的?参考回答:我之前工作的单位,在做测试工作的时候,我们一般在拿到需求文档的时候就开始了。2、需求评审的目的是什么?参考回答:我觉得需求评审的目的主要是消除歧义,完善细节,最后达成共识,如果不进行评审,就意味着开发人员和测试人员可能会对需求文档的理解存在偏差,最终可能导致产品的质量不符合需求文档要求。3、你是如何评审需求文档的?参考回答:我们公司之前评审需求的时候,主要是从6个方面进行的...(参考上文)。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-04点击量:271
软件测试之接口自动化面试题一、请问你是如何做接口测试的?大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。具体来说,接口测试流程分成以下九步:第一步:分析出测试需求,并请开发提供接口说明文档;第二步:从接口说明文档中整理出接口测试用例,里面要包括详细的入参(正常情况,异常情况包括输入参数个数,类型,可选/必选,考虑参数有互斥或关联的情况)和出参数据(符合接口文档需求)以及明确的格式和检查点;第三步:与开发一起对接口测试用例进行评审;第四步:结合开发库,准备接口测试用例中的入参数据和出参数据,并整理成Excel格式的文件;第五步:结合接口测试用例文档和Excel格式的数据文档,编写接口自动化测试的业务逻辑代码;第六步:开始执行接口自动化测试用例;第七步:执行如有bug,提交至缺陷管理平台;第八步:开发修改完成后,回归bug,跟踪状态;第九步:完成后进行自动化持续集成;二、接口测试执行中需要比对数据库吗?接口的返回关键字段和字段值是需要校验的,不然接口测试就没有意义了。一般有两种方式:1)数据库预置数据,接口校验返回;2)接口调用,比对数据库查询结果。三、接口测试质量评估标准是什么?一般来说,从以下八个方面评估:1)业务功能覆盖是否完整;2)业务规则覆盖是否完整;3)参数验证是否达到要求(边界、业务规则);4)接口异常场景覆盖是否完整;5)接口覆盖率是否达到要求;6)代码覆盖率是否达到要求;7)性能指标是否满足要求;8)安全指标是否满足要求;四、接口产生的垃圾数据如何清理造数据和数据清理,需用Python连数据库了,做增删改查的操作测试用例前置操作。setUp做数据准备后置操作;tearDown做数据清理;本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-03点击量:207
软件是计算机系统中与硬件相互依存的一部分,包括程序、数据、与其相关文档的完整结合。软件=程序+数据+文档。一、软件的特点:①软件是一种逻辑体,而不是具体的物理体,因而它具有抽象性;②软件的生产与硬件不同,它没有明显的制造过程,对软件质量的控制,必须在开发方面下功夫;③在软件运行和使用期间,没有硬件那样的机械磨损和老化问题,然而它存在退化问题,必须进行多次的修改和维护;④软件的开发和运行常常受计算机系统的制约,对计算机系统有着不同程度的依赖性,为了解除这种依赖性,在软件开发过程中提出了软件移植问题。⑤软件本身是复杂的,软件的复杂性可能来自它所反映问题的复杂性,也可能来自程序逻辑结构的复杂性。⑥软件成本的昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力,它的成本比较高。二、软件的分类:1、按照功能划分:系统软件:如操作系统、数据库管理系统,各种驱动软件等应用软件:如Office、金山词霸、QQ等2、按照技术结构划分:单机版本:如Office,画图工具等C/S结构软件:如QQ、MSN等B/S结构软件:如新浪、搜狐、google等3、按照用户划分:产品软件:Office、财务处理软件、金山毒霸等项目软件:如为企业定制的OA系统等4、按照开发规模划分:类别参与人数开发时间小型10人以下1-4个月中型10-100人1年以下大型100人以上1年三、软件测试的概念:软件测试就是为了发现错误而执行程序的过程(狭义观点)。使用人工或自动的手段,来运行或测试软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。(标准定义IEEE)软件测试就是为了证明程序有错,而不是证明程序无错误(辨证观点)。测试被定义为“对软件系统中潜在的各种风险进行评估的活动”。(风险观点)软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,即软件测试V&V。(标准观点)要完整理解软件测试,就要从不同方面去审视软件测试,概括起来,软件测试就是贯穿整个软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件的缺陷。四、软件测试的对象:①源程序/目标代码②各开发阶段的文档(需求规格说明、概要设计说明、详细设计说明及其它相关文档)五、软件测试的目的:从用户角度看的目的:通过软件测试发现隐藏的错误和缺陷,考虑是否可以接受该产品。从开发者角度看的目的:表明软件产品不存在错误,验证软件实现了所有用户的要求。从测试人员角度看的目的:发现错误,预测错误,提供软件可靠性错误,对软件做出评价。①帮助开发人员、测试工程师发现问题、分析问题。②减少软件的缺陷数目或者降低软件缺陷的密度。③提高软件的可靠性④评估软件的性能指标。⑤增加用户对软件的信心。⑥测试的最终目的是尽快尽早地发现在软件中的缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。六、软件测试的原则:①所有测试的都应追溯到用户需求。②应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。③由于软件的复杂性和抽象性,在软件生命周期各个阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段的工作,而应当把它贯穿到软件开发的各个阶段中。在软件开发的需求和设计阶段就应开始测试工作,编写相应的测试文档。④完全测试是不可能的,测试需要终止。⑤想要进行完全的测试,在有限的时间和资源条件下,找出所有的软件缺陷和错误使软件趋于完美是不可能的主要有三个原因:①输入量太大;②输出结果太多;③路径组合太多。⑥测试无法显示软件潜在的缺陷:进行测试是可以查找并报告发现的软件缺陷和错误,但不能保证软件缺陷和错误全部找到。⑦充分注意集试中群集现象(二八定理):经验表明,在所测试程序段中,若发现的错误数目多,则残存的错误数目也较多。缺陷的二八定理指的是,一般情况下,80%软件缺陷出现在20%的功能区域,在测试过程中,投入主要的人力和精力重点测试这20%的功能区域。⑧开发人员应避免检查自己的程序:基于心理因素,揭露自己程序中的问题总不是一件愉快的事,不愿否认自己的工作;由于思维定势,人们难于发现自己的错误。因此为达到测试的目的,应由客观、公正、严格的独立的测试部门或独立的第三方测试机构进行测试。⑨尽量避免测试的随意性:应从工程的角度理解测试,它是有组织、有计划、有步骤的活动。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-02点击量:208
随着当代电商行业的快速发展,网购用户数量也快速增长。在过去常常线下出现的各类促销活动也逐渐转移至线上,并且伴随着线上用户消费能力不断升级,一年一次的电商大促也已经日常化。各类购物软件为了吸引用户消费,各类促销玩法的层出不穷并且规则复杂多变,在任一个链路出现问题,都将会给商家和普通消费者带来巨大的经济损失,如何保障业务在一个快速迭代的节奏下稳定、安全的发展,对于技术质量团队来说是一个不小的挑战。基于用户体验,通过设计全面、稳定、敏捷的软件质量保障体系,提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险,是测试团队的重要任务和目标。日常通用方案软件测试的基本流程是希望通过规范化、标准化的流程,让软件测试可以变得高效,我们的日常需求一般包含:产品需求、技术改造、线上问题修复,需求复杂度通常比较低,一般都需要快速上线。日常需求测试流程一般包含需求分析、制定测试计划、设计并评审测试用例、测试执行、测试报告。但需要声明一点,测试的过程并非一成不变,固定的,它只是一种规范,一种基本要求。1、需求分析及评审需求分析是整个测试过程的基础,因为需求文档是业务验收的标准,为了避免由于理解不一致而导致的信息差,每一位项目相关人员都要参与,开发同学必须按照评审后所确定的需求详情进行开发。参与需求评审可以帮助我们了解业务相关知识、对文档中未涉及的异常逻辑和风险前置、用户体验不好的地方提前优化。这一阶段我们需要将产品需求转换为功能需求,对该需求的数据、易用性、参数、性能等方面进行确定,并配合场景分析,将可能调用的内外部模块和系统调用进行覆盖,再根据经验挖掘出隐形需求,例如部分极限、异常条件。2、策略制定参考需求文档,技术方案、视觉交互等文档,有计划的分出产品功能以及设计合理的测试用例,用例编写完成之后考虑每个功能域或阶段分别采用什么样的测试方法,可以更全面、高效的完成,例如:功能测试、兼容测试、性能测试,部分用例可以沉淀为自动化测试用例,设计用例后需要和产品、开发同学一起进行用例评审,保证用例的覆盖程度达到预期,避免因为漏测而导致线上问题。3、计划制定由于产品的复杂度越来越高,各类测试项目也逐渐多样化,测试计划的是为了让我们更好的提前应对风险,根据项目迭代计划,进行进度、测试资源的分配,进行风险评估和兜底策略的制定,同时明确测试完成后需要产出的测试资产(测试文档、测试用例、自动化工具)等。编写测试计划时,需要充满考虑实际测试阶段涉及的各类因素,包含:项目排期、测试资源、测试目标、测试标准、测试风险等。例如测试风险,一般需要包含项目开发延期、测试人员不足、测试时间不足导致用例无法全部执行、BUG无法及时修改导致无法验证、测试环境不稳定等问题。因此,一份完备的测试计划可以让我们事半功倍。4、测试执行在开发同学提测前,我们可以先准备测试环境,在冒烟测试通过后,再正式执行测试用例,记录结果并进行bug跟踪直至bug修复完成,我们每个人在测试过程中都会遇到几种类型的测试,常见的功能测试包含:单元测试、冒烟测试、接口测试、回归测试、Beta/验收测试等。非功能测试包含,性能测试、负载测试、压力测试、容量测试、安全测试、相容性测试等,必要时还可以进行交叉测试,根据需求的特性,防止测试人员工作粗心导致漏测。选择合适的方法,可以帮助我们更敏捷的完成测试任务。5、测试报告阶段在实际测试执行阶段会因为各种主观、客观原因导致需求测试结果和测试计划有所出入,在测试报告中我们需保证数据真实、全面。并且将测试中产生的问题进行分析,给出下次规避的方案,测试报告通过后需求发布上线。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-12-01点击量:263
软件测试的目的就是在已经规定好的条件下,对软件进行测试,通过测试去发现软件中程序的错误或者是BUG,这样做可以让程序员衡量软件的质量,然后对软件是否满足最初的要求或者初衷做出一个正确的判断。软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。本文由培训无忧网千锋教育专属课程顾问整理发布,希望能够对想学习软件测试培训的同学有所帮助。更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-11-30点击量:228
1.测试管理类工具——禅道。禅道是一款开源的测试管理工具,国内不少中小型的公司和研发团队都会选择使用,功能丰富,使用简单。看下面的文章可以了解更多。通过禅道,可以将测试中的用例、缺陷都进行很好的管理,尤其是对缺陷的跟踪和处理状态的变更会更加及时和高效,提升测试工作的效率。当然除了禅道外还有其他的,比如说JIRA,ALM这些商业的测试管理或者项目管理工具。版权和付费问题,这里就不说了,感兴趣可以自己查找相关资料。2.基于UI的自动化测试工具——SeleniumIDE。SeleniumIDE是一个基于Firefox浏览器的插件,能够通过记录在浏览器的操作事件和操作行为,并将这些内容转化和生成代码,通过回放的方式实现自动化测试。当然了,除了SeleniumIDE,还有类似UFT(以前叫QTP)等工具也可以实现UI层面的自动化测试。3.基于API文档的接口测试——postmanPostman是一款在接口测试方面非常简单实用的工具,基本可以满足所有要求的接口测试。当然可能有小伙伴会质疑,接口测试还是黑盒测试么?当然是,因为按照黑盒测试的定义,接口测试过程中并不检查和考察实际代码的运行,只需要确定好请求数据(输入数据)和响应数据(程序实际运行结果)即可,所以从这个角度来说,接口测试也属于是黑盒测试。而基于API的接口测试,使用postman就能搞定。本文由培训无忧网千锋教育专属课程顾问整理发布,更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-11-30点击量:258
从概念上说呢,冒烟测试就是:冒烟测试是在软件开发过程中的一种针对软件版本包的快速基本功能验证策略,是对软件基本功能进行确认验证的手段,并非对软件版本包的深入测试。所以冒烟测试的主要目的就是看这个软件是否具备可测性,也叫做可测性测试。按照这个概念,冒烟测试进行的时候就方便了很多:1、在项目开始设计研发的(哪怕是小版本更新)时候,参与需求分析,获取测试需求,并且制定测试计划,将冒烟测试纳入到计划中。2、设计和编写测试用例。这个测试用例的设计是针对项目的所有功能而言的。3、冒烟测试前的单元测试、集成测试该进行就进行,毕竟冒烟测试针对的是完整的软件版本。4、搭建测试环境,为完整测试过程做准备。不过一般的项目团队甚至于连单独的测试环境也不搭建,就直接使用开发团队的开发环境。5、按照预先设计的测试用例进行执行。这里需要注意的就是并不执行所有的测试用例,而是挑选软件主干功能的正向测试用例进行执行。6、在执行的过程中,如果有测试用例不能通过,并且严重影响系统流程和核心功能的运行,则认为该版本不具备正式系统测试。也就是我们所说的冒烟测试不通过。本文由培训无忧网千锋教育专属课程顾问整理发布,更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...
2021-11-30点击量:251
1、发现缺陷。测试人员自己要慎重的确认。尽你最大的能力不要出现提交了一个不是缺陷的东西。那样只会让本就觉得测试麻烦的开发人员和其他人员觉得你是在没事儿找事儿!咱们测试绝对不做那个搞事情的!2、提交缺陷。测试人员按照规则提交(注意严重程度、优先级的设定;测试用语的准确性;不要激怒开发人员)。这个呢是一项技术活了,看上去虽然就是写个缺陷报告,但是要严格按照团队定好规则设定严重程度、修复优先级,不懂的就问问老人(如果就你一个,就问问技术经理),别太瞎搞了,减持自己看发的同时,也听听别人的意见,这叫广开言路(可能身份有点不恰当,但是意思是一个意思)。3、确认缺陷。由专门人员(QA、产品、测试经理/主管、开发经理/主管)进行缺陷的确认。他们会审查我们测试人员提的bug是不是一个bug,如果不是就会给我们打回了,不要让这种情况出现!4、分配缺陷。上个环节的专人分配给不同的人员(开发人员、DBA、运维、产品经理)。分配缺陷的时候会对缺陷的类型、优先级重新设定,测试人员争取不要做了错误的缺陷判定。5、处理缺陷。就是分配出去的缺陷有专人去处理,不同的人要对缺陷做不同的处理方式。比如开发人员,他们可以:1)修复。Bug改完了。2)需求如此。测试人员就要和开发确认需求,是在不行还得找找产品确认。3)延期。本次版本不改,如果是这样,就要找领导确认;如果是第三方插件的问题,那就要联系供货方!4)解决不了。技术本身的缺陷,比如面部识别,Android系统的内存泄露……开发真解决不了!5)不改缺陷。99.999%的开发不会出现,如果真的要问就说没遇到过。6、验证缺陷。测试人员专门检查经过修复的缺陷。1)回归测试。一般局部的重复执行之前出bug的用例;重新设计另一个同类型的测试用例测试和检验。2)有无修复成功。3)有无新bug产生。7、关闭缺陷。经过验证后,没有问题的就关闭。本文由培训无忧网千锋教育专属课程顾问整理发布,更多软件测试培训课程欢迎关注培训无忧网软件测试培训培训频道或添加老师微信:15033336050...