1、实验07 软件自动化测试环境实验7软件自动化测试环境1. 阅读:从程序员到软件测试工程师 国内软件公司对软件测试的态度令人担忧。软件测试工程师不足,开发测试人员比例不合理。据调查,最好的企业中测试人员和开发人员的比例是1:8,有的是1:20,甚至没有专职的测试工程师。 曾经参与微软Windows 95、Exchange Server 4.0和4.5、Internet Explorer 4.0和5.0、SQL Server 2000开发与测试工作陈宏刚博士尽管已经升任微软亚洲研究院商务及高校关系高级经理,但仍然对国内软件测试水平的落后深有感触。 国内很多企业还处在探索阶段,小企业的运作方式造成其
2、主要精力是要尽快完成初始资本积累。有些企业也了解软件测试的重要性,很努力、很认真的在学,但因为很多原因而学不到精髓,不知道如何去做。于是只能局限于书本上学来的简单的黑箱、白箱测试而已。很多人知道有压力测试和性能测试,但针对产品具体如何去做就不清楚了。 陈宏刚表示,重视测试首先需要有开放性的软件文化,而在很多公司中,测试工程师只是绝对服从的听命角色,没有开发他们的积极性和创造性。一些管理人员对软件开发的流程管理经验不足,仍然用传统企业的方法进行管理,再加上对软件质量的控制理解不对,认为编完程序经过简单的程序员自己测试就可以使用了,而没有认识到软件测试是控制质量最好的方法。 不过,国内还是有一些大
3、型公司和专业公司已经在软件测试方面走上正规。1994年开始接包IBM软件测试项目,1999年软件测试成为公司主体软件外包业务之一的和腾软件就是其中之一。因为客户就是IBM这样的大型软件公司,和腾软件高级副总裁刘忠表示,它们在软件测试管理上,经同国外的公司相差不大,同时也研究和应用了多种软件测试技术。软件测试工程师 一提到软件测试工程师,很多人就会想到那些反复使用软件,试图在频繁操作中寻找到错误发生的低层次人员或者软件用户。其实这是一种错误的概念,软件测试早已超越了通过用户使用来发现Bug的基本测试阶段。陈宏刚介绍说,微软的软件测试工程师分为三种:测试执行者 (Basic Software Te
4、ster) 、测试工具软件开发工程师 (Software Development Engineer in Test) 和高级软件测试工程师 (Ad_hoc Tester) 。 测试执行者负责理解产品的功能要求,然后根据测试规范和测试案例对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,属于最低级的执行角色。 测试工具软件开发工程师负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。产品开发后的性能测试、提交测试等过程,都有可能要用到开发的测试工具。对技术要求最强的是这些人,因为它们要具备写程序的技术。“因为不同产品的特性不一样,对测试工具要求也是不同
5、的,就像Windows的测试工具不能用于Office,Office的也不能用于SQL Server,微软很多测试工程师就是负责专门为某个产品写测试程序的。” 而Ad_hoc Testet属于比较有经验,自己会找方向并做得很好的测试工程师,这要求具有很强的创造性。刚进入微软时,老板也是只给陈宏刚一个操作流程,每天就按照这个规程去做,几天下来,一个Bug都没有发现。陈宏刚也很沮丧,觉得这样挺对不起公司,后来自己问自己:为什么非要这样做!于是换了其他的方法试试,令他吃惊的是,一下就找到很多严重的Bug,当时也不敢声张。有一天,他找到10多个非常严重的Bug,开发经理一下就惊呆了,怒冲冲的跑到陈宏刚面
6、前问:“你是不是改变了测试方式和测试步骤?”陈宏刚有些吓住,说道:“可能改变了一点。”对方说:“我非常生气,但我不是生你的气,而是因为以前测试人员水平太差,或者以前的测试方面有问题,软件中有些Bug存在了半年甚至一年,但直到现在才发现,现在修补这些错误要困难很多!”后来陈宏刚得到了老板的赞许,可以按照自己的想法去做测试。对此,陈宏刚感受颇深:“一方面我体会到了微软非常鼓励创造的文化,同时也感到只遵守教条不是好的测试人员,就和用户一样了。做软件测试工程师同样需要开拓和创造性。” 在开发管理上,测试不应该归属于项目管理,也不应该归属开发人员。这三个部门应该是并驾齐驱,相互协作,测试工程师最终决定产
7、品是否能够发布。 软件测试工程师的素质 因为软件测试仍然处在发展阶段,还没有上升到理论层次。对人员的评测,包括微软在内,都还没有一个统一标准,因此评定软件测试工程师只能根据工作实践进行自然淘汰。 软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。陈宏刚介绍说,在五六个人的测试小组时,一半以上的Bug都是他找到的。他认为这同自己数学专业的背景关系密切,数学中有逻辑思维的培训,要善于找出来各方面的因素。比如要证明一个定理,各个方面都考虑到,一个条件不满足就无法证明;但如果证明其不成立,最常用的就是找到一个反例,只要有一点证明不成立就可以了,软件测试也是找这一点。 做
8、测试还要考虑到所有出错的可能性,还要做一些不是按常规做的、非常奇怪的事。除了漏洞检测,测试还应该考虑性能问题,也就是要保证软件运行得很好,没有内存泄漏,不会出现运行越来越慢的情况;在不同的使用环境下,考虑软件的兼容性同样重要。软件测试与产品的规模也有很大的关系,因为软件的Bug往往出在大型软件的连接处。 做软件测试工程师需要对软件抱有怀疑态度。这是因为开发人员喜欢想当然,总是找一些有利于自己程序执行的数据,有些开发人员甚至认为不利于程序执行的数据是对代码的玷污和亵渎。而软件测试却要策略性的准备各种数据,从每个细节上设计不同的应用场景,不去想当然的假定任何一个数据是可行的。 在职业素质和交际方面
9、方面,并不是测试工程师爱挑别人毛病才好,反而这个工作要求很强的沟通能力。经常的和开发人员进行沟通,说话办事要很得当,不能指责别人,否则会事倍功半。性格随和才能和开发人员顺畅的沟通,对人和对事是完全不同的两个问题。 培养优秀的软件测试工程师 朗川软件测试工程师张建阳从北大力学系毕业之后,曾开发流体力学分析软件,软件缺少测试而产生的问题给她留下了很深的印象。后来去大唐电信做UIM (统一消息管理系统) ,她发现尽管公司为了鼓励员工找Bug采取了很多奖励方法,但还是很少人愿意去做系统测试。而张建阳却从那时查阅翻译了很多国内外的资料,对软件测试产生了浓厚的兴趣。 像张建阳这样在工作中自己定位在软件测试
10、领域的开发人员并不多见,因为程序员更愿意去做开发而不是测试,从大环境上,测试人员收入水平低也是原因之一。而在微软,测试人员和开发人员的工资水平是相同的。 如何改变这种现状呢?有人说可以派人去先进的国外软件企业学习,但这种方式因为牵涉到商业秘密,可操作性不大。陈宏刚博士认为更好的方法是引进人才,把在国外大型软件公司工作过、有经验的人才引进来,甚至要高薪聘请。他表示,这不仅仅是一个人的问题,关键是能够把整个软件测试的水准提高一个层次。 引进人才只是开始,更重要的是培养一批软件测试人才。软件开发的教育培训都是比较正规的,各个学校也都设有专业,但软件测试还没有正规的专业毕业生,而且没有评判的标准。陈宏
11、刚博士给很多软件学院建议,开设四方面的软件测试专业基础课:软件测试基础、软件测试开发、高级软件测试案例和行业软件特色测试方法。国内现在已经有了一些软件测试基础的教材,但其他的教材还没有。高级软件测试案例主要是大型软件测试案例,大型软件出现的问题具有很强的代表性。而行业特色软件测试的课程可以开阔学生的视野。陈博士介绍说,在国外,也是极少的高等院校开设测试专业,但可以借鉴民间的培训机构课程。在有一批专业的测试人才出现之后,人们会认识到他们的重要性。 如果你已经开始从事软件测试工作,千万不要认为软件测试没有什么发展的潜力和前途。刘忠从1995年接下IBM的OS2汉化版本的测试开始到现在,他一直工作在
12、软件测试领域,并升到了公司高级副总裁的位置。和腾软件也培养了一批测试工程师,它们从对测试职业将信将疑到明确自己的测试方面的职业目标。刘忠介绍说:“很多人开始做测试执行工作时会说很麻烦、很枯燥,只是一味的埋怨,而不是主动的去学习,他没有看到软件测试背后所隐藏的知识。因为学习可以做这些工作,不学习也可以做这些工作,但质量是不同的。有些人自学和请教了很多测试技术和管理方面的知识,公司自然就会在下个项目中去培养他。” 因此,对于一个新手,要在各方面培养自己的能力。首先是要理解各种测试流程,并在理解的基础上转化为自己的知识,以后遇到相似的问题能自己去解决。在测试技能上,要知道测试有那些手段,比如压力测试
13、有哪些方法,哪些工具可以辅助做测试。从专业技能上,面向不同的技术方向,像操作系统、网络、通信等都要从专业上深入了解。这三方面要同步去成长。 软件测试工程师未来的发展 从事软件测试有没有前途,未来的职业发展方向怎样呢? 陈宏刚博士表示,软件测试工程师在微软的发展有几种途径:一种走技术路线,成长为高级软件测试工程师,这时他能够独立测试很多软件,再向上可以成为软件测试架构设计师。第二种就是向管理方向发展,从测试工程师到组长 (Lead) ,再到项目经理 (Manager) ,到更高的职位。第三种可以换职业,做项目管理,做开发人员都可以,很多测试工具软件开发工程师在写测试软件的过程中,因为开发方面积累
14、了经验,同时对软件产品本身产生了自己的看法,很容易转去做产品编程。 陈宏刚博士现在还带着一个测试小组,两个清华软件学院的学生,一个南开的专门做软件测试的博士生,一个北邮的学生,他们负责总部一个产品的测试。陈博士表示,在自己简单的讲讲思路,共同探讨之后,他们一星期就找出了70多个Bug,也感觉学了很多知识,并表示以后专注于软件测试专业,因为他们感觉软件测试真的是一门很深的学科,有很多可以研究的课题。其实微软的测试人员很多也都是硕士、博士,他们同样在做创造性的工作,保证着程序质量,推动着软件的进步。 软件测试是正在快速发展,充满挑战的领域。尽管现在单机版桌面软件的测试已经成熟了很多,但对于网络时代
15、的到临,包括微软在内的公司对基于网络的测试也没有一套完整的体系,也是处于探索中,网络中被攻击的可能性太大,这就是为什么黑客在网络上能兴风作浪的原因。网络测试是一个新环境,而且是很大的挑战。 软件测试未来的发展空间很大,软件测试工程师的职业之路同样充满希望。资料来源:软件测试网 ( ,有删改。请分析:阅读以上文章,并根据你的理解和看法,回答以下问题:1) 请尽量结合你的就业想法,简述你对软件测试职业的认识。_2) 从上述阅读中,你还能得到什么启发?请简述之。_2. 习题与思考7.1 从下列关于软件测试的叙述中,选出5条正确的叙述。1) 测试最终是为了证明程序无错误。2) 在进行同等测试后,若发现
16、A部分有错并改正了10个错误,B部分发现并改正了 5个错误,则再进行测试时,A部分中发现错误的可能性比B部分中大。3) 对一个模块测试的根本依据是测试用例。4) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。5) 一组测试用例是判定覆盖,则一定是语句覆盖。6) 一组测试用例是条件覆盖,则一定是语句覆盖。7) 如图7.7中,A、B是两个测试等价类,则取M点测试用例,测试一般是“高产的”。 图7.7 习题7.1 (7) 图7.8 习题7.1 (9)8) 在整个测试过程中增量式所需测试时间比非增量式多。9) 如图7.8所示之模块图,用自顶向下测试,有18种次序 (如ABCDE是一种次序) 。10
17、) 验收的依据是系统说明书。答:_7.2 从下列叙述中选出4条正确的叙述。1) PASCAL、COBOL、FORTRAN中任何一种语言的任何程序都可以变换成另两种语言的功能上等价的程序。2) 目标代码优化是指对翻译好的目标代码重新加工。3) 有GOTO语句的程序一般来说无法机械地变换成功能等价的无GOTO语句的程序。4) 据统计,通常软件测试的费用约占软件开发费用的1/2。5) 对程序的穷举性测试在一般情况下是可以做到的。6) 因果图法可以用来系统地设计测试用例。7) 程序模块的内聚度应尽可能小。8) 信息隐蔽原则禁止在模块外使用在模块接口说明中所没有说明的关于该模块的信息。答:_7.3 从供
18、选择的答案中选出应该填入下列关于软件测试的叙述的 ( ) 内的正确答案。软件测试中常用的静态分析方法是 ( A ) 和 ( B ) 。 ( B ) 用来检查模块或子程序间的调用是否正确。分析方法 (白盒方法) 中常用的方法是 ( C ) 方法。非分析方法 (黑盒方法) 中常用的方法是 ( D ) 方法和 ( E ) 方法。( E ) 方法根据输出对输入的依赖关系设计测试用例。供选择的答案:A、B: 引用分析 算法分析 可靠性分析 效率分析 接口分析 操作性分析C - E: 路径测试 等价类 因果图 归纳测试 综合测试 追踪 深度优先 排错 相对图7.4 从供选择的答案中选出应填入下面有关软件测
19、试的叙述的 ( ) 内的正确答案。软件测试方法可分为测试的分析方法和测试的非分析方法两种。测试的分析方法是通过分析程序的 ( A ) 来设计测试用例的方法。除了测试程序外,它还适用于对 ( B ) 阶段的软件文件进行测试。测试的非分析方法是根据程序的 ( C ) 来设计测试用例的方法。除了测试程序外,它也适用于对 ( D ) 阶段的软件文件进行测试。白盒法测试程序时常按照给定的覆盖条件选取测试用例。( E ) 覆盖比 ( F )覆盖严格,它使得每一个判定获得每一种可能的结果。( G ) 覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。( H ) 覆盖比其他条件都要严
20、格,但它不能保证覆盖程序中的第一条路径。单元测试一般以 ( I ) 为主,测试的依据是 ( J )。供选择的答案:A、C: 应用范围 内部逻辑 功能 输入数据B、D: 编码 软件详细设计 软件总体设计 需求分析E - H: 语句 判定 条件 判定/条件 多重条件 路径I: 白盒法 黑盒法J: 模块功能说明书 系统模块结构图 系统需求规格书7.5 从供选择的答案中选出应填入下列关于软件开发技术的各条叙述 ( ) 内的正确答案。1) 在软件生存周期中,( A ) 阶段所占的工作量最大,约70。2) 结构化分析方法产生的系统说明书由一套分层的 ( B ) 图、一本数据字典、一组小说明及补充材料组成。
21、3) 软件的 ( C ) 一般由两次故障平均间隔时间和故障平均恢复时间来度量。4) 采用 ( D ) 编写程序,可提高程序的可移植性。5) 仅根据规格说明书描述的程序功能来设计测试用例的方法称为 ( E ) 。供选择的答案:A: 分析 设计 编码 测试 维护B: 因果图 数据流图 PAD 图 流程图C: 易维护性 可靠性 效率 易理解性D: 机器语言 宏指令 汇编语言 高级语言E: 白盒法 静态分析法 黑盒法 人工分析法7.6 从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。( A ) 对可靠性要求很高的软件,例如操作系统,由第三者对原代码进行逐行检查。( B ) 已有的软件
22、被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。因此,对变更的软件进行测试是必要的。( C ) 在意识到被测试模块的内部结构或算法的情况下进行测试。( D ) 为了确认用户的需求,先做出系统的主要部分,提交给用户试用。( E ) 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。供选择的答案:A - E: 仿真器 代码审查 模拟器 桩 驱动器 域测试 黑盒测试 原型 白盒测试 退化测试7.7 请从供选择的答案中选出应填入下列 ( ) 中的字句。程序的三种基本控制结构是 ( A ) 。它们的共
23、同点是 ( B ) 。结构程序设计的一种基本方法是 ( C ) 。软件测试的目的是 ( D ) 。软件排错的目的是 ( E ) 。供选择的答案:A: 过程,子程序,分程序 顺序,条件,循环 递归,堆栈,队列 调用,返回,转移B: 不能嵌套使用 只能用来写简单的程序 已经用硬件实现 只有一个入口和一个出口C: 筛选法 递归法 归纳法 逐步求精法D: 证明程序中没有错误 发现程序中的错误 测量程序的动态特性 检查程序中的语法错误E: 找出错误所在并改正之 排除存在错误的可能性 对错误性质进行分类 统计出错的次数7.8 请从供选择的答案中选出应填入下列 ( ) 中的字句。软件测试的目的是 ( A )
24、 。为了提高测试的效率,应该 ( B ) 。使用白盒测试方法时,确定测试数据应根据 ( C ) 和指定的覆盖标准。一般说来,与设计测试数据无关的文档是 ( D ) 。软件的集成测试工作最好由 ( E ) 承担,以提高集成测试的效果。可供选择的答案:A: 评价软件的质量 发现软件的错误 找出软件中的所有错误 证明软件是正确的B: 随机地选取测试数据 取一切可能的输入数据作为测试数据 在完成编码以后制定软件的测试计划 选择发现错误的可能性大的数据作为测试数据C: 程序的内部逻辑 程序的复杂程度 使用说明书 程序的功能D: 需求规格说明书 程序的复杂程度 源程序 项目开发计划E: 该软件的设计人员
25、该软件开发组的负责人 该软件的编程人员 不属于该软件开发组的软件设计人员7.9 软件测试的目的是 ( A ) ,通常可分为白盒测试和黑盒测试。白盒测试是根据程序的 ( B ) 来设计测试用例,黑盒测试是根据软件的规格说明来设计测试用例。常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中,( C ) 经常与其他方法结合起来使用。软件测试的步骤主要有单元测试、集成测试和确认测试。如果一个软件作为产品被许多客户使用的话,在确认测试时通常要经过测试和测试的过程。其中,测试是 ( D ) 进行的一种测试。在软件设计和编码时,采取 ( E ) 等措施都有利于提高软件的可测试性。可供选择的答
26、案:A: 发现程序中的所有错误 证明程序是正确的 尽可能多地发现程序中的错误 证明程序做了应做的事B: 功能 性能 内部逻辑 内部数据C: 边值分析 等价类划分 错误猜测 因果图D: 在开发者现场由开发方的非本项目开发人员 在开发者现场由用户 在用户现场由开发方的非本项目开发人员 在用户现场由用户E: 不使用标准文本以外的语句,书写详细正确的文档 不使用标准文本以外的语句,采用良好的程序结构 书写详细正确的文档,信息隐蔽 书写详细正确的文档,采用良好的程序结构7.10 如果一个软件是给许多客户使用的,大多数软件厂商要使用几种测试过程来发现那些可能只有最终用户才能发现的错误,( A ) 测试是由
27、软件的最终用户在一个或多个用户实际使用环境下来进行的。( B ) 测试是由一个用户在开发者的场所来进行的,测试的目的是寻找错误的原因并改正之。可供选择的答案:A、B: alpha beta gamma delta7.11 白盒测试方法一般适合用于 ( A ) 测试。可供选择的答案:A: 单元 系统 集成 确认7.12 请讨论一下各种软件的特性 (比如信息隐蔽、耦合性、内聚性、程序长度以及复杂性度量) 对一个模块的可测试性的影响。你能否制定一些准则,使所设计的模块便于测试?答:_3. 实验:软件自动化测试环境本章实验的目的是:1) 学习软件自动测试的原理和方法,了解何种情况下适合进行自动化测试。2) 结合软件生命周期,了解自动测试工具的类型以及测试步骤和自动测试用例设计基础,了解测试自动化的优点和限制。3) 掌握MI WinRunner功能测试工具的基本操作。3.1 工具/准备工作在开始本实验之前,请回顾教科书的相关内容。需要准备一台带有浏览器,能够访问因特网的计算机。3.2 实验内容与步骤请查阅有关资料 (例如教材内容和专业网站等) ,结合自己的理解,尽量用自己的语言回答以下问题
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1