软件测试面试大全.docx
- 文档编号:3750083
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:27
- 大小:42.56KB
软件测试面试大全.docx
《软件测试面试大全.docx》由会员分享,可在线阅读,更多相关《软件测试面试大全.docx(27页珍藏版)》请在冰豆网上搜索。
软件测试面试大全
面试
网络协议(udp)、
网络协议的定义:
为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。
为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。
当然,对于不相容终端,除了需变换字符集字符外。
其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。
alpha测试和beta测试
Alpha测试是用户在开发环境下的测试,或者是开发内部的用户在模拟实际环境下的测试;
Beta测试是由软件的一个或多个用户在实际使用环境下进行的测试;
两者区别:
Alpha测试由开发人员或测试人员在场,可随时记录下错误和使用中出现的问题;
Beta测试开发人员和测试人员都不在场
大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。
Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。
目的是评价软件产品的功能、可使用性、可靠性、性能和支持。
尤其注重产品的界面和特色。
Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
有关的手册(草稿)等应该在Alpha测试前准备好。
Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。
在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。
Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。
只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。
由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。
由于Alpha和Beta测试的组织难度大,测试费用高,测试的随机性强、测试周期跨度较长,测试质量和测试效率难于保证,所以,很多专业软件可能不再进行Beta测试。
随着测试技术的提高,以及专业测试服务机构的大量涌现,很多软件的Beta测试外包给这些专业测试机构进行测试。
白盒和黑盒
白盒测试:
是通过程序的源代码进行测试而不使用用户界面。
这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。
黑盒测试:
又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试,而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。
测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。
、
sql、
内存调度
、遍历、
链表、
语句覆盖法
、linux常用命令(chmod);
给你一个模块,你会怎么样设计与执行测试;
如何测试注册模块
一、判断题(每题1分,共12分,正确的T,错误的F)
1.软件需求是度量软件质量的基础。
不符合需求的软件就不具备质量。
(T)
2.全面质量管理的定义是:
一个组织以质量为中心,以全员参与为基础,目的在于通过让顾客满意和本组织所有成员及社会受益而达到长期成功的管理途径。
(T)
3.发现错误是软件测试的唯一目的。
(F)
4.白盒测试可以找出软件遗漏功能和代码错误问题。
(F)
5.软件的质量有测试组决定。
(F)
6.在设计测试用例时,应包括合理的输入条件和不合理的输入条件。
(T)
7.测试从不可知内部条件开始,结果是不可预见的。
(F)
8.软件缺陷一定是由编码所引起的.。
(F)
9.软件测试等于程序测试。
(F)
10.Beta测试是软件的多个用户在实际使用环境下进行的测试。
(T)
11.经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。
(T)
12.验收测试比较适合采用软件自动化测试工具进行测试。
(F)
二、单项选择题(每题2分,共12分)
1.某次程序调试没有出现预计的结果,下列(B)不可能是导致出错的原因。
A.变量没有初始化 B.编写的语句书写格式不规范
C.循环控制出错 D.代码输入有误
2.软件测试是软件开发过程的重要阶段,是软件质量保证的重要手段,下列哪个(些)是软件测试的任务?
(B)
A预防软件发生错误 B发现改正程序错误 C提供诊断错误信息 D.都是
3.下面的哪一项测试步骤中需要进行局部数据结构测试:
(A)
A.单元测试 B.集成测试 C.确认测试 D.系统测试
4.白盒测试是根据程序的(C)来设计测试用例
A.功能 B.性能 C.内部逻辑 D.内部数据
5.(C)方法根据输出对输入的依赖关系设计测试用例。
A.路径测试 B.等价类 C.因果图 D.归纳测试
6.有一组测试用例,它使被测程序中的每一个分支至少执行一次,它满足的覆盖标准是:
(B)
A.语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖
三、问答题(每题9分,共54分)
2.怎样做好文档测试?
文档测试:
是检查用户文档(如需求、用户手册、安装手册等)的正确性、清晰性和精确性,检验文档是否和实际应用存在的差别。
对用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。
对文档的测试一般从正确性、完备性和易理解性几个方面去测试,具体包括以下内容:
(1)检查产品说明书属性、
(2)检查是否完整、(3)检查是否准确、(4)检查是否精确、(5)检查是否一致、(6)检查是否贴切、(7)检查是否合理、(8)检查代码无关、(9)检查可测试性。
3.请简要描述几种主要的软件测试模型。
6.什么是黑盒测试?
黑盒测试主要采用的技术有哪些?
黑盒测试是一种从用户角度出发的测试,又称为功能测试,他把被测试的程序看做一个黑盒子,忽略程序内部的结构特征,依靠程序功能需求规格说明书,在只知道程序功能的情况下确定测试用例。
等价划分法,因果图法,边界值法,正交表法。
1.根据你的经验说说你对软件测试/质量保证的理解?
测试是保证软件质量的最后一道关口,是一种迫不得已的行为。
软件产品质量的保证是软件项目管理的一个重要内容。
软件项目的目标不仅仅是进度目标和成本目标,更重要的就是质量目标,质量直接决定了软件产品能否生存已经后续的升级和维护等工作量。
软件测试是软件质量保证工作的一个活动。
即软件测试是软件质量保证工作的一个子集。
软件质量保证工作包括:
评审,配置管理、风险管理、测试、建立标准、进行度量等一系列活动
软件测试对于软件设计来说是很重要的一个环节,它涵盖了软件的全部细节,比如软件的实用性,操作性,稳定性,还有安全性,简便性等等.可以说没有经过详细的测试的软件绝对不会成为一个优质的软件.要保证软件质量,必须要保证有严格的软件测试过程~
一个东西的好坏总是和出厂检测关数有关的。
检测越是严格,这个产品在市场上表现的质量就越好。
这是成比例的。
2.软件测试的流程是什么,你原先的公司又是怎么的流程?
1.需求:
阅读需求,理解需求,与客户、开发、架构多方交流,深入了解需求。
--testingteam
2.测试计划:
根据需求估算测试所需资源(人力、设备等)、所需时间、功能点划分、如何合理分配安排资源等。
---testingleaderortestingmanager
3.用例设计:
根据测试计划、任务分配、功能点划分,设计合理的测试用例。
---testingleader,seniortester
4.执行测试:
根据测试用例的详细步骤,执行测试用例。
--everytester(主要是初级测试人员)
5.执行结果记录和bug记录:
对每个case记录测试的结果,有bug的在测试管理工具中编写bug记录。
--everytester(主要是初级测试人员)
6.defecttracking:
追踪leader分配给你追踪的bug.直到bugfixed。
--everytester
7.测试报告:
通过不断测试、追踪,直到被测软件达到测试需求要求,并没有重大bug.
8.用户体验、软件发布等……
4.说说你对软件配置管理的理解
项目在开发的过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性能及风险的水平。
软件的规模越大,配置管理就显得越重要。
还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并且只有经过授权后才能变更这个标准。
配置管理工具主要有CC,VSS,CVS等,偶只用过CVS,对其它的不熟悉
5.怎样写测试计划和测试用例:
简单点,测试计划里应有详细的测试策略(测试方法等),合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。
8.还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。
当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。
1、测试很枯燥你怎么调节自己?
答:
对我来说,测试并不枯燥,我会认真的对每个项目都进行测试,因为每个项目都有它不同的地方,比天天打字的打字员好多了..如果我觉得枯燥了,我会想想其他的事情,放松自己的情绪,以达到调节的目的.因为工作,不管什么工作,都会有枯燥的一面.
2、测试能给你带来什么样的快乐?
答:
测试可以给我带来很多快乐,如果测试出一个项目缺少东西,我会很高兴,因为我对自己的工作有了新的认识,也为公司做了效益;如果测试出一个项目没有问题,我也很高兴,因为同事们都在努力,大家都希望为公司做贡献,这就是一个很强大的团队,这是一件多么另人振奋的事情啊!
3、软件测试的目的?
答:
测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。
4、需求文档测试:
主要测试需求中是否存在逻辑矛盾以及需求在技术上是否可以实现;
设计文档测试:
测试设计是否符合全部需求以及设计是否合理。
5、什么是软件测试?
答:
软件测试是为了发现错误而执行程序的过程。
或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
软件测试在软件生存期中横跨两个阶段:
通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。
模块的编写者与测试者是同一个人。
编码与单元测试属于软件生存期中的同一个阶段。
在这个阶段结束之后,对软件系统还要进行各种综合测试,这是软件生存期的另一个独立的阶段,即测试阶段,通常由专门的测试人员承担这项工作。
6、白盒测试有哪几种方法?
答:
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
1.什么是回归测试?
怎样知道新引入的变化没有给现有的功能造成破坏?
【参考答案】由于软件修改或变更,对修改后的工作版本所有可能影响的范围进行的测试,就是回归测试。
回归测试的目的是发现原来正常的功能特性出现新的问题——回归缺陷,从而确保原来正常的或符合要求的特性,不受其它区域修改的影响。
回归测试,伴随着测试过程,单元测试、集成测试和系统测试中,一旦有变更或修正,都要进行相应的回归测试。
通过代码查看或代码评审,可以基本知道新引入的变化是否会给现有的功能造成影响,但不能确定,所以需要进行回归测试。
2.如果业务层和数据层之间有依赖关系,你该怎么写单元测试?
【参考答案】
在JAVA中,如果业务层与数据层之间有依赖关系,也就是说业务处理不单纯,这时我们一般用Mock对象来模拟所需要的数据,来进行单元测试。
简单地说mock就是模型,模拟测试时需要的对象及测试数据。
这类测试工具有MockObjects、Xdoclet、EasyMock、MockCreator、MockEJB、ObjcUnit、jMock等
比如,用过Struts的都知道,Struts中的action类要运行必须依靠服务器的支持,只有服务器可以提供HttpServletRequest,HttpServletResponse对象,如果不启动服务器,那么就没有办法对action类进行单元测试,而借助mock,可以完成struts的Action的测试。
对业务层测试可以用Mock来模拟,而对数据层如何测试?
有两种方法:
使用Mock对象来测试DAO。
它屏蔽了具体的关系数据库,它的优点是测试代码的编写方便,可以快速运行。
缺点:
风险太大,对数据层测试的力度太小,屏蔽了很多与数据库相关的问题,比如:
对象和数据库表之间映射,查询语句的语法是否正确。
直接在关系数据库中测试。
优点:
能对数据层进行完整的测试。
缺点:
单元测试运行速度太慢,要频繁的对数据库进行操作
还可以参考下列文章:
如何对数据源层进行单元测试
4.在产品部署之后,你最常碰到的是什么类型的问题?
【参考答案】产品部署之后,容易碰到的问题是安装配置上不对,测试环境和实际运行环境总是存在差异。
其次,出现的问题,可能是系统稳定性问题、性能问题,可能由于脏数据、传输中的异常数据和大数据量等引起。
5.什么是代码覆盖率?
有多少种代码覆盖率?
【参考答案】当我们想了解测试是否充分、是否有些地方没被测试过,就需要对所有测试过的地方有所了解,也就是了解测试的覆盖程度。
测试越充分,测试的覆盖程度越高,产品的质量就越能得到保证。
这种程度的量化就是测试覆盖率,即测试覆盖率是用来衡量测试完成程度、或评估测试活动覆盖产品代码的一种量化的结果,评估测试工作的质量,也是产品代码质量的间接度量方法。
如果用公式描述的话,可以看作“测试过程中已验证的区域或集合”和“要求被测试的总的区域或集合”的比值。
基于代码的测试覆盖评测是对被测试的程序代码语句、代码块、类、函数(方法)、路径或条件的覆盖率分析。
如果应用基于代码的覆盖率分析,一般需要借助工具(如IBMRationalPureCoverage、BullseyeCoverage、开源Clover、EMMA、Cobertura和NoUnit等)来执行。
代码覆盖率工具BullseyeCoverage
使用emma测量测试覆盖率
6.功能测试和探索性测试的区别是什么?
你怎么对网站进行测试?
【参考答案】这个题目本身有问题,把“功能测试”和“探索性测试”比较不合理。
功能测试中包含了“按已完成的测试用例或已计划的测试大纲等进行测试”和“探索性测试”,而探索性测试一般也是为了发现功能中的问题,虽然探索性测试还会涉及安全性测试、性能测试等。
功能测试方法中包括等价类划分、边界值分析、因果图、决策表、正交试验法等,也包括错误猜测法,错误猜测法也可归为探索性测试。
探索性测试,也可以称随机测试(ad-hoctest),充分发挥测试人员最大的灵动性、创造性,进行各种猜测和试探,去发现一些相对隐藏比较深或偏僻的软件缺陷。
随机(ad-hoc)测试,也可作为一种重要的测试辅助手段,以帮助测试人员尽早地熟悉产品,发现测试用例的不足,添加或改进测试用例。
我的书《全程软件测试》对它们做了充分讨论。
对网站进行测试时,不仅要做好功能测试,包括功能的逐项验证、针对功能的负面测试、探索性测试等,还要进行安全性测试、性能测试、UI适用性测试等。
7.测试套件、测试用例、测试计划,这三者之间的区别是什么?
你怎么组织测试?
【参考答案】测试用例(testcase)是为了更有效地发现缺陷而设计的、可以独立地执行的最小测试单元。
测试套件(testsuite)是为了完成某个测试目标或任务而组织的若干个测试用例的集合。
测试计划(testplan)是对测试活动的事先策划,包括确定测试范围、估算测试工作量、识别测试风险、安排资源和进度等。
测试计划指导测试用例的设计和测试套件的创建,测试套件是由测试用例构成。
测试计划的实施需要借助测试用例、测试套件来实现。
组织测试,简单地说就是计划测试->设计测试用例->创建测试套件->执行测试套件(转化为执行测试用例)->测试结果分析和评估->调整测试计划-> ……详细参见《全程软件测试》
8.要对电子商务网站做冒烟测试,你会做哪些类型的测试?
【参考答案】冒烟测试(smoketest)这个名称的来历,大概是从电路板测试得来的。
因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其它测试,否则就退回去。
软件中的冒烟测试就是在每日构建(dailybuild)软件包后,对系统的基本功能进行快速的测试,以验证基本功能是否能正常运行。
如果有问题,就打回开发部门;如果正常运行,说明软件包构建成功,接下来就可以进行常规测试或大规模测试。
对电子商务网站做冒烟测试,包括基本功能测试和性能测试。
基本功能测试可以完成一个交易的完整过程,即从系统登录->商品查询->选择商品-> 提交订单->确认-> 付款 ->结算等。
9.客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生?
【参考答案】客户可能发现功能或界面设计和他预想的不一致、或者会发现有些功能的操作不是很方便、或者发现一些错别字等各种缺陷。
针对不同的问题,有相应的一些办法,概括起来就是和客户进行充分沟通,真正理解客户的需求,和客户的理解达成一致。
其次,在开发期间,还可以邀请客户参与软件设计规格说明书、测试计划、测试用例等的评审,当软件能基本正常工作时再次邀请客户从头到尾再看一遍(productwork-through)。
最后,就是开发人员和测试人员做好自己的本质工作,构建高质量的软件,进行充分的测试。
笔试题:
0.什么是软件测试?
答:
依据软件需求规格和测试用例,使用人工和自动化的手段,来测试软件系统的过程。
其目的在于检验它是否满足规定的需求
或是确认预期结果与实际结果之间的差别。
要点:
两个依据、两个手段、一个对比。
1.缺陷等级的划分:
六级划分:
等级 名称 定义
P1 严重缺陷 应用系统崩溃或系统资源使用严重不足
P2 较严重缺陷 系统因软件严重缺陷导致 重要业务流程错误、重要计算错误、重要交易错误、
服务程序频繁重启、后台服务响应不及时等问题
P3 一般性缺陷 系统因软件一般缺陷导致使用障碍、数据来源错误、结果错误、初始化错误等问题
P4 较小缺陷 系统因软件操作不便方面缺陷
P5 其他缺陷 系统辅助功能缺陷
P6 建议、优化类建议优化类
四级划分:
致命(A):
1.由于程序所引起的死机,非法退出
2.死循环
3.数据库发生死锁
4.因错误操作导致的程序中断
5.功能错误
6.与数据库连接错误
7.数据通讯错误
严重(B):
1.程序错误
2.程序接口错误
3.数据库表、业务规则、缺省值未曾加完整性等约束条件
一般(C):
1.操作界面错误,包括数据窗口内列名定义、含义是否一致
2.打印内容、格式错误
3.输入限制未在前台进行控制
4.删除操作未给出提示
5.数据库表中有过多的空字段
提示或建议(D):
1.界面不规范
2.辅助说明描述不清楚
3.输入输出不规范
4.长操作未给用户提示
5.提示窗口文字未采用行业术语,文字有歧义、标点符号错误
6.可输入区域和只读区域没有明显的区分标志
2.Oracle数据库索引、存储过程、外连接?
3.排序算法有哪些?
请写出一种排序算法的实现。
4.测试人员在需求阶段应做哪些工作?
首先,测试用例和测试工作本身是不断完善的,在开发过程的初期,可以认为是需求阶段,或者没有规范需求工作的设计阶段。
如果有一个比较明确的需求文档,可以在这个阶段检查完了需求文档以后开始设计测试用例。
这里,对于需求文档的检查主要是两个方面:
1.检查需求文档描述的正确性,愚以为测试人员要对于真实的系统所涉及的业务非常熟悉,比如一个简单的财务软件,那么测试人员本身
就要对会计工作熟悉,财务制度熟悉,在检查需求文档的时候不要迷信所谓的“都是用户真实的需求”,这里存在两个问题,一是用户是否
真的能正确地描述自己的需求,二是需求人员是否真的能正确地理解需求。
另外,还有一个用户的嘘气是否符合行业规范的问题,如果不符
合,那么是否要确认—这里存在一个隐患,用户可能会在开发的后期突然要求他们自己要走行业规范,让你的需求变动,所以要事先明确好。
2.检查需求文档描述的准确性。
主要是考虑文档中是否存在描述的模糊的地方,对于自己不清楚的问题一定要明确。
这个时候是要保证需求的
可测试性—意思是说保证需求是可以完全为测试工作服务的。
那么在检查完了需求之后,就可以开始设计测试用例了,在这个阶段因为
没有开始设计工作,所以对于测试用例的考虑不能仅仅从界面出发—虽然RUP中对于用例的要求有这一项。
因而测试用例的设计应该从业务
角度出发,从实际业务出发来设计测试用例。
当然,在测试用例的描述时,要尽量考虑怎样同应用程序脱离开而仍然具有有效性。
当然,这个
阶段所实现的测试用例是不过完善的,只能涵盖某些内容,但是我认为这些用例不仅仅全部都是功能测试用例,而且在整个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 面试 大全