zoukankan      html  css  js  c++  java
  • 软件测试理论提炼

    质量:
    是指测试项目需要达到的标准,对测试项目来说,比较常见的是以测试用例执行率、通过率和未关闭BUG级别/数量来设定质量标准。
    ISO/CMM的流程
    1.初始级-->2.已管理级-->3.已定义级-->4.量化管理级-->5.优化级
    测试类型:
    功能/界面/易用性/安全性/兼容性/本地/国际化/数据库/可靠性/集成测试/自动化/性能/回归测试
    测试计划包含哪些内容:
    Ø 测试项目简介Ø 需要测试的特征Ø 不需要测试的特征Ø 测试的方法 (测试人员、测试工具、测试流程)Ø 测试环境(软件、硬件、网络)Ø 测试开始条件和结束条件Ø 测试者的任务、培训Ø 测试进度与跟踪Ø 测试风险与解决Ø 本测试计划的审批与变更方式
    测试计划:  
    1、 引言(目的,背景,范围,定义,通过准则,参考文档,提交文档)
    2、概述(测试策略,要测试的内容,不测试的内容)
    3、测试环境
    4、资源及进度计划
    5、测试内容详细说明
    6、系统风险及解缓措施
    测试方案包含哪些内容:
    测试需求分析,测试策略,测试资源,测试进度计划,风险管理,质量。
    测试报告包含哪些内容:
    数据统计,遗留Bug情况,测试风险,测试对象评估,测试结论。
    测试报告:
    1、概述
    2、数据统计(人力投入,用例覆盖统计、问题单分类统计)
    3、遗留bug情况
    4、测试风险
    5、测试对象评估
    6、测试结论
    7、附录
    性能测试的基本过程:
    Ø 性能测试需求分析Ø 性能测试计划Ø 性能测试用例Ø测试脚本编写Ø 测试场景设计Ø 测试场景运行Ø 运行场景监控Ø 测试结果分析Ø 系统性能调优Ø性能测试总结
    Web性能测试基本性能指标
    相应时间,并发数,吞吐量,资源利用率
    LoadRunner性能测试的过程模型:
    Ø 创建方案Ø 创建Vuser脚本Ø 创建场景Ø 运行场景Ø 监控场景Ø测试结果分析
    如果你使用过Loadrunner,请描述测试多个用户并发登录场景,需要使用LR,请列出你使用过的性能测试工具,并说明如何实现上述测试场景?
    使用过得性能工具:LR
    如何实现:
    1. 在脚本中插入集合点(放在事务之前,紧挨事务)
    2. 场景编辑中制定相应的集合点策略
    3. 执行测试后通过集合点图和其他图合并后共同分析结果。
    测试用例包含哪些内容:
    1.用例编号2.模块3.用例名称4.前置条件5.用例描述6.输入数据7.操作步骤8.期望结果9.实际结果10.设计人11.设计时间12.评审人13.优先级14.检查点15.测试结果16.测试人17.测试时间18.ButID19.备注
    用例ID、用例标题、预置条件、操作步骤、预期结果、实际结果、优先级、缺陷编号、备注。
    安全性测试主要包括哪些方面:
    ? 测试用户的安全性,包括用户登录、权限分配,以验证用户权限的正确性。
    ? 测试数据备份与恢复的安全性,主要验证数据库数据的正确性与完整性。
    ? 测试操作日志的安全性,主要验证操作日志数据的正确性。
    CS、BS的优缺点:
    B/S最大优势为客户端免维护,适用于用户群庞大,或客户需求经长发生变化的情况。C/S功能强大,可以减轻服务器端压力,如果用户的需求特别复杂,用C/S。
    典型C/S架构应用程序有和特点,测试上应注意什么?
    C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构。测试上应注意其承受大用户量并发访问时的能力,比较好的方法是用测试工具来模拟多个客户端同时访问服务器,并使用性能监测工具获得关于服务器、数据库等用户关心的性能指标。
    典型Web应用程序(B/S多层架构)逻辑上分哪几层?Web应用有何特点,测试上应注意什么,主要性能指标有哪些?
    1、b/s结构分为客户端browse,web服务器,数据库三个层次;
    2、基于浏览器;
    3、表单测试、链接测试、图形测试、内容测试、Cookies测试、性能测试 、安全性测试;
    4、
    Avg Rps: 平均每秒响应次数=总请求时间 / 秒数; 
    Avg time to last byte per terstion (mstes):平均每秒业务脚本的迭代次数 ,有人会把这两者混淆; 
    Successful Rounds:成功的请求;
     Failed Rounds :失败的请求;
     Successful Hits :成功的点击次数; 
    Failed Hits :失败的点击次数;
     Hits Per Second :每秒点击次数; 
    Successful Hits Per Second :每秒成功的点击次数; 
    Failed Hits Per Second :每秒失败的点击次数;
     Attempted Connections :尝试链接数;
    近3年的职业规划?
    将先进的经验或思想固化到过程中,通过过程改进和能力提升来改进软件质量,致力打造出适合中小企业的测试方法。
    软件测试的生命周期:
     计划 、分析、设计、构建、测试周期、最后测试和实施等。
    常见的配置管理软件:
    VSS、CVS、SVN、CC(clear case)等。
    功能自动化测试工具:
    Winrunner、QTP、Robot、TestRunner、QARun等。
    典型的软件测试过程模型:
      V模型 、W模型 、 H模型 、 X模型等。
    兼容性测试中测试平台:
     Linux、Windows、Mac、Unix等。
    软件由于设计不当,引发安全漏洞,常见的漏洞为:
    缓冲区溢出、不对输入内容进行预期检查、意料外的联合使用问题、数据同步等
    写出你对软件测试的认识:
    软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤;
    软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
    解释什么是线程、什么是进程:
    线程是按设计人员预先的设定自动运行的。举个例子说,就像一个银行分很多部门,每个部门都需要用电,这里可以把一个部门看做一个用电的线程,在同一个时间内,很多部门都要用电,就是多线程工作
    进程(Process)是独立调配计算机资源的一个单位,是一个正在运行中的程序
    画出判断一个三角形是普通三角形,等腰三角形,等边三角形的流程图,并设计测试用例。
    流程图:
    首先保证三边、整数、正数、非零,然后两边之和大于第三边,这样就可以构成三角形,再次两边相等便形成等腰三角形,最后三边相等便形成等边三角形
    用例:
    345 一般三角形,335 等腰三角形,353 等腰三角形,533 等腰三角形,333 等边三角形
    单元测试、集成测试、系统测试的侧重点的什么?
    单元:模块,方法
    集成:接口
    系统:整个系统整体把握
    黑盒,白盒,回归,压力测试的定义。
    黑盒测试:把被测物体看成是一个黑盒子,不需了解内部结构,注重输入输出,所以又成为功能测试
    白盒测试:又称为结构测试,因为注重的是软件的结构、逻辑和算法
    回归测试:是指在发生修改之后重新测试先前的测试以保证修改的正确性。
    压力测试:是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试
    你认为软件工程师必备的素质和技能是什么?
    素质:态度、责任、沟通能力。
    技能:1、规范、标准化的编码能力
          2、认识和运用数据库的能力
          3、较强的动手能力和解决实际问题的能力
          4、持续的学习能力、掌握最新的IT技术
    5、较强的英文阅读和写作能力
    之前是否有做过测试?手机测试包括哪些?
    功能方面的测试跟web测试没什么差别,但是有些跟手机应用和习惯方面相关的东西需要注意:
    1.apk的安装、卸载和升级,看能否正常进行;软件提示更新,是否能成功下载并安装,如果取消更新,下次登录时会不会接着提醒更新;
    2.手机使用的版本(如android2.2、2.3、4.0等),要做兼容性测试;
    3.安装文件的大小,安装前后都不能太大,对于一般的应用而言(大型应用除外);
    4.耗电量测试,开此应用和不开此应用手机的待机时间差别;
    5.应用软件是否很耗流量;使用wifi和gprs流量访问软件的速度;
    6.性能测试,可以用loadrunner测试接口;
    7.安装路径问题,如应用中有图片,这些图片保存的路径;一般的软件中都会有附件的上传和下载(图片、语音、文本等),所以就要考虑这些附件在手机上存储位置的问题;
    8.观察整体的布局,页面显示(颜色,按钮)是否协调;
    9.因为手机中不能放置太多的文字,用图标取代,应用中的图标的意思是否明显;同时这些图标的位置的摆放,每个页面都要统一;
    10.各个二级以上页面上都应该有返回按钮;
    11.页面没有加载完就点其他按钮,是否出现软件强制关闭现象;手机出现强制关闭提示时,要考虑代码优化,网络,手机内存问题;
    12.有些功能要调用系统程序,是否正常操作,比如照相机、打开系统文件;
    13.向上拖动、向下拖动、短按、长按、横屏竖屏等习惯性操作,是否正确,有些页面应该禁止横屏;
    14.手机其他应用软件对该应用软件有无影响;
    15.不连接网络,就打看软件,是否提示连网。现在,有些软件的闪频页面占整个手机屏幕有的能看到手机最上边的显示栏,因此便存在通过快捷方式连网后,手机一直停在闪频页面的问题;如果是占整个屏幕的,我们必须退出软件才能连网,就不会存在停留闪频的问题了;
    16.应用软件中有没有清理缓存的功能
    测试的目的是什么?测试的流程是什么?
    是想以最少的人力。物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成隐患所带来的商业风险。
     需求分析-测试计划-测试方案-测试用例-测试执行-测试报告
    为什么要在一个团队中开展软件测试工作?测试的目的是什么?
    因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况
     测试的目的就是希望能以最少的人力和时间发现各种错误和缺陷,修复验证后评估软件的质量
    测试的目的是什么?一般一个较完整的软件系统需要进行那几个阶段的测试(或者说是哪几个步骤的测试)?
    尽可能多的找出软件的缺陷,评估软件版本质量
    单元测试、集成测试、系统测试、验收测试
    系统测试中,常见测试类型
    功能测试、性能测试  、安全测试、兼容测试 、安装/卸载测试等    
    可靠性测试的两个关键性能指标
    规定时间内和规定条件下
    系统测试计划和系统测试策略的作用分别是什么?
    测试计划定义测试进度的
    测试策略是说明用什么方法来测试
    什么是软件测试?
    答:在一系列规定条件下,对软件进行操作,发现错误,提高软件质量(注意软件的定义)
    比较软件测试过程和软件开发过程?
    答:一个是以开发产品作为目的,并规范开发中每一个环节;另一个是以发现软件中的错误,在测试过程严把质量关,从而保证软件质量。
     比较白盒测试盒黑盒测试?
    答:白盒测试:不关注功能,注重程序逻辑结构,分析软件代码流程。
    黑盒测试:不涉及程序结构,通过运行结构程序以发现输入输出的错误。
    简述软件测试的步骤?
    答:(1)测试需求分析;
        (2)测试计划;
        (3)测试方案;
    (4)设计测试用例;
    (5)搭建测试环境;
    (6)执行用例测试;
    (7)测试总结的报告。
    什么是测试用例?
    答:它描述输入,动作,和一个期望的结果,目的是确定应用程序的是否正常工作。
    1. 单元测试是以  详细设计   说明书为指导,测试源程序代码;集成测试以              说明书为指导,测试软件结构;确认测试以   概要设计    说明书为指导。
    2. 代码复审属于静态测试,不实际运行程序。
    3. 动态测试分为  黑盒  即功能测试,和 白盒 即结构测试。
    4. 边界值分析法属于 黑盒测试 。(这里我们也可以说边界值分析即属黑盒又属白盒)
    5. 逻辑覆盖属于 白盒 ,包括 语句覆盖 、分支覆盖, 条件覆盖 、判定/条件覆盖、 条件覆盖 、 修正条件     。
    6. 软件是包括 数据 、 程序 、 文档 的完整集合。
    您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?
    需求分析-测试计划-测试方案-测试用例-测试执行-测试报告
    需求分析、各文档评审、用例设计、用例执行需求分析:项目组全体人员、产品人员等;测试计划和报告由测试经理负责;方案由经验丰富的测试工程师设计;其余是测试工程师
    您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
    功能测试-系统中功能性需求的满足
    界面易用性测试-界面的友好性,操作方便性等。
    安全性测试-系统是否存在安全隐患和漏洞
    性能测试-系统在大并发下的响应速度和健壮性
    区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试
    请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
     黑盒/白盒:主要区别在是否了解系统或程序的内部结构和代码
    单元测试:关注某一个单元,函数,模块的正确性,一般需要编写相关测试代码。
    集成测试:模块或模块直接的集成接口测试,单个模块测试
    系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。
    验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
    您所熟悉的测试用例设计方法都有哪些?您认为做好测试用例设计工作的关键是什么?
    等价类划分、边界值分析、错误推测法、因果图分析、场景法,正交法
    深入剖析需求、考虑测试策略
    在您以往的工作中,一条软件缺陷(或都叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    1. 在传统的BugZilla中,BUG描述应该包括以下的信息
    2. 和BUG产生对应的软件版本
    3. 开发的接口人员
    4. BUG的优先级
    5. BUG的严重程度
    6. BUG可能属于的模块,如果不能确认,可以用开发人员来判断
    7. BUG标题,需要清晰的描述现象
    8. BUG描述,需要尽量给出重新Bug的步骤
    9. BUG附件中能给出相关的日志和截图。
    高质量的BUG记录就是指很容易理解的BUG记录,所以,对于描述的要求高,能提供的信息多且准确,很好的帮助开发人员定位。
    您期望中理想的测试人员的工作环境是怎样的?
    将先进的经验或思想固化到过程中,通过过程改进和能力提高来改进软件质量
    您认为在测试人员同开发人员的沟通过程 ,如何提高沟通的效率和改善沟通的效果?维持员同开发团队中其他成员良好的人际关系的关键是什么?
    尽量面对面的沟通,其次是能直接通过电话沟通,如果只能通过email等非及时沟通工具的话,强调必须对特性的理解深刻以及能表达清楚
    1.真诚
    2.是团队精神
    3.是在专业上有共同语言
    4.是要对事不对人,工作至上
    集成测试、Aipha测试和Beta测试三者有和异同?
    集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求)如根据结构图〕组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现
    Alpha测试和Beta测试都属于确认测试。
    Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现在错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。
    Beta测试由软件的最终用户们在一个或多个客房场所进行。与Alpha测试不同,开发者通常在Beta测试的现场,因Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户Beta测试过程中遇到的一切问题(真实在或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。
    敏捷测试的特点:
    高度迭代,有周期性,并且能够及时、持续地响应客户的频繁反馈。
    论述敏捷研发下如何保障产品质量?
    1、QA在项目中全过程的活动指导,以提高产品的开发效率和质量(比如指导项目团队怎么开站立会<晨会>,做迭代计划等指导性工作)
    2、利用探索性测试的角度去观察发现实际用户的预期行为等示例给开发提供帮助和反馈,使开发人员能够知道足够多的信息理解需求并指导编码。
    3、使用自动化做回归测试,提升测试!效率。(经验丰富的专家快速编写脚本)
    4、测试人员随时调整自己快速适应开发的快节奏,体现其自身的价值。需积极主动,及时与开发、业务专员等团队人员面对面沟通,加快对需求的响应。
    缺陷的等级
    致命--软件无法运行,或者软件的主要功能丧失,或者很大可能性会造成严重不良后果
    严重--软件的次要功能丧失,或者主要功能在一些特定情况下会出错 ,比如金额计算等
    一般--软件在某些情况下会出错,但是造成的后果影响不大
    轻微--在某些情况下会出错,但是造成的后果影响很小
    功能测试用例需要详细到什么程度才是合格的
    这个问题也是测试工程师经常问的问题。有人主张测试用例详细到每个步骤执行什么都要写出来,目的是即使一个不了解系统的新手都可以按照测试用例来执行工作。主张这类写法的人还可以举出例子:欧美、日本等软件外包文档都是这样做的。
    另外一种观点就是主张写的粗些,类似于编写测试大纲。主张这种观点的人是因为软件开发需求管理不规范,变动十分频繁,因而不能按照欧美的高标准来编写测试用例。这样的测试用例容易维护,可以让测试执行人员有更大的发挥空间。
    实际上,软件测试用例的详细程度首先要以覆盖到测试点为基本要求。举个例子:“用户登陆系统”的测试用例可以不写出具体的执行数据,但是至少要写出五种以上情况(),如果只用一句话覆盖了这个功能是不合格的测试用例。覆盖功能点不是指列出功能点,而是要写出功能点的各个方面(如果组合情况较多时可以采用等价划分)。
    另一个影响测试用例的就是组织的开发能力和测试对象特点。如果开发力量比较落后,编写较详细的测试用例是不现实的,因为根本没有那么大的资源投入,当然这种情况很随着团队的发展而逐渐有所改善。测试对象特点重点是指测试对象在进度、成本等方面的要求,如果进度较紧张的情况下,是根本没有时间写出高质量的测试用例的,甚至有些时候测试工作只是一种辅助工作,因而不编写测试用例。
    因此,测试用例的编写要根据测试对象特点、团队的执行能力等各个方面综合起来决定编写策略。最后要注意的是测试人员一定不能抱怨,力争在不断提高测试用例编写水平的同时,不断地提高自身能力。
    为什么尽量不要让时间有富裕的员工去做一些测试
    表面上看这体现了管理的效率和灵活性,但实际上也体现了管理者对测试的轻视。测试和测试的人有很大关系。测试工作人员应该是勤奋并富有耐心,善于学习、思考和发现问题,细心有条理,总结问题,如果具备这样的优点,做其它工作同样也会很出色,因此这里还有一个要求,就是要喜欢测试这项工作。如果他是专职的,那么肯定更有经验和信心。国内的小伙子好象都喜欢做程序员,两者工作性质不同,待遇不同,地位不同,对自我实现的价值的认识也不同,这是行业的一个需要改善的问题。如果只是为了完成任务而完成任务,或者发现了几个问题就觉得满意了,这在任何其它工作中都是不行的。
  • 相关阅读:
    mysql 防止插入某个字段重复的值
    vue 脚手架的目录结构
    搭建Vue 脚手架项目
    flex 布局的页面
    Java List 排序问题
    maven 管理oracle jar
    JPA 注解
    PL/SQL Developer 不显示系统表,默认显示My objects
    jquery面试题
    web前端课程检测2
  • 原文地址:https://www.cnblogs.com/ZhangZheng-Jack/p/14119693.html
Copyright © 2011-2022 走看看