精华内容
下载资源
问答
  • 软件测试框架与应用方法

    千次阅读 2021-03-22 15:08:15
    随着互联网的不断发展,越来越多的程序员都在学习软件测试技术,而今天我们就一起来了解一下,软件测试框架与应用方法。


    随着互联网的不断发展,越来越多的程序员都在学习软件测试技术,而今天我们就一起来了解一下,软件测试框架与应用方法。

    测试框架

    单体架构时,团队的测试主要依赖基于Selenium的集成测试和后检查测试,基于Rails的单元测试略有欠缺。转到微服务架构后,为了满足新的需求,测试框架也进行了相应调整。测试金字塔可以很好地帮助我们区分不同层次测试的关注点。金字塔从下层到顶层依次为单元测试、集成测试、端到端测试和性能测试。其中,越靠近金字塔的底端,一般而言测试速度越快,反馈周期也越短,测试发现问题后更容易定位受影响的功能;越是靠近金字塔的顶端,测试覆盖的范围越大,但需要花费更长时间完成测试,经过测试后功能的正确性也更有保证。

    单元测试

    “单元”是软件的小可测试部件。单元测试就是软件开发中对小单元进行正确性检验的测试,它是所有测试中底层的一类测试,由开发人员在开发代码时同步编写,是一个也是重要的一个环节。

    团队后端开发使用的语言是Go,Go语言自带有一个轻量级的测试框架testing,可使用自带的gotest命令进行单元测试。同时,我们使用了TDD,即在开发功能代码之前,先编写单元测试用例,以测试代码来确定需要编写的产品代码,提高代码质量。

    Mock实践

    单元测试的编写往往有独立性的要求,很多时候因为业务逻辑复杂,代码逻辑也随之变的复杂,掺杂了很多其他组件,导致在编写单元测试用例时存在比较复杂的依赖项,如数据库环境、网络环境等,这些增加了单元测试的复杂度和工作量。

    Mock对象就是为解决上述问题而诞生的,mock对象能够模拟实际依赖对象的功能,同时又省去了复杂的依赖准备工作。当前,在核心业务团队Go代码库中,存在2种mock实践。一种是和mockery结合使用的Testify/mock,另一种是和mockgen结合使用的Go/gomock。

    Testify/Mock

    Testify包中一个优秀的功能就是它的mock功能,在进行单元测试时,代码中往往有大量的方法和函数需要模拟,此时vertra/mockery就成为了我们的得力助手,mockery的二进制文件可以找到任何在Go中定义的interfaces的名字,然后自动生成模拟对象到mocks文件夹下对应的文件中。

    Golang/mock

    Gomock是Google开源的golang测试框架,gomock通过mockgen命令生成包含mock对象的.go文件,它可以根据给定的接口自动生成代码。这里给定的接口有两种方式:接口文件和实现文件。


    如果你也想在2021人才争夺战中

    夺得一席之地

    进入高薪有前景的行业

    这都是可行的


    最后:自动化测试(视频、面试)赠送一波

    我推荐一个群吧!测试员~~来吧,313782132(Q群里有技术大牛一起交流分享,测试学习资源的价值取决于你的行动,莫做“收藏家”)获取更多大厂技术、面试资料


    如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以关注微信公众号:【伤心的辣条】,获取软件测试工程师大厂面试资料!

    最后:

    凡事要趁早,特别是技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。

    如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

    推荐好文:

    包装成1年工作经验的测试工程师,我给他的面试前的建议如下

    自动化测试到底要学什么?

    为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事

    自动化测试和手动测试哪个更高级?

    新手必看:怎么写一个合格的测试用例?

    python登录接口测试问题记录与解决 ( 干 货 )

    展开全文
  • 软件测试技术路线怎么走

    千次阅读 2017-05-19 10:50:34
    软件测试工程师发展路线(这里只说的是纯技术路线,不包括测试管理路线)分为技术路线中级域、技术路线高级域、技术路线专家域。

           软件测试工程师发展路线(这里只说的是纯技术路线,不包括测试管理路线)分为技术路线中级域、技术路线高级域、技术路线专家域。

    一、中级域技术路线

           技术路线中级域技术路线,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师;前三者适用于通用软件测试领域,认证测试工程师乃嵌入式测试领域职位,至少目前仅出现在嵌入式领域。

           自动化测试工程师,定位在功能测试范畴,指通常所说的依靠自动化测试工具进行软件黑盒测试的工程师。从大环境讲,自动化测试是软件测试执行阶段的必然趋势,社会对于软件测试的认可度以及对自动化测试人才的需求必将日益增加。

           白盒测试工程师,定位于在软件测试周期的单元测试阶段对软件进行的代码级测试的人,包括代码走读、代码功能与逻辑测试、代码内存泄漏检查、代码运行效率检查、代码测试覆盖率分析等。如果说,自动化测试只是依靠脚本语言完成测试脚本编写与调试的过程(因为自动化测试工程师的工作重点不在编写脚本),对于自动化测试工程师的技术要求要相对偏低的话,那么白盒测试工程师就要对大型程序开发语言的完全掌握,因此其技术要求相对偏高!

           性能测试工程师,即在系统测试阶段、功能测试后对软件系统性能指标进行采集分析和运行效率检测的人。在一个尽量压缩的测试流程里,功能测试可以手工进行,白盒测试可以不做,但是性能测试必须要做,除非该软件非网络类软件即单机版软件!软件测试,从宏观上可以划分为三个大方面:功能测试、性能测试、安全性测试,功能测试说明软件做对了,功能测试+性能测试说明软件做好了,三者结合起来说明软件做的非常好!安全测试暂且抛之不提,这是下一个发展域的内容,但是为了把软件做好,为了真正保证软件的质量,性能测试绝不容忽视;只因目前很多企业由于时间、成本、人力条件的限制,暂且不做性能测试。性能测试工程师相对来说,是三个技术路线里技术要求最高的,因为软件的性能瓶颈归根结底落实到代码的运行效率这个问题上,因此性能测试要做好,性能测试工程师起码要懂开发;而为了发现性能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针对性的对代码、操作系统、网络架构、服务器、数据库进行优化!当然性能测试是一个系统工程师,绝对不是一两个人的事情,对于常规性能测试工程师,具备定位性能问题的能力即可。

    二、高级域技术路线

           进入技术路线的高级域,根据中级域的四个路线,可以细分成五个路线,分别是资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师,这些高级技术类人才完全与常规测试经理平齐,属于软件测试职业发展高级域。

           资深自动化测试工程师由自动化测试工程师晋升而来。如果说常规自动化测试工程师只是负责自动化测试脚本本身的设计与开发,那么资深自动化测试工程师的工作内容就是自动化测试这项工作的实施!也就是说,录制脚本-添加验证点-回放脚本只是最初始的自动化阶段,要在企业实施自动化测试,要有资深自动化测试工程师来设计数据驱动,开发测试框架,甚至一些企业内部自主开发小型测试工具(而非商业工具)的先例,这些也都是建立在资深自动化测试工程师具有深厚的技术底蕴后,主导其他人员协调完成的事情。

           资深白盒测试工程师,其工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监攻关测试方法与技术性难题,因此其技术水平更加雄厚。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离程序设计语言本身,结合不同架构、多种开发技术交互的情况下,寻找代码测试方法,并具有对代码优化的能力。

           资深性能测试工程师,来源于常规性能测试工程师,按照常规性能测试工程师的技术要求,资深性能测试工程师应该具备性能测试整体方案的设计能力,以及软件系统性能问题定位和性能优化的能力!除此之外,也要对主流的软件开发模式下的应用系统具有敏锐的洞察意识和感知意识。

           安全性测试工程师,其实从性能测试工程师衍生出来,因为只有具备性能测试经验的人,才对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软件系统存在的安全漏洞,加上其本人是测试出身,才知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。目前国内软件行业对于安全性测试的认识尚未清晰,该职业也更没有普及,一般只限于军事类、机密类、防病毒类或其他高安全性软件的测试工作中。

    三、专家域技术路线

           技术路线专家域在技术路线,向上继续提升的方向,我们称之为“技术专家”;如果说前面描述的技术职位的所涉范围都定位在企业内部,即企业级资深性能测试工程师,那么技术专家,我们可以看作是领域级专项人才!

           随着软件测试行业的职位不断细化,每个人在自己擅长的领域走向深入,都可以成为该领域的技术专家,技术专家在自已经营的领域里,具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训、技术推广等,为软件测试整体行业的发展,起到了鲜明的带头作用。

    展开全文
  • 软件测试技术

    千次阅读 2018-11-24 14:14:00
    软件测试技术 软件的概念:信息处理系统的所有或部分程序、规程、规则和任何相关的文档的集合。 程序:源程序+目标程序 源程序:高级语言、汇编语言编写的程序 目标程序:源程序经编译或解释加工以后可以由...

    软件测试技术

    软件的概念:信息处理系统的所有或部分程序、规程、规则和任何相关的文档的集合。

    程序:源程序+目标程序

    源程序:高级语言、汇编语言编写的程序

    目标程序:源程序经编译或解释加工以后可以由计算机直接执行的程序

    文档:用自然语言或形式化语言所编写的文字资料和图表,用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果以及使用方法。

    软件测试包括:源程序+目标程序+文档

     

    软件测试的定义:使用人工或者自动手段,来运行或测试某个系统的过程。其目的在于检测它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

     

     

    测试过程(了解) 每一阶段都要从头来一次

    需求测试:需求文档的测试

    测试的计划:对测试过程的整体设计,确定测试范围,制定测试策略,安排测试资源,进度制定,风险评估,应对策略

    测试设计及用例:测试设计,用例设计,用例评估

    测试的执行:用例的选择(难得?复杂的?优先级高的?),测试环境的搭建,每日构建

    测试的记录和跟踪:Bug记录,Bug管理,Bug的报告(沟通,评审,提交),Bug的跟踪

    回归测试:再测一次

    测试总结和报告:缺陷的分类报告,客观全面的报告生成,经验总结

     

     

     

     

    测试的分类

    按测试的方法分类:

    静态测试和动态测试,白盒测试,黑盒测试,灰盒测试,冒烟测试,回归测试,功能测试与性能测试,压力测试和负载测试,配置测试,文档测试,兼容性测试,安全测试,恢复测试,可移植性测试,引导测试,随机测试,手动和自动测试,通过/失败测试,错误猜测,易用性,安装性,界面性。

     

    按测试的阶段分类:单元测试,集成测试,(确认测试),系统测试,(验收测试 a测试,b测试)

     

     

    测试的原则:

    投入和产出平衡(当有两次bug趋于0,当第三次出现就停止测试继续开发)

    二八原则

    尽早的和不断开展测试

    错误的地方多投入

    同化问题:交叉测试,利用不同人的观点

     

     

    需求的测试

    需求占缺陷比例高达56%

     

    需求可能存在的问题

    需求文档编写有问题、功能不明确,流程不清晰,不正确占50%,余下50%是需求的遗漏造成的。

    拿着一线文档(需求卡片),需求规格说明书和卡片进行对比,所有规格都已经有了,再使用检查列表对需求说明书进行优化,看有没有歧义,语法上的错误,再结合所有的项目组人员进行讨论,评审,修订,看看需求规格说明书上有没有什么不能实现,需不需要再找客户。

     

     

     

     

    检查列表

     

     

    第一步:对比需求

    第二步:检查列表检查需求

    第三步:根据定稿的需求规格说明书来分析我们测试用例,以备测试

     

     

    测试计划

     

    测试计划的内容(了解):

    确定测试范围

    制定测试策略

    测试资源安排

    进度及安排

    风险及对策

     

    测试范围:功能,性能

    策略:测试方法

    资源进度安排:人,物,时间。细化到最小颗粒逐渐反推相加

     

     

    测试用例设计

     

     

    基于需求的测试用例设计:

    验证需求是否正确,完整性,无二义性,并且逻辑一致性

    从黑盒角度设计出充分并且必要的测试集

    基于需求的测试需要工具支持,比如QC

     

     

    测试用例设计:

    等价类划分法

    边界值分析法

    因果图法

    基本路径分析法

    场景设计法

    错误猜测试

    正交分解法

    ……..

     

     

    黑盒测试的基本概念:
    穷举输入测试是不实现的。这就需要我们认真研究测试方法,以便能开发出尽可能少的测试用例,发现尽可能多的软件故障。

    常用的黑盒测试方法有等价类划分,边界值分析,决策表测试等,每种方法各有所长,我们应针对软件开发项目的具体特点,选择合适的测试方法,有效地解决软件开发中的测试问题。

     

     

    等价类划分:

    等价类划分是一种典型的黑盒测试方法,它完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。

    在确立了等价类之后,可按下表的形式列出所有划分出的等价类表

    等价类表

    同样,也可按照输出条件,将输出域划分为若干个等价类

    在设计测试用例时应同时考虑有效等价类和无效等价类测试用例的设计。根据等价类表设计测试用例,具体步骤如下:

    1. 为每个等价类规定一个唯一的编号
    2. 设计一个新的测试用例,尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。
    3. 设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了所有的无效等价类。

     

    边界值分析法

    健壮性边界值测试将会产生4n+1个测试用例

    健壮性测试最有意义的部分不是输入,而是预期的输出,观察例外情况如何处理

    等价类划分+边界值法

     

    因果图法

     

    因果图法的原理

    因果图法测试用例的设计步骤

    1. 确定软件规格中的原因和结果。分析规格说明中哪些是原因(即输入条件或输出条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
    2. 确定原因和结果之间的逻辑关系。分析软件规格说明书中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系画出因果图。
    3. 确定因果中的各个约束。由于语法或环境的限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
    4. 把因果图转化为决策表
    5. 根据决策表设计测试用例

     

    决策表法(不会考)

    决策表通常由条件桩,条件项,动作桩和动作项4部分组成。

     

    因果图+决策表

    动作项和条件项紧密相关,指出在条件项的各组取值情况下应采取的动作。

     

    生成的决策表

    练习:见测试方法.doc 和 PPT上的例子,实验报告中的例子

     

     

    场景设计法    

    大部分软件是由事件触发来控制流程的,事件触发时的情景就是所谓的场景

    根据需求规格说明书中的用例规约来设计,正常的流程,异常分支应该怎么做。主要是测流程,没有测细节,还是要用等价类划分来测试。

     

    错误猜测法

    是基于经验的直觉推测程序中可能发生的各种错误,有针对性设计测试用例。

    优点:充分发挥个人的经验和潜能,命中率高

    缺点:覆盖率难以保证;过多的依赖个人的经验。

    注意:最重要的是要思考和分析测试对象的各个方面,多参考以前发现的Bug的相关数据,总结的经验,个人多考虑异常的情况,反面的情况,特殊的输入,以一个攻击者的态度对待程序,那么就能设计出比较完善的测试用例。

     

    正交分解法

    正交表法是一种有效减少测试用例个数的设计方法。

    有效减少测试用例个数的测试用例方法。单因素覆盖,成对覆盖,三三组合覆盖

    PICT工具

     

    测试的执行,测试的管理工具

    BUGFREE的工作流程

    在这个平台上提交你的需求,比如说提交你发现的BUG,指派给某一个开发人员来完成,基本上指这个功能的开发人员,他在这个平台上接到通知之后,对其进行修复,修复完成之后就会提醒测试人员,我已经修复好了请再测试一次,如果通过就把这个Bug关闭掉,如果没有通过,就再次发给开发人员来进行修复。

    BUG的状态

     

     

     

    测试执行中的关键

    测试环境的准备

    构建测试运行的平台和安装需要的软硬件系统。

    人员的安排

    不仅包括指定哪些人参加功能测试,哪些人参加系统测试和谁负责测试环境的维护等,还要包括人员的培训,知识的传递。

     

    测试用例包括哪些内容:测试功能(目标),测试环境,测试要录入的数据,测试的具体操作,预期结果,不包括实际结果。

     

     

    测试执行的准备

    培训和知识传递

    测试任务安排

    测试环境的建立

    测试环境的设置

    测试自动化运行平台

     

    白盒测试

    静态白盒测试和动态白盒测试

    静态白盒测试:主要测三个方面软件的设计,体系结构和代码。从而找出软件缺陷的过程,有时也称为结构化分析

    原因:尽早发现软件错误;为黑盒测试人员提供建议

    方式:1.确定问题2.遵守规则3.准备期间4.编写报告

    方法:互查,走查,会议评审。

     

    互查:小组之间成员之间交流互相交流源代码,怎么去调用源代码,对方如何调用处理,增进感情。

    走查:每个项目会派出代表,或者项目主的每个成员都会出来陈述代码第一步怎么做,第二部怎么做……,或者用什么样的算法去提高底层的效率。

    好处:检查代码的注释是否写好,效率是否有问题。把控整个小组的代码风格(如命名风格,申明变量的风格)。

     

    会议评审:公司的高层会派一个专家组进驻你的项目,然后看看你的项目设定或者编码情况。但是成本高。因为专家进来之前对这个项目不是很熟悉,专家组需要一定的时间来了解这个项目。

     

    动态白盒测试

    检查代码并观察运行状况

    利用查看代码(做什么)和实现方法(怎么做)得到的信息来确定哪些需要测试,哪些不要测试,如和开展测试

    又称为结构化测试

     

    动态白盒测试期望达到的目的

    所有独立路径至少都能测试一遍

    所有逻辑判断都能测试True和False两条路径;

    所有循环结构都能测试到边界和循环域内的情况;

    确保内部数据结构的有效性。

     

     

    白盒测试主要的方法

    逻辑覆盖测试法

    基本路径测试法

    循环路径覆盖法

     

    逻辑覆盖测试法

    语句覆盖:每条语句至少执行一次

    判定覆盖:每个判定的每个分支至少执行一次

    条件覆盖:每种条件下的语句都应该被执行

    判定/条件覆盖:同时满足判定覆盖和条件覆盖

    条件组合覆盖:每个判定中,各条件的每一种组合至少出现一次。

    路径覆盖:程序中每一条可能的路径至少执行一次。

     

    基本路径测试法(阅读代码->画出流程图->圈复杂度->设计测试用例->进行相关测试)

    基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

     

    路径是控制流程图中节点的顺序,始于入口节点,止于出口节点

     

     

    程序可能通过的路径是:

    路径 1:1 – 11

    路径 2:1 – 2 – 3 – 4 – 5 – 10 – 1 – 11

    路径 3:1 – 2 – 3 – 6 – 8 – 9 – 10 – 1 – 11

    路径 4:1 – 2 – 3 – 6 – 7 – 9 – 10 – 1 – 11

     

    圈复杂度的计算:

    1. 边-节点+2
    2. 封闭+1
    3. 矩阵模型(可以不用掌握)

     

    循环路径覆盖法

    五种测试用例

    1. 整个跳过循环
    2. 只有一次通过循环
    3. 两次通过循环
    4. m次通过循环,m<循环最大次数
    5. n-1,n,n+1次通过循环

     

    实际运用中,基本路径+循环使用的最多

     

    将测试进行分段

    测试越早发生越好

    代码分段构件和测试,最后合在一起形成更大的部分

    单元测试:接口,数据边界,路径,异常,局部变量(数据)

    可测可不测:条件组合,性能,功能

     

    单元测试概念

    定义:单元测试时对软件基本组成单元进行的测试

    时机:在代码完成后由开发人员完成,QA人员辅助

    意义:尽早发现错误,发现的越早成本越低

     

    单元测试内容

    运行单元程序有时需要基于被测单元的接口,开发相应的驱动模块和桩模块

    驱动模块

     

    驱动模块:对底层或子层模块进行测试所编写的调用这些模块的程序。

    桩模块:对顶层或上层模块进行测试时所编写的替代下层模块的程序。

     

     

    集成测试

    对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:

    1. 模块间集成测试
    2. 子系统内集成测试
    3. 子系统间集成测试

     

    集成测试的模块

    渐增式测试模块与非渐增式测试模块

    非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒法(先测试最小模块,再测试最大的模块)

    大棒方式的优缺点

    好处:非常快捷

    坏处:容易出错,一旦出现错误,不知道是哪个模块出现的错误

     

     

    渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略和混合

    自顶向下的优缺点

    优点:可以纵观全局,很快的发现软件测试文档出现的问题

     

    自底向上的优缺点:

    效率高,但是需要大量的驱动

     

     

    自顶向下和自底向上集成策略

    驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接收测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。

    桩程序/桩模块(stub),也有人称为存根程序,用以测试被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检测被测模块与其下级模块的接口。

     

     

     

    系统测试

    需求分析阶段:测试需求规格说明书,是否与用户要求一致

    概要设计阶段:测试概要设计说明中是否覆盖了所有已确定的需求,是否考虑了后期维护

    详细设计阶段:数据结构,算法是否正确,编码规范

    编码阶段: 单元测试,集成测试

    系统验收阶段:测试系统是否完成了需求规格说明书中的所有内容

     

     

     

     

     

    系统测试概念

    使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的系统需求或是弄清预期结果与实际结果之间的差别。系统测试在真实环境下进行

    验证(Verificaiton)

        验证确定工作产品正确反应了它们的规定需求。换言之,验证保证"你正确地构件了它"

    确认(Validation)

        确认确定提供的产品将满足其预期使用。换言之,确认保证"你构建了正确的产品"

     

    为了发现发现却缺陷并度量产品质量,按照系统的功能和性能需求进行的测试

    一般使用黑盒测试技术

    一般由独立的测试人员完成

     

    对于模块之间交互性比较强的软件,还会有单独的集成测试,用来发现模块接口之间的错误。

     

    系统测试的内容(了解哪个是那个)

    功能测试

    恢复性测试(灾难测试,容错测试)

    可用性测试

    安全性测试

    接口测试

    GUI测试

    安装/升级测试

    配置测试/兼容性测试

    国际化(语言)测试

    用户文档测试

    ……

     

     

    性能测试

    压力测试

    容量测试

    可靠性测试

    边界测试

    ……….

     

    冒烟测试

     

    回归测试

     

    随机测试

     

    硬件系统专有测试

    可靠性试验

    可产生性测试

    可维护性测试

     

     

    自动化测试

     

    性能测试包括以下几个方面

    评估系统的能力。测试中得到的符合和相应时间等数据可以被用于验证所计划的模型的能力,并帮助做出决策。

    识别系统中的弱点。受控的负荷可以被增加到一个极端的水平并突破它,从而修复系统的瓶颈或薄弱的地方。

    系统调优。重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能,检测软件中的问题。

     

     

    性能测试的概念

    性能测试主要验证软件是否达到需求规格说明书中规定的各类性能指标,并满足一些行性能相关的约束和限制条件。

    主要有:响应时间,并发用户,吞吐量,服务器性能,点击率,响应成功率

     

    性能测试的分类(谁是谁,有什么区别)

    压力测试

    负载测试

    并发测试

    配置测试

     

    负载测试

    负载测试是通过逐步增加系统工作量,测试系统能力的变化,并最终确定在满足功能指标的情况下,系统所承受的最大工作量的测试。

    压力测试实质上就是一种特定类型的负载测试

    并发测试是一种测试手段,在压力测试中可以利用并发测试来进行压力测试

    负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。

     

    压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

     

    压力测试可以被看作是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。通过压力测试,可以更快地发现内存泄漏问题,还可以更快地发现影响系统稳定性的问题。

     

     

     

     

    性能测试的流程

     

     

    自动化性能测试原理

    首先保证一个用户能正常访问,记录访问过程,记录通讯包

    通过测试工具模拟更多用户同时发通讯包,后台无法区分是人或工具

    通过测试工具模拟大量用户同时向后台发出请求,来达到产生压力和指定压力的目的,在产生指定压力的同时监控后台系统的资源消耗情况,监控客户端的请求处理时间

     

     

    复制出客户端发往服务端的请求,模拟用户

    关注的是通讯包,协议,不关心客户端形式

     

     

    关于LoadRunner

    LoadRunner是Mercury Interaction公司开发一款成熟的性能测试工具,LoardRunner作为性能测试的实现者,涉及性能测试流程,性能测试技术和软件系统架构等众多方面的知识点。

    LoardRunner提供的解决方案

     

     

    LoadRunner的过程

    脚本生成器Virtual User Generator

    VuGen提供了基于录制的可视化图形开发环境,可以方面简洁地生成用于负载的性能脚本。

    压力调度和监控系统Controller

    负责对整个负载的过程进行设置,制定负载的方式和周期,同时提供了系统监控的功能。

    压力生成器Load Generator

    负责将VuGen脚本复制成大量虚拟用户对系统生成负载。

    结果分析工具Analysis

    通过Analysis我们可以对负载生成后的相关数据进行整理分析。

     

     

    自动化测试的步骤:

    录制一个操作的过程,称为脚本

    回放一下,验证脚本是否正确

    脚本增强(参数化如密码,用户名。在脚本中设置检查点,检查运行过程中是否执行成功,如果成功了就会出现字符串或图片。)

    设置自动化测试执行的策略

    事务,设定我们的场景(一开始多少线程启动,做什么样的事情,到达某一时刻线程,其他一些零界点做什么事情,线程在什么时候停止,在什么时候再启动)在测试过程中观察参数的变化(相应时间,等)

    分析报告,在报告中我们查看某个功能运行时间效率是否达到我们之前的设定,或者方差是我们期望的,否则进行调优。

    展开全文
  • 软件测试技术学习总结

    千次阅读 2015-03-20 23:03:09
    一个开发人员不能自己测试一下自己开发的程序是件很尴尬的事,秉着对这句话的理解,最近学习了一下软件测试技术的基础知识,现在总结一下学习过程,供想学习了解一下软件测试的同学参考参考。

    一个开发人员不能自己测试一下自己开发的程序是件很尴尬的事,秉着对这句话的理解,最近学习了一下软件测试技术的基础知识,现在总结一下学习过程,供想学习了解一下软件测试的同学参考参考。

     

    学习资源:

    课本:《软件测试技术》清华大学出版社

    视频:《软件测试技术视频教程》主讲:贺炘from领测国际

    附下载链接:http://www.ltesting.net/xc/free/

    课本是从学校图书馆借的,应该说还是挺系统的介绍了软件测试这项技术,适合初学者。至于视频教程,主讲贺炘号称是国内首席测试专家,应该说实力是摆在那里的,只是视频录制的声音效果不是很好。


    下面是学习心得,按学习顺序列出,尽量写的通俗易懂,让大家都能读懂,甚至对软件测试有个入门了解

    1.     软件测试的目标

    减少Bug?发现Bug?都不是。软件测试的目标:稳定控制产品质量的振幅,避免产品质量出现较大波动。软件测试能提高产品质量么,难说,因为假如产品的需求分析已经做错,那么再好的测试人员也无能为力。

    2.     编码先还是单元测试先

    单元测试,编码的目的是为了通过单元测试

    3.     系统测试和验收测试的区别

                  执行人不同,验收执行者代表用户利益

                  目标不同,系统测试目标为提升质量,验收为证明系统没问题

                  验收测试的测试用例是系统测试的最小测试用例集

    验收测试不属于测试体系,而是偏向商务,因为一般系统测试通过验收测试也会通过

    4.     什么是测试用例,书写测试用例的目的是什么?

    测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求

    测试用例的目标是复用,提高测试效率

    5.     两个模型

    V模型和X模型

    6.     为什么软件测试不能保证产品质量

    测试是保证质量的其中一个指标,通过测试提高质量如同如同通过称重来减肥

    7.     测试方法

    黑盒,白盒,灰盒测试

    (另外还有模糊测试、增量测试、大突击测试和极限测试等)

    8.     自动化测试

    指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件

    工具:QTP

    关键词:录制脚本,面向界面对象测试方法,脚本编辑,参数化设置

    9.     性能测试

    负载测试、压力测试都属于性能测试范围

    工具:LoadRunner

    关键词:三大组件,录制脚本,面向协议测试方法,脚本编辑,参数化设置,事物控制


    10.QTP和LR工作方式的区别

       LR性能测试是针对协议层的

       QTP功能测试是针对界面对象的


    最后祝各位学习愉快!


    展开全文
  • 问:软件测试的原则? 答:https://blog.csdn.net/weixin_30363263/article/details/102986878 问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 1、将问题提交到缺陷...
  • 软件测试高级技术-性能测试

    万次阅读 2017-07-12 16:50:48
    前言 近年来,随着我国软件产业的蓬勃发展以及对软件质量的...不得不承认,很多同学大学毕业就选择软件测试这个行业,嘴上说对测试感兴趣,但十有八九都是因为觉得测试入门的门槛低,不需要什么开发技术知识。额,关于
  • 软件测试实用技术与常用模板

    千次阅读 2010-12-14 15:41:00
      内容简介  软件测试实用技术与常用模板  《软件测试实用技术与常用模板》从软件测试实用理论和测试实训技术的角度出发,以“手机信息管理系统模型”作为被测软件,以通俗易懂的语言讲述...
  • 软件工程导论—软件测试

    万次阅读 多人点赞 2020-05-13 21:26:49
    1. 软件测试基础 2. 单元测试 3. 集成测试 4. 确认测试 5. 白盒测试技术 6. 黑盒测试技术 7. 调试 8. 软件可靠性
  • 软件测试与质量保证-软件测试部分练习题 1单选(2分) 软件测试用例主要由输入数据和_________两部分组成。 A.预期输出结果2.00/2.00 B.测试计划 C.以往测试记录分析 D.测试规则 2单选(2分) 设计测试用例无关的...
  • 简单介绍然间测试过程中的基本测试技术
  • 软件测试软件测试方法

    千次阅读 2019-06-15 15:50:40
    随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。 一、根据是否要走查代码,分为白盒测试、灰盒测试、黑盒测试; 二、分为手工测试、自动化测试和...
  • 软件测试工程师成长之路:掌握软件测试九大技术主题》以实际项目为原型、以关键理论丰富实践为指导,贯彻了先进的项目管理理念全程质量管理思想。 《软件测试工程师成长之路:掌握软件测试九大技术主题
  • 软件测试 技术类面试题问题集锦

    千次阅读 2018-08-30 15:56:13
    2.软件测试活动的生命周期是什么? 3.请画出软件测试活动的流程图? 4.针对缺陷采取怎样管理措施? 5.什么是测试评估?测试评估的范围是什么? 6.如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么? 7.测试结束的...
  • 经典软件测试技术分类

    千次阅读 2013-06-28 13:14:08
    测试技术是指顺利完成测试的一系列相关过程,有很多可能的分类方式,表2-1就是其中的一种。...表2-2描述了每一种软件测试方法。 表2-1 测试技术分类 测试技术 手工测试 自动测试
  • 【最全】软件测试基础理论选择题(含答案)

    万次阅读 多人点赞 2020-03-05 19:17:40
    1、软件测试的目的是( ) A、试验性运行软件 B、发现软件错误 C、证明软件正确 D、找出软件中全部错误 【答案】B 2、下面说法正确的是( ) A、经过测试没有发现错误说明程序正确 B、测试的目标是为了证明程序没有...
  • 公司推荐的入门书,《软件测试技术经典教程》是一本难得的好书。注重理论实践结合!之前看过的一些软件测试方面的书,大多注重理论,而且大都讲得泛泛,不具体,书本之间的重复内容很多。全书分为三部分:软件测试...
  • 软件测试方法和技术》电子课件之二

    千次下载 热门讨论 2008-04-22 22:37:07
    前 言 <br>第一篇 软件测试的原理 第1章 软件及其开发过程 第2章 软件测试的基本概念和方法 第3章 质量保证测试策略 第4章 软件测试依据和规范 <br>第二篇 软件测试技术 第5...
  • 软件测试方法和技术》电子课件之五

    千次下载 热门讨论 2008-04-22 22:45:33
    前 言 <br>第一篇 软件测试的原理 第1章 软件及其开发过程 第2章 软件测试的基本概念和方法 第3章 质量保证测试策略 第4章 软件测试依据和规范 <br>第二篇 软件测试技术 第5...
  • 常用技术面试题(软件测试

    万次阅读 2020-05-22 22:04:15
    这是小编整理的软件测试常用的技术面试题 请看下面 你的测试职业发展是什么?  测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年...
  • 软件测试方法和技术》电子课件之四

    千次下载 热门讨论 2008-04-22 22:40:02
    前 言 <br>第一篇 软件测试的原理 第1章 软件及其开发过程 第2章 软件测试的基本概念和方法 第3章 质量保证测试策略 第4章 软件测试依据和规范 <br>第二篇 软件测试技术 第5...
  • 软件测试面试题(含答案)

    万次阅读 多人点赞 2021-03-01 15:15:38
    软件测试面试题(含答案)
  • 软件测试基础常识

    千次阅读 2010-06-16 16:23:00
    一、软件测试概述软件测试,是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方 面是确认软件做了你所期望的事情(Do ...
  • 软件安全测试应用安全测试

    万次阅读 2015-03-02 21:26:51
    说起安全测试,曾几何时在我心中一直是一种“高大上”的工作,它涉及软硬件、系统架构设计、代码/脚本开发、汇编/反汇编等多个技术层面;相关的技术人才也比较”贵“...从而导致了中小型互联网企业的产品
  • 软件评测师是“全国计算机技术软件专业技术资格”中级认证,于2018年11月10号考试。...第四章:软件测试过程管理 第二篇:测试技术 第五章:黑盒测试案例设计技术 5.1概述 5.2测试用例设计...
  • 软件测试技术之中,静态测试是经典的测试技术一类。这里,我们先概 要解释和说明一下静态测试技术。  静态测试不以测试数据的执行而是对测试对象的分析过程。  静态测试存在于软件生命周期的各级测试。如,...
  • 考纲 目录:...     软件质量保证与测试技术复习提纲 1.3  1.5   2.1 2.3 2.5 2.6   3.3(3.3.1 扩展) 3.4 3.7.3 FSM 状态图 状态表   5.1 5.7.1 5.7.2   8.1.1 ...
  • 软件测试&软件测试工程师

    千次阅读 多人点赞 2016-07-08 15:58:01
    起源: 最近在面试软件测试工程师方面的工作,今天在整理整理一下关于软件测试这方面的知识点。 一、 测试工程师: 1、 国内定位和发展前景: 测试工程师,软件质量的把关者,工作起点高,发展空间大。我国的...
  • 软件测试校招笔试题-软件测试基本理论

    万次阅读 多人点赞 2019-07-18 11:23:26
    软件测试面试题100道整理 1.什么是软件测试? 答:软件测试是为了发现错误而执行程序的过程。 2.软件测试的目的? 答;测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷...
  • 山东大学软件测试技术实验三报告

    千次阅读 2017-07-03 10:48:30
    班级: 软件八班 课程设计题目:自动化测试工具QTP的使用 上机学时:2 日期: 2017年5月23号 实验内容:   1.QTP的安装。 2.使用QTP进行简单的功能测试。   实验要求: ...
  • 软件测试方法和技术》电子课件下载

    万次阅读 热门讨论 2008-04-22 22:29:00
    为了配合高校的教学,现将电子课件上载到 Kerry Zhu CSDN下载频道:《软件测试方法和技术》电子课件之一《软件测试方法和技术》电子课件之二《软件测试方法和技术》电子课件之三《软件测试方法和技术》电子课件之四...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 464,176
精华内容 185,670
关键字:

软件测试技术与应用