软件测试面试题1、软件的生命周期(prdctrm)计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)-测试(testing)-运行与维护(runningmaintrnacne)2、测试用例主要包括哪些类目用例编号测试项目测试标题重要级别预置条件输入数据执行步骤预期结果3、你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?首先,将问题提交到缺陷管理库里面进行备案。然后,要获取判断的依据和标准:根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;根据用户的一般使用习惯,来确认是否是缺陷;与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。4、问:给你一个网站,你如何测试?首先,查找需求说明、网站设计等相关文档,分析测试需求。制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试设计测试用例:功能性测试可以包括,但不限于以下几个方面:链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回。提交功能的测试。多媒体元素是否可以正确加载和显示。多语言支持是否能够正确显示选择的语言等。界面测试可以包括但不限于一下几个方面:页面是否风格统一,美观页面布局是否合理,重点内容和热点内容是否突出控件是否正常使用对于必须但未安装的控件,是否提供自动下载并安装的功能文字检查性能测试一般从以下两个方面考虑:压力测试;负载测试;强度测试数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。安全性测试:基本的登录功能的检查是否存在溢出错误,导致系统崩溃或者权限泄露相关开发语言的常见安全性问题检查,例如SQL注入等如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持兼容性测试,根据需求说明的内容,确定支持的平台组合:浏览器的兼容性;操作系统的兼容性;软件平台的兼容性;数据库的兼容性开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。定期评审,对测试进行评估和总结,调整测试的内容。5、在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试。建立测试计划,确定测试标准和测试范围设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等根据测试用例,开发自动测试脚本和场景:录制测试脚本:新建一个脚本(Web/HTML协议);点击录制按钮,在弹出的对话框的URL中输入”about:blank”;在打开的浏览器中进行正常操作流程后,结束录制;调试脚本并保存,可能要注意到字符集的关联。设置测试场景:针对性能设置测试场景,主要判断在正常情况下,系统的平均事务响应时间是否达标;针对压力负载设置测试场景,主要判断在长时间处于满负荷或者超出系统承载能力的条件下,系统是否会崩溃;执行测试,获取测试结果,分析测试结果6、问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。300个用户在一个客户端上,需要更大的带宽。IP地址的问题,可能需要使用IPSpoof来绕过服务器对于单一IP地址最大连接数的限制。所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。7、试述软件的概念和特点?软件复用的含义?构件包括哪些?软件是计算机系统中与硬件相互依存的另一部分,与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。软件复用(SoftWareReuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。可以被复用的软件成分一般称作可复用构件8、软件生存周期及其模型是什么?软件生存周期(Softwarelifecycle)又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,知道失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每个时期又划分为若干个阶段。每个阶段有明确的任务。周期模型(典型的几种):瀑布模型快速原型模型:快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。迭代模型:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。生命周期阶段:软件计划与可行性分析需求分析软件设计编码软件测试运行与维护9、什么是软件测试?软件测试的目的与原则在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试的目的:测试是程序的执行过程,目的在于发现错误一个成功的测试用例在于发现至今未发现的错误一个成功的测试是发现了至今未发现的错误的测试确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。确保产品满足性能和效率的要求确保产品是健壮的和适应用户环境的软件测试的原则:测试用例中一个必须部分是对预期输出或接过进行定义程序员应避免测试自己编写的程序编写软件的组织不应当测试自己编写的软件应当彻底检查每个测试的执行结果测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况检擦程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”应避免测试用例用后即弃,除非软件本身就是个一次性的软件计划测试工作时不应默许假定不会发现错误程序某部分存在更多错误的可能性,与该部分已经发现错误的数量成正比软件测试是一项极富创造性,极具智力的挑战性的工作10、软件配置管理的作用?软件配置包括什么?软件配置管理(SoftwareConfigurationManagement,SCM)是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。软件配置包括如下内容:配置项识别、工作空间管理、版本控制、变更控制、状态报告、配置审计11、什么是软件质量?概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。12、目前主要的测试用例设计方法是什么?白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法13、软件的安全性应从哪几个方面去测试?软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。用户认证安全的测试要考虑问题:明确区分系统中不同用户权限、系统中会不会出现用户冲突、系统会不会因用户的权限的改变造成混乱、用户登陆密码是否是可见、可复制、是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)、用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统、系统网络安全的测试要考虑问题、测试采取的防护措施是否正确装配好,有关系统的补丁是否打上、模拟非授权攻击,看防护系统是否坚固、采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是NBSI系列和IPhackerIP)、采用各种木马检查工具检查系统木马情况、采用各种防外挂工具检查系统各组程序的外挂漏洞数据库安全考虑问题:系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)、系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)、系统数据可管理性、系统数据的独立性、系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)14、什么是测试用例什么是测试脚本两者的关系是什么?为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。测试脚本是为了进行自动化测试而编写的脚本。测试脚本的编写必须对应相应的测试用例15、软件测试能发现所有的Bug吗?不能,测试人员是尽可能的模仿用户的操作,尽早的发现bug,但是有些bug是测试人员考虑不到的或者偶发的bug,此时就要靠线上用户去发现了。16、你对自动化测试的定义是什么?自动化测试能替代手工吗?自动化的定义就是采用脚本或工具的驱动下,执行相应的操作自动化不能替代人工,自动化执行路径有限,不能覆盖所有的测试点,并且自动化的维护成本高。17、既然测试不能发现所有的Bug,那你觉得测试还有必要吗?测试时非常有必要的,虽然不能穷尽所有的Bug,但是能发现大部分的bug,避免对线上用户造成影响18、如果你来测试一个需求,你会在什么时候用自动化什么时候采用人工呢?对于主流程冒烟测试路径比较浅的采用自动化的方式执行,执行路径复杂的case一般不适合做自动化,另外自动化主要是起线上监控的作用,单分支测试并不是很适合做,维护成本比较高19、QC、QA的全称是什么?分别是QualityControl、QualityAssurance,中文翻译为质量控制、质量保障20、所有的Bug都要修复吗?原则上是所有的Bug都是要修复的,有时候可能由于时间关系或者这个bug对用户的影响非常小而修复的成本比较大,可能就会遗留到下个版本修复或者不修复21、简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试β测试静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。黑盒测试一般用来确认软件功能的正