1、1、 启动Windows的记事本,输入“联通”后保存至a.txt然后关闭记事本。再次打开记事本看看出现了什么变化,这是软件缺陷吗?为什么?答:启动Windows的记事本,输入“联通”后保存至a.txt然后关闭记事本。再次打开记事本发现变成了其他字符,这是一个bug,因为只要实际结果和用户需求不一致的都可以称作bug。原因:当txt文档中一切字符都在 C0AADF 80BBBF 这个范围时,notepad都无法确认文档地格式,没有自动依照UTF-8格式来Display。 而联通就是C1 AA CD A8,刚好在上面地范围内,所以不能正常显现。记事本默认是以ANSI编码保存文本文档的,而正是这种编
2、码存在的bug招致了上述怪现象。假如保存时选择Unicode、Unicode(big endian)、UTF-8编码就正常了。此外,假如以ANSI编码保存含有某些特别符号的文本文档,再次打开后符号也会变成英文问号。2、 什么是软件测试,软件测试的目的是什么?答:正向思维:从软件质量保证的角度看:软件测试是用以评价一个程序或系统的特性或能力并确定是否达到预期的结果的一系列活动。从是否满足软件需求角度:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别”。逆向思维:从寻找错误的角度:“软件测试是为了发现错误而针对某个程序或
3、系统的执行过程”。、软件测试最终目的:测试是程序的执行过程,目的在于发现错误;测试的目标就是检查系统是否满足需求。说到底,软件测试不是目的,而是手段,通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,从而确保软件产品的质量。3、 为什么不可能完全测试程序?答:除了极短小的程序,完全测试需要太多的输入、输出和分支组合。此外软件说明书并没有客观标准。从不同的角度看,软件缺陷的标准不同。4、为什么错误不能完全修复?答:1、没有足够的时间;2、不算是真正的软件缺陷,在某些特殊场合,错误理解、测试错误或者说明书变更会把软件缺陷当作附加功能来对待。
4、3、修复的风险太大。4、不值得修复。不常出现的软件缺陷和在不常用功能中出现的软件缺陷是可以放过的;可以躲过和用户用办法预防或者避免的软件缺陷通常不用修复。这些要归结为商业风险决策。5、软件测试的基本原则有哪些?答:1、所有的测试都应追溯到用户的需求;2尽早地和不断地进行软件测试;3、完全的测试不可能;4、并非所有的错误都能修复;5、测试用例中一个必需部分是对预期输出或结果的定义;6、Pareto原则:测试发现的错误中80%很可能起源于20%的模块中。应孤立这些疑点模块重点测试;7、注意测试中的群集现象;8、程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成;9、设计周密
5、的测试用例;设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况;10、回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见;11、对每一个测试结果作全面的检查,确认Bug的有效性,对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析;12.严格执行测试计划,排除测试的随意性,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试;13.妥善保存测试计划,测试用例,出错统计和最终分析报告等一切测试
6、过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。6、分析为什么需求分析说明书通常是软件产品中制造软件缺陷的最大来源?答:所有的测试都应追溯到用户的需求,而软件需求规格说明书就是后期开发与测试的重要依据,它描述了系统应该具有哪些功能/不应该具有哪些功能/功能的操作性如何/性能如何等等具体规格。“正确的输入,正确的过程,正确的解决方案将会产生正确的结果”, 如果一开始输入就不正确, 那么经过过程的处理后, 缺陷/错误会被放大,同时修复的成本会显着上升, 人力物力时间将会被大量耗费。用户与开发小组的沟通存在理解正确性问题;需求规格说明书的表达存在准确性等问题;需求是否完整,是否不断更改等因
7、素。7、请你对比下面的针对同一软件进行测试后两幅图形输出,说说你对这个软件质量的看法:软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤,是为了发现故障而执行程序的过程。软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试目的是保证整个软件开发过程是高质量的。从图一中可以看出,随着时间的不断推进,软件错误的数量越来越多,也就说明软件开发过程存在问题。而图二中随着时间的推进,软件测试发现的错误数目越来越少,软件质量相对稳定。对比两幅图:采用不同的测试策略对同一软件
8、进行软件测试,最后对软件质量的影响却很大,说明合适的软件测试可以尽早的发现软件开发过程中的问题,尽早修复,从而保证整个软件开发过程的质量,从而说明软件测试的重要性。思考:1. 软件测试如何分类?答:一、,按是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。而动态测试则通过运行被测试软件来达到目的。 二、按阶段划分:1 单元测试: 单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件,基本组成单位的正确性。2 集成测试集成测试是在软件系统
9、集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。3 系统测试系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。 4 验收测试验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。5 回归测试回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。6 Alpha 测试:在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。7
10、Beta 测试:当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。三、按测试方法划分:1白盒测试,也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。2 黑盒测试,是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知
11、产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息3、灰盒测试,介于白盒测试与黑盒测试之间,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取灰盒测试 2. 谈谈你对软
12、件测试职业的理解?答:软件测试员的目标:发现潜在的软件缺陷,尽可能早一些,并确保其得以修复。从事软件测试职业的人员应具有责任心,具有创造性,具有坚持不懈的精神,具备判断准确的能力,具有很好的与人沟通能力,应该尽可能地追求完美,应当成为一个很好的故障排除专家。除此之外,专业测试人员还应有计算机专业技能、测试专业技能和软件编程技能。3. 如何正确认识软件测试答:1、软件的质量不是靠测出来的;软件过程决定软件质量,软件测试检验软件质量。2、软件测试真的比开发容易么?测试人员发现缺陷是测试的初步,还要分析定位缺陷;而且测试人员需要发现潜在的难以被发现的缺陷。测试人员需要开发测试工具和自动测试脚本测试人
13、员必须精通整个业务。3、软件测试与开发的技术技能准备不同:软件测试:网络,硬件,软件,操作系统,开发语言,开发脚本,单元测试, 精通业务软件开发:开发语言,数据库,算法4软件测试需要软件的开发人员与测试人员共同努力破坏性与建设性,考虑角度不同4. 软件测试与开发有何关系?软件开发是生产制造软件;软件测试是验证开发出来软件的质量。类比传统加工制造企业,软件开发人员就是生产加工的工人,软件测试人员就是质检人员。关系应该是:1、没有软件开发就没有测试,软件开发提供软件测试的对象。2、软件开发和软件测试都是软件生命周期中的重要组成部分3、软件开发和软件测试都是软件过程中的重要活动。4、软件测试是保证软
14、件开发产物质量的重要手段。5. 软件测试分成几个步骤?每一个步骤的任务是什么?答:单元测试 集成测试 确认测试 系统测试 单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件,基本组成单位的正确性。集成测试集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。确认测试确认测试检验所开发的软件是否能够按顾客提出的要求运行。系统测试系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。