第一篇:软件测试人力面问题
1、你的测试职业发展是什么?你自认为做测试的优势在哪里? 参考答案:
测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的要求自己,不断的更新自己改正自己,做好测试任务。
优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。
2、你为什么想离开目前的职务? 参考答案:
3、你对我们公司了解有多少? 参考答案:
4、你找工作时,最重要的考虑因素为何?
参考答案:工作的性质和内容是否能让我发挥所长,并不断成长。
5、为什么我们应该录取你? 参考答案:您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。
6、请谈谈你个人的最大特色。
参考答案:我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。
7、一个测试工程师应具备那些素质和技能? 参考答案:
8、您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
参考答案:
9、在您以往的测试工作中,最让您感到不满意或者不堪回首的事情是什么?您是如何来对待这些事情的? 参考答案:
10、在即将完成这次笔试前,您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)参考答案:
11、为什么选择测试这行? 参考答案:
它是一个新兴的行业,有发展潜力,而且很锻炼人,需要掌握更多的技能,比做开发要更难
为什么值得他们公司雇用?如果我雇用你,你能给部门带来什么贡献?
如果明知这样做不对,你还会依主管的指过去做吗
如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
你觉得什么样的人最难相处
为什么值得他们公司雇用?
帮助公司提高软件质量和测试部门的技术水平
如果我雇用你,你能给部门带来什么贡献?
分享我的测试经验和测试技能,提高测试部门技术水平
如何从工作中看出你是个自动自觉的人
自动自觉范围太广
1.工作成果
2.工作质量
12、你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
参考答案:
在有足够的资源和合理的工作量的情况下,完全可以按时完成,并能比一般人做的更好
13、通常你对于别人批评你会有什么样的反应 参考答案:有错即改,无错勉之
14、如果明知这样做不对,你还会依主管的指过去做吗? 参考答案:
15、如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理? 参考答案:
弄清楚客户为什么抱怨?是怎么样的问题?
如果是客服问题,提交客服部门解决
如果是质量问题,分析原因,下一版本改进
16、请就软件测试人员应该具备什么样的基本素质说说你的看法。参考答案:
17、你在五年内的个人目标和职业目标分别是什么? 参考答案:
分析这个问题是用来了解你的计划能力的,通过这个问题,面试人同时还可以知道你的目标是否符合企业对你的安排。
错误回答我想在将来的某个时候考虑这个问题。如今企业的领导者更换频繁,我认为做太多的个人计划是荒谬可笑的,不是吗?
评论这种回答属于令人反感的一类。首先,当有人想了解你的目标时,”将来的某个时候”这种通俗说法并不奏效。其次,认为企业很脆弱,领导者更换频繁,这种说法毫无疑问会令人反感,而且也是不合理的。最后,认为做计划可笑,看不起这个问题,而且反问面试人,这些都注定了这样的求职者最终会失败。
正确回答从现在起的五年之内,我希望能够在一个很好的职位上待几年,而且最好有一次晋升,然后就期待着下一步。不管是向上提升,还是在企业内横向调动,对我个人来说,我希望找到一家企业——一家愿意做相互投入的企业——待上一段时间。
评论这个问题没有回答得过分具体(那样可能会产生漏洞),而且它表明你有雄心,并且思考过在企业中的成长方式。通过表达横向调动和向上提升的愿望,表明你是一个有灵活性的人。
18、你怎样做出自己的职业选择? 参考答案:
分析 面试人提出这个问题是为了了解求职者的动机,看看他(她)应聘这份工作是否有什么历史渊源,是否有职业规划,是不是仅仅在漫无目的地申请很多工作。
错误回答 我一直都想在企业界工作。自孩提时代起,我就梦想自己至少也要成为大企业的副总裁。
评论 除了难以令人相信之外,这种回答还存在一个问题:它表明求职者会
对副总裁以下的职位不感兴趣。
正确回答 在上大学四年级前的那个夏天,我决定集中精力在某一领域谋求发展。尽管我是学商业的,但是我不知道自己最终会从事哪一行业的工作。我花了一定的时间考虑自己的目标,想清楚了自己擅长做的事情以及想从工作中得到的东西,最后我得出了一个坚定的结论,那就是这个行业是最适合我的。
评论 这种回答表明,求职者认真地做过一些计划,缩小了自己的关注点,而且也认准了前进的方向。这种回答还表明,求职者理解个人职业规划的重要性,并且有能力做出认真的个人决策。
如果您是测试组长,您会采取什么样的方式管理团队?在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
最佳答案
我会对成员的思想做一个较为全面的了解,分析项目的形势,当前的状况,未来的发展方向、目标,让每个成员都参与到项目的讨论中;人员的分配要合理,要能适应岗位的要求,明确其应有的岗位职责,根据能力高低来分配工作,对实位的奖惩要符合其岗位的重要程度;制定公司的规章制度,并严格执行,领导的激励也不可缺少。
提高沟通的效率和改善沟通的方法,首先要确定问题,这才是最重要的,也是对测试人员能力的挑战;然后是态度要和蔼,一定要知道开发的压力不比测试小;在提问题单前一定要有沟通(电话或邮件都可以),如果问题由于一些原因不修改(要经过项目经理确认),则就要发送确认邮件给开发相关人员,转发项目经理和更高层的领导!
维持测试人员同开发团队中其他成员良好的人际关系的关键是专业精神和态度,让其他人员感觉到我在项目中的重要性,同时也要让其他人员感觉和我在项目中工作是快乐的!
第二篇:软件测试面试问题
1.请自我介绍一下。
2.说说你以前公司的测试流程。必答题。主要结合自己的项目经验相信讲一个自己做过的项目,从立项到测试结束,当然侧重测试和自己所做的内容。这里面试官一般都会根据你说的再提问。
3.你是怎样做出自己的职业选择或者自己的职业规划。这题也经常问。可以从自己的优点说如何适合做软件测试,对与职业规划,我一般说在技术上往资深测试工程师发展。
4.你觉得自己作为测试工程的优势在哪里?你认为自己比你的同事优秀在哪里?也经常问,可以从性格出发,讲自己优点,以及在项目中表现,领导的良好评价等,总之“恰当”地往好处说,不要言过其实,让人怀疑你的人品哦。说说自己的缺点?这个也不好回答,最好能恰当地引申回答到优点上。
5.一个测试中不堪回首,或者让你很郁闷的事情。我被问到了,当时想不起来,后来想想可以讲一个项目中的失误及后果,然后讲自己如何去成功弥补及教训经验。我如果提前想一下就不会该说什么了。
6.你的好友是如何评价你的?你的项目组长是如何评价你的? 这类题也经常问。回答总要往好处说,但是你要自信地回答。
7.在成年后,哪些成绩给你带来最大程度的满足?蛮不错的题。记得我但是答的是第一次自己带一个小项目,顺利完成测试任务。
8.测试时你提交的bug被研发拒绝或者他认为不是问题,你如何处理?
9.测试与开发沟通如何提高效率和改善沟通效果?测试工程师的素质和技能?
10.你在压力下能工作的很好嘛?测试计划包括哪些?
11.你期望的薪水?根据自己能力和公司的大小,可以搜索下了解下情况。
12.个人职业发展(职业规划),这个很重要,几乎每个公司都会问的。
13.谈谈自己对软件测试的理解,包括测试的流程和应注意的地方是什么。
14.用过什么测试工具,分别讲讲他们的特点。
15.是否做过性能测试,怎样一个流程。
16.现场写一个测试用例,比如凳子,桌子,纸杯等。
17.你平时如何和开发人员沟通的,遇到解决不了的问题怎么办。
18.对于一个不懂测试的人,你如何解释它让别人能听的懂。
19.你们的绩效考核时怎么现实的。
20.你都用什么方法书写测试用例,分别举例说明。
第三篇:面试问题总结--软件测试
面试问题总结
1.在51testing你都学到了什么?
a.主要学习了软件测试的知识,包括测试的流程,测试的方法,测试用例,测试计划,及测试管理的工具QUALITY CENTER,自动化测试工具QTP
b.计算机编程的基础知识,包括 C语言,SQL Server,Linux
c.软件工程的知识,包括软件的生命周期,配置管理的知识SVN
2.测试计划包括什么内容?
测试目标,概述,测试对象,测试环境,测试版本,测试开始和结束日期,测试方法概
述,测试通过失败标准,测试挂起恢复标准,工作任务分配,工作量的统计,资源的分
配,应交付的最终工作产品。
3.测试报告包括什么内容?
测试环境,测试版本,测试对象,参与的人员,执行的测试用例,测试用例覆盖的功能
和性能点,bug质量分析,测试最终结果(通过,失败)。
4.缺陷管理流程是什么?
测试人员 new/open bug-测试经理—assign给开发经理—》开发经理asign给开
发人员—resolved 返回给测试人员—》测试人员验证后关闭或者re-open给开发人
员。
5.动/静态测试都包括什么活动?
静态测试,检查和测试时不用实际操作软件,只是静态的浏览和检查。静态测试的活
动包括 需求定义的静态测试,设计文档的静态测试,源代码的静态测试
动态测试,通过运行软件来检查软件的动态行为和运行结果的正确性。动态测试活动
包括 动态检查程序,动态检查输入输出数据。(黑盒子测试基本都是动态测试)
6.测试工作分为哪几个阶段?各阶段的测试重点在哪里?
测试工作分为 单元测试,集成测试,系统测试,验收测试。
单元测试主要是检查内部模块的代码逻辑。集成测试主要检查各个模块组装后的功能
以及模块间的接口是否正确。系统测试主要是把集成好的软件在实际的软硬件的测试
环境下运行,检查运行结果是否符合《需求规格说明书》。验收测试是测试时除了考
虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功
能等进行确认
7.测试环境包括什么内容?
包括软件环境(os,browser,其他必须的软件),硬件环境(计算机配置,打印机,扫描仪等等),测试数据,测试工具
8.缺陷的严重级别及优先级各有哪些?
优先级别:low, midium, high,very high,urgent.严重级别:极度严重,中等,一般,轻微
9.测试工程师应该具备哪些素质?
技术能力,沟通能力,耐心,细心,怀疑精神,发散思维,幽默感,很强的记忆能力。
10.测试用例包括哪些内容?
用例编号,测试项目,测试标题,用例的重要级别,预置条件,输入条件,操作步骤,预期输出。
11.Bug单包括哪些内容?
缺陷编号,标题,测试项目,严重级别,优先级别,预设条件,复现步骤,实际结果,期望结果
12.B/S和C/S结构的区别?
C/S结构,即Client/Server(客户机/服务器)结构,B/S即浏览器/服务器(browser/server)结构.(1)、硬件环境不同:C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间
再通过专门服务器提供连接和数据交换服务。B/S建立在广域网之上的,不必是专门的网络硬件环境,一般只要有操作系统和浏览器就行。
(2)、对安全要求不同:C/S一般面向相对固定的用户群,对信息安全的控制能力很强。
B/S建立在广域网之上,对安全的控制能力相对弱,面向是不可知的用户群。
(3)、对程序架构不同:C/S程序可以更加注重流程,可以对权限多层次校验,对系统运
行速度可以较少考虑。B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。
(4)、系统维护不同:C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升
级难,可能是再做一个全新的系统。B/S构件组成方面构件个别的更换,实现系统的无缝升级。系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。
(5)、处理问题不同:C/S程序可以处理用户面固定,并且在相同区域,安全要求高的需
求,与操作系统相关,应该都是相同的系统。B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的,与操作系统平台关系最小。
13.TCP/IP协议中三次握手是什么?
第一次握手:建立连接时客户端向服务器发送syn包同时进入syn_send状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户的syn包,同时向客户端发送syn包即syn+ack包,此时服务器进入syn+recv状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
14.黑盒/白盒测试各主要包括什么测试方法?
黑盒子测试:等价类划分法,边界值法,错误推测法,因果图法,判定表法。
白盒测试:条件判定法,语句覆盖法,判定覆盖法,判定条件覆盖法,路径覆盖法。
15.简单介绍下进销存系统的业务流。
进销存主要用于中小型物品流通企业,例如超市,卖场。用于物品的进购,销售,调度,库存,盘点的流程管理。
16.在进销存系统测试中你负责哪些模块以及在测试中用例设计是如何进行的?
系统实现的模块包括:入库管理,库存管理,出库管理,统计报表,会员管理,系统设置,账务管理。
我主要负责 入库管理模块,测试用例的设计方法主要是等价类,边界值,错误推测法。
17.现在主流的OS及浏览器都有哪些?他们的区别是?
OS: WINDOWS,LINUX,MAC
BROWSER: IE,FIREFOX,OPERA,SAFari 区别:内核不同,速度,性能
18.测试工作结束的标准时什么?
所有的功能点都测试通过并符合需求规格说明书;性能,易用性,等符合用户的要求 所有的bug已经关闭并回归测试通过
19.解释内存溢出及内存泄露
内存溢出就是运行软件时的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。
内存泄露指的是当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,那么对于该进程来说,会因此导致总可用内存的减少,这时就出现了内存泄漏
20.Web测试的测试点包括哪些?
界面测试:导航,图形,视频,音频,内容,表格,整体界面测试
功能测试:业务流程测试,链接测试,并发测试,session测试,cookie测试,url访问测试
性能测试:负载,容量,压力
兼容性测试:浏览器,插件
易用性测试:界面友好,使用方便
第四篇:谈谈软件测试面试问题[范文模版]
前段时间公司招聘软件测试人员,虽然基本上都是招的应届毕业生,但我还是从现实以及网络上找到了一些应聘软件测试/QA的面试问题集,当然这个也都不会有标准答案的,现在只是以偶的一点理解加上网上的一些内容列举出来供有需要的XDJM们作一下参考:
1.首先一般都是比较老套点的问题:介绍一下你的经历。
HOHO......这个问题我想谁都被问过吧,注意一下重点,不要紧张慢慢说就OK了。
2.老套话说了就可以马上切入正题了。根据你的经验说说你对软件测试/质量保证的理解?
这个就要仁者见仁、智者见智了,也基本上都是书上的东东,如果能有一些自己独特的想法那就最好啦,呵呵
3.理解完了那当然就要问一下是不是对软件测试了解啰。这就轮到问软件测试的流程是什么,你原先的公司又是怎么的流程了?
前面个问题也还是书本上的东西,一般介绍软测的书上都有,实际上国内一般的中小公司根本就达不到书上所说的那些个测试规范,测试流程也是如此,没办法,这就是现在我们整个大的测试环境,这个问题照着书上说的办就行了,后面那个知道该怎么做了吧,尽量把原来公司的测试流程言简意赅的表达出来。
4.接着问题就可以有一大堆了,这些问题很多都是要看自己的测试经验以及对测试的理解来作答了,如:(1)你对SQA的职责和工作活动(如软件度量)的理解:
SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要是可以要高层经理汇报以求问题的解决。通过这样的途径来预防缺陷的引入,从而减少后期软件的维护成本。SQA主要的工作活动包括制定SQA工作计划,参与阶段产物的评审,进行过程质量、功能配置及物理配置的审计等;对项目开发过程中产生的数据进行度量等等;
(2)说说你对软件配置管理的理解:
项目在开发的过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性能及风险的水平。软件的规模越大,配置管理就显得越重要。还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并且只有经过授权后才能变更这个标准。配置管理工具主要有CC,VSS,CVS等,偶只用过CVS,对其它的不熟悉
(3)怎样写测试计划和测试用例:
简单点,测试计划里应有详细的测试策略(测试方法等),合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。
(4)说说主流的软件工程思想(如CMM,CMMI,RUP,XP,PSP,TSP等)的大致情况以及你对它们的理解:
CMM:SW Capability Maturity Model 软件能力成熟度模型,其作用是用于软件过程的改进、评估及软件能力的评鉴
CMMI:Capability Maturity Model Integration 能力成熟度模型集成 CMMI融入了大部分最新的软件管理实践,同时弥补了SW-CMM模型中的缺陷
RUP:rational unified process 是软件工程化过程。它提供了在开发机构中分派任务和责任的纪律化方
法.它的目标是在可预见的日程和预算前提下确保满足最终用户需求的高质量产品,个人认为:它的核心观念是开发的迭代,每个公司可以根据自身的软件开发的流程和待开发项目的特点对RUP进行适当的剪裁,制定出符合自己的软件开发流程。
XP:extreme program,即极限编程的意思,适用于小型团队的软件开发,想上面第三个问题就可以结合原型法采用这样的开发流程。要明白测试对于xp开发的重要性,强调测试(重点是单元测试)先行的理念。编程可以明显提高代码的质量,持续集成对于快速定位问题很有好处。
PSP ,TSP 分别是个体软件过程(Personal Software Process),群组软件过程(Team Software Process)大家都知道,CMM只是告诉你怎么做但并没有告诉你如何做,所以PSP/TSP就是告诉你企业在实施CMM的过程中如何做,PSP强调建立个人技能(如何制定计划、控制质量及如何与其他人相互协作等等)而TSP着重于生产并交付高质量的软件产品(如何有效地规划和管理所面临的项目开发任务等等)
总之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。因此,软件过程框架应该是CMM/PSP/TSP的有机集成。
(5)对项目管理、白盒测试、单元测试、自动测试、性能测试、压力测试工具的了解程度和实际使用经验。(其实基本上也就是MI和Rational工具): 这个就要看个人的了,没法说了
(6)其它一些具体的技术知识(如各种计算机语言的了解程度、数据库等);
5.还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。
6.然后紧接着就基于目前中国的国情,大多数公司的软件项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?(大多数公司最想知道的就是在这种困难面前你该怎么保证软件的质量,因为这些公司一般就是这种情况-----既不想投入过多又想保证质量,faint
出现以上的情况,如果仅仅想通过测试来提高软件质量,那几乎是不可能,原因是没有足够的时间让你去测试,少而不规范的文档导致测试需求无法细化何谈足够且有针对性进行测试。所以,作为公司质量保证的你应该先后项目经理确定符合项目本身最适合的软件生命周期模型(比如RUP的剪裁,原型法),明确项目的开发流程并督促项目组按照此流程开展工作,所有项目组成员(项目经理更加重要)都要制定出合理的工作计划,加强代码的单元测试,在客户既定的产品交付日期范围之内,进行产品的持续集成等等,如果时间允许可以再配合客户进行必要的系统功能测试。
7.差不多了就该问一些只和软件测试相关的问题了,如:
(1)你觉得怎样才能做一个(或者,怎样才能算一个)优秀的测试工程师?(faint,这个问题好像是必问的,答案也无非是什么要求全面的技术能力、缜密的逻辑思维、出色的沟通能力、还要有怀疑精神、幽默感、洞察力等等。啥叫优秀啊?该有的能力都有,不该有的也有,而且个个能力还都是出色的,这就是优秀,呵呵,开玩笑的,反正这个问题差不多就这样,具体的什么要求网络上也到处都有。
(2)还有其它的如对自己优缺点的评价、自己的职业理想、为何离开上一家公司、自己在职业生涯中印象)最深的事情、能否出差和加班、能否承受压力和挑战、薪水要求、何时能到岗等等这些啥面试都要回答的问题,这个就只能自己斟琢着办了。
(3)另外还有一个重要的问题就是语言能力啦,尤其是英语水平,这个的话每个具体的公司都有不同的要求,也就没啥好说的了。
差不多基本上就是这些了,如果有需要的可以有针对性的google一下,hoho...仅供参考!
第五篇:软件测试(推荐)
一、简答5*6’
1.为什么不让时间有余的人做测试工作
表面上看这体现了管理的效率和灵活性,但实际上也体现了管理者对测试的轻视。测试和测试的人有很大关系。测试工作人员应该是勤奋并富有耐心,善于学习、思考和发现问题,细心有条理,总结问题,如果具备这样的优点,做其它工作同样也会很出色,因此这里还有一个要求,就是要喜欢测试这项工作。2.软件测试风险主要体现在哪里
我们没有对软件进行完全测试,实际就是选择了风险,因为缺陷极有可能存在没有进行测试的部分。因此,我们要尽可能的选择最合适的测试量,把风险降低到最小 3.所有软件测试缺陷都需要修复吗
从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的软件缺陷。测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复。发生这种现象的主要原因如下:-没有足够的时间资源。在任何一个项目中,通常情况下开发人员和测试人员都是不够用的,而且在项目中没有预算足够的回归测试时间,修改缺陷可能引入新的缺陷。
-有些缺陷只是特殊情况下出现,这种缺陷处于商业利益考虑,可以在以后升级中进行修复。-不是缺陷的缺陷。我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理。缺陷是否修改要由软件测试人员、项目经理、程序员共同讨论来决定是否修复,不同角色的人员从不同的角度来思考,以做出正确的决定。4.如何减少测试人员跳槽带来的损失 建议我们从以下两个方面做起:
-加强部门内员工之间的互相学习,互相学习是建立学习型组织的基本要求,是知识互相转移的过程。在此基础上,可以把个人拥有的技术以知识的形式沉积下来,也就完成了隐性知识到显性知识的转化。
-管理者就应该把员工的个人成长和企业的发展联系起来,为员工设定合理发展规划并付诸实现。
5.验收测试的注意点有哪些 测试要注意下面的事项:
(1)用户现场测试不可能测试全部功能,因此要测试核心功能。这需要提前做好准备,这些核心功能一定要预先经过测试,证明没有问题才可以和用户共同进行测试。测试核心模块的目的是建立用户对软件的信心。当然如果这些模块如果问题较多,不应该进行演示。(2)如果某些模块确实有问题,我们可以演示其它重要的业务功能模块,必要时要向用户做成合理的解释。争得时间后,及时修改缺陷来弥补。(3)永远不能欺骗用户,蒙混过关。6.完全测试程序是可能的吗
实际上完全测试是不可能的。主要有以下原因:-完全测试比较耗时,时间上不允许;
-完全测试通常意味着较多资源投入,这在现实中往往是行不通的;-输入量太大,不能一一进行测试;-输出结果太多,只能分类进行验证;-软件实现途径太多;
-软件产品说明书没有客观标准,从不同的角度看,软件缺陷的标准不同;因此测试的程度要根据实际情况确定 7.是不是发现的缺陷越多就说明软件缺陷越多 其中的原因主要如下:
-代码复用、拷贝代码导致程序员容易犯相同的错误。类的继承导致所有的子类会包含基类的错误,反复拷贝同一代码意味可能也复制了缺陷。-程序员比较劳累是可以导致某些连续编写的功能缺陷较多。
“缺陷一个连着一个”不是一个客观规律,只是一个常见的现象。如果软件编写的比较好,这种现象就不常见了。测试人员只要严肃认真的测试程序就可以了。8.软件测试就是QA吗
软件测试人员的职责是尽可能早的找出软件缺陷,确保得以修复。而质量保证人员(QA)主要职责是创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷。测试人员的主要工作是测试,质量保证人员日常工作重要内容是检查与评审,测试工作也是测试保证人员的工作对象。软件测试和质量是相辅相成的关系,都是为了提高软件质量而工作。9.测试产品和测试项目区别
习惯上把开发完成后进行商业化、几乎不进行代码修改就可以售给用户使用的软件成为软件产品,也就是可以买“卖拷贝”的软件,软件项目是一种个性化的产品,可以是按照用户要求全部重新开发,也可以修改已有的软件产品来满足特定的用户需求。项目和产品的不同特点,决定我们测试产品和测试项目仍然会有很多不同的地方:
-质量要求不同。通常产品的质量要高一些,修复发布后产品的缺陷成本较高,甚至会带来很多负面的影响。而做项目通常面向某一用户,虽然质量越高越好,但是一般只要满足用户要求就可以了。测试资源投入多少不同。做软件产品通常是研发中心来开发,进度压力要小些。同时由于质量要求高,因此会投入较多的人力、物力资源。项目最后要和用户共同验收测试,这是产品测试不具有的特点。此外,测试产品与测试项目在缺陷管理方面、测试策略制定都会有很大不同,测试管理者应该结合具体的环境,恰如其分的完成工作 10.如何编写提交给用户的测试报告
测试报告一般分为内部测试报告和外部测试报告。内部报告是我们在测试工作中的项目文档,反映了测试工作的实施情况,一般外部测试报告要满足下面几个要求:
根据内部测试报告进行编写,一般可以摘录;不可以向客户报告严重缺陷,即使是已经修改的缺陷,开发中的缺陷也没有必要让客户知道;报告上可以列出一些缺陷,但必须是中级的缺陷,而且这些缺陷必须是修复的;报告上面的内容尽量要真实可靠;整个测试报告要仔细审阅,力争不给项目带来负面作用,尤其是性能测试报告。总之,外部测试报告要小心谨慎的编写。
二、论述2*12’
1.请论述为什么要进行软件测试,并列举历史上2~3个著名软件测试(缺陷)案例,说明测试重要性
软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望做的事情(,另一方面是确认软件以正确的方式来做了这个事情。第二是提供信息,比如提供给开发人员或程序经理的回馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件软件产品本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此,软件测试的第三个目的是保证整个软件开发过程是高质量的。
爱国者导弹防御系统把“枪口”对准了自己人 美国迪斯尼公司的狮子王游戏软件的兼容性问题 售票系统性能问题
2.论述软件测试科学的发展历程 1957年之前-调试为主 20世纪50年代,计算机刚诞生不久,只有科学家级别的人才会去编程,需求和程序本身也远远没有现在这么复杂多变,相当于开发人员一人承担需求分析,设计,开发,测试等所有工作,当然也不会有人去区分调试和测试。
1957–1978-证明为主 当时计算机应用的数量,成本和复杂性都大幅度提升,随之而来的经济风险也大大增加,测试就显得很有必要了,这个时期测试的主要目就是确认软件是满足需求的,也就是我们常说的“做了该做的事情”。
1979–1982-破坏为主 我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。
1983–1987-评估为主 人们提出了在软件生命周期中使用分析,评审,测试来评估产品的理论。软件测试工程在这个时期得到了快速的发展.1988–至今-预防为主 预防为主是当下软件测试的主流思想之一。测试不是在编码完成后才开始介入,而是贯穿于整个软件生命周期。3.论述软件缺陷的由来
软件缺陷的产生主要是由软件产品的特点和开发过程决定的。
软件本身:①需求不清晰,导致设计目标偏离客户的需求,从而引起功能或产品特征上的缺陷。②系统结构非常复杂,而又无法设计成一个很好的层次结构或组件结构,结果导致意想不到的问题或系统维护、扩充上的困难;即使设计成良好的面向对象的系统,由于对象、类太多,很难完成对各种对象、类相互作用的组合测试,而隐藏着一些参数传递、方法调用、对象状态变化等方面问题。③对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误。④对一些实时应用,要进行精心设计和技术处理,保证精确的时间同步,否则容易引起时间上不协调,不一致性带来的问题。⑤没有考虑系统崩溃后的自我恢复或数据的异地备份、灾难性恢复等问题,从而存在系统安全性、可靠性的隐患。⑥系统运行环境的复杂,不仅用户使用的计算机环境千变万化,包括用户的各种操作方式或各种不同的输入数据,容易引起一些特定用户环境下的问题;在系统实际应用中,数据量很大。从而会引起强度或负载问题。⑦由于通信端口多、存取和加密手段的矛盾性等,会造成系统的安全性或适用性等问题。⑧新技术的采用,可能涉及技术或系统兼容的问题,事先没有考虑到。
团队工作:系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存在一些困难。不同阶段的开发人员相互理解不一致。对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通。项目组成员技术水平参差不齐技术问题。算法错误:在给定条件下没能给出正确或准确的结果。语法错误:对于编译性语言程序,编译器可以发现这类问题;但对于解释性语言程序,只能在测试运行时发现。计算和精度问题:计算的结果没有满足所需要的精度。系统结构不合理、算法选择不科学,造成系统性能低下。接口参数传递不匹配,导致模块集成出现问题。
项目管理的问题:缺乏质量文化,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试、等时间,遗留的缺陷会比较多。系统分析时对客户的需求不是十分清楚,或者和用户的沟通存在一些困难。开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;周期短,还给各类开发人员造成太大的压力,引起一些人为的错误。开发流程不够完善,存在太多的随机性和缺乏严谨的内审或评审机制,容易产生问题。文档不完善,风险估计不足等。4.软件测试V模型
①绘制示意图
②阐述每个步骤是做什么 需求分析
即首先要明确客户需要的是什么,需要软件作成什么样子,需要有那几项功能
概要设计
主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。详细设计
对概要设计中表述的各模块进行深入分析,对各模块组合进行分析等。软件编码
按照详细设计好的模块功能表,编程人员编写出实际的代码。单元测试
按照设定好的最小测试单元进行按单元测试,主要是测试程序代码,为的是确保各单元模块被正确的编译,单元的具体划分按不同的单位与不同的软件有不同。集成测试
经过了单元测试后,将各单元组合成完整的体系,主要测试各模块间组合后的功能实现情况,以及模块接口连接的成功与否,数据传递的正确性等,其主要目的是检查软件单位之间的接口是否正确。根据集成测试计划,一边将模块或其他软件单位组合成系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。系统测试
经过了单元测试和集成测试以后,我们要把软件系统搭建起来,按照软件规格说明书中所要求,测试软件其性能功能等是否和用户需求相符合,在系统中运行是否存在漏洞,等。验收测试
主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到符合效果的。