关于软件测试中系统验收测试的问题

2024-05-20 13:05

1. 关于软件测试中系统验收测试的问题

系统验收测试中,包括正式验收和非正式验收或 着Alpha 测试和 Beta 测试 

Alpha 测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作;Beta测试是由软件的多个用户在实际使用环境下进行的测试,是在开发者无法控制的环境下进行的软件现场应用;只有当α测试达到一定的可靠程度时,才能开始β测试。
你的答案选项不是很常见的。
验证测试和模块测试 根本是不是验收测试阶段的。
勉强选BC吧

关于软件测试中系统验收测试的问题

2. 一个软件测试初学者的一些问题!

楼上的那位做了5年测试最后说测试发展空间有限的盆友~关于测试和开发谁更有发展这种话题网上层出不穷,就如同CU女和房子的问题一样~每次提出来 都引来一堆口水战。

做为一个只做了3年多测试,但工作了7年的普通测试工程师,回答问题与测试一样,最根本的要先搞清客户的需求~ 目前楼主的需求是想了解测试方面的东西,你的答案没有建设性。

OK,我不是攻击他哦~我来回答一下楼主的问题~如果楼主不介意我的经验没有他多的话~

JAVA 语言最近这些年 由于其应用范围广,可扩展性强,学习人数多,导致了一个“良性”循环。即需求多,工作相对好找~但同时,薪水下降~因为语言的特性,使得很多大公司的基础工程师在完成“民工”一样的工作,只需要按要求修改代码,不需要思考过多逻辑,架构问题,导致薪资低~上升空间小,因为在这种工作模式下,很难看出谁比谁更强~ 但我的意思并不是想说JAVA不行了。

我觉得,就业,考虑地域性也很重要。比如说,上海,软件测试需求量大,公司 多元化。JAVA做为入行编程语言挺好。可以考虑做做白盒测试,简单理解就是用代码再来测试代码~ 如果去深圳一类生产硬件为主的地方,LINUX 下的C语言 更“吃香”。所以语言上,如果你已经会了JAVA,可以暂时不能再增加了,代码基础要好。其它的语言工作中看到时候的趋势~

第二,软件测试到底做什么呢?从理论的概念上说,软件测试尽早发现软件的缺陷,同时也要证明软件满足需求。 用通俗点的话讲~别人开发了一个只能写中文的记事本给你测。你就即要想办法证明 他能记中文,也要测万一写了英文他会怎么处理~即,一方面证真,一方面找出隐患~
关于这个记事本,测试他能不能写中文,属于功能测试。测试看外观,图标设计的美不美就属于界面测试,测试这个记事本,记了很多很多条以后能不能稳定使用,就属于性能测试。测试这个记事本,写了很多很多以后,突然程序死了,再打开后东西还在不在,就属于安全和数据测试……测试这个记事本的代码,有没有内存泄露,定义的变量有没有未使用的,逻辑可不可以再优化一类的,就属于白盒测试……

功能测试,重于测试理念和对业务的理解,相对来说 入门容易些。
性能测试在于分析性能点,工具的使用和数据的分析。
白盒测试在于对代码善于使用和分析。

从技术含量上来说,你可以自己分析 
从发展前景上来说,任何一种你只有做的比别人更出色,你才有发展,没有哪个专门的行业会有统一发展的~

一个 要看你喜欢,另一个 就要看你毕业时的就业形式了。如果你已经决定做这一行,经常关注行业动态吧!

3. 请做过软件测试的人或者有软件测试经历的人回答!谢~~~

您好,我在沈阳从事软件测试行业1年多了,我是男的,但是我的身边的同事很多都是女的,因为软件测试还是需要一定的耐心和细心的,这方面女性天生就有优势,而且相对于软件开发软件测试工作强度指定是小的,具体要看你是不是喜欢这个职业,软件测试的目前的现状是:一方面企业对高质量的测试工程师需求量越来越大越大,另一方面国内原来对测试工程师的职业重视程度不够,使许多人不了解测试工程师具体是从事什么工作。这使得许多IT公司只能通过在实际工作中进行淘汰的方式对测试工程师进行筛选,因此国内在短期将出现测试工程师严重短缺的现象。根据对近期网络招聘IT人才情况的了解,许多正在招聘软件测试工程师的企业。我不太清楚西安的软件测试,这具体的情况要看你自己把握了,上海软件测试理论方面做得比较好,北京和沈阳就是相对的偏实际一点,待遇在沈阳来讲还是挺不错的,高于一般做软件开发的,但是跟百度那样1W-1W5/月指定没法比,眼前的待遇都是暂时的,主要是发展前景比较好,还有什么疑问的尽管问,希望你能满意。

请做过软件测试的人或者有软件测试经历的人回答!谢~~~

4. 软件测试工作问题

要看你之前做了多长时间的开发了。一般来说开发转测试,相对来说还是比较容易的,但也要先了解测试的基本概念、流程、相关工具等,能熟悉那就最好了。黑盒测试,相对来说,容易一些,你可以试试。

5. 如何才能算是一个合格的软件测试人员?

1.具有探索精神:软件测试员不会害怕进入陌生环境。 
  2.具有故障排除能力:软件测试员善于发现问题的症结,喜欢猜谜。
  3.不懈努力:软件测试员总是不停尝试。他们可能会碰到转瞬即逝或者难以重建的
软件缺陷;他们不会心存侥幸,而是尽一切可能去寻找。
  4.创造性:测试显而易见的事实,那不是软件测试员;他们的工作是想出富有创意
甚至超常的手段来寻找软件缺陷。
  5.追求完美:他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近
目标。
  6.判断准确:软件测试员要决定测试内容、测试时间,以及看到的问题是否算作真
正的缺陷。
  7.老练稳重:软件测试员不害怕坏消息。
  8.说服力:软件测试员要善于表达观点,表明软件缺陷为何必须修复,并通过实际
演示力陈观点。
  9.在编程方面受过教育。

如何才能算是一个合格的软件测试人员?

6. 软件测试问题

一看问题,就知道你是外专业的
软件测试工程师考试,需要学软件工程,
学数据库原理,并不针对具体的数据库,SQL是众多大型数据库支持的查询标准,必须学习.
需要对MS SQL Server,Oracle,MySQL等数据库有一定的了解
操作系统,也要懂得操作系统原理,具体Windows,linux都要熟悉
建议你买一本软件测试工程师的书,多看看,并参加培训.
非计算机专业的,搞软件测试,必须学习很多计算机专业知识

7. 软件测试的工作

在实际的测试工作中,也许并不会要求编码,但是测试人员的综合专业素质,对测试作业的质量起着决定性的作用。其中当然也包括软件编码能力。

一个专业的测试人员,应该比软件开发人员具有更高的专业水平。不过如果是应聘一些初级的测试操作工作的话,以我的了解,对编码水平并没有太多的要求,当然如果你有较多编码经验的话,肯定是会加分的。

至于说C语言到什么样的程度算是有编码基础,我想这个还是比较难量化的。不是说代码量过多少w行就可以认为编码没问题了。
一定要给出一个量化标准的话,我觉得如果可以给出一个AVL库的完整代码实现的话,从编程的角度上讲应该可以pass了。

软件测试的工作

8. 软件测试具体是做什么的?(面试人员说刚开始做的是处理一些代码非常枯燥的事)请有做过工作的过来人指点

软件测试定义是:为了发现程序中的错误而执行程序的过程 

它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。 

软件测试的目标: 

(1)测试是为了发现程序中的错误而执行程序的过程; 

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; 

(3)成功的测试是发现了至今为止尚未发现的错误的测试。 

软件测试的内容: 

软件测试主要工作内容是验证(verification)和确认(validation ),下面分别给出其概念: 

验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Do the right thing) 

1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程; 

2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程; 

3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。 

确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do it right) 

1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性; 

2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。 

软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。 

从不同的角度出发,软件测试可以划分为不同的分类: 

从是否关心软件内部结构和具体实现的角度划分 

A.白盒测试 

B.黑盒测试 

C.灰盒测试 

从是否执行程序的角度 

A.静态测试 

B.动态测试。 

从软件开发的过程按阶段划分有 

A.单元测试 

B.集成测试 

C.确认测试 

D.验收测试 

E.系统测试 

* 测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。 
* 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。 



* 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。 
* 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。 
* 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。 
单元测试 (Unit Testing) 
* 单元测试又称模块测试,是针对软件设计的最小单位 — 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。 
* 单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。 
1. 单元测试的内容 
* 在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。 



(1) 模块接口测试 
* 在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括: 
– 调用本模块的输入参数是否正确; 
– 本模块调用子模块时输入给子模块的参数是否正确; 
– 全局量的定义在各模块中是否一致; 



* 在做内外存交换时要考虑: 

– 文件属性是否正确; 
– OPEN与CLOSE语句是否正确; 
– 缓冲区容量与记录长度是否匹配; 
– 在进行读写操作之前是否打开了文件; 
– 在结束文件处理时是否关闭了文件; 
– 正文书写/输入错误, 
– I/O错误是否检查并做了处理。 


(2) 局部数据结构测试 
* 不正确或不一致的数据类型说明 
* 使用尚未赋值或尚未初始化的变量 
* 错误的初始值或错误的缺省值 
* 变量名拼写错或书写错 
* 不一致的数据类型 
* 全局数据对模块的影响 
(3) 路径测试 
* 选择适当的测试用例,对模块中重要的执行路径进行测试。 
* 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。 
* 对基本执行路径和循环进行测试可以发现大量的路径错误。 
(4) 错误处理测试 
* 出错的描述是否难以理解 
* 出错的描述是否能够对错误定位 
* 显示的错误与实际的错误是否相符 
* 对错误条件的处理正确与否 
* 在对错误进行处理之前,错误条件是否已经引起系统的干预等 
(5) 边界测试 
* 注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。 
* 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。 





2. 单元测试的步骤 
* 模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。 
– 驱动模块 (driver) 
– 桩模块 (stub) —— 存根模块 




* 如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。 
* 对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。 
集成测试(Integrated Testing) 
* 集成测试 (集成测试、联合测试) 
* 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是: 
– 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失; 
– 一个模块的功能是否会对另一个模块的功能产生不利的影响; 



– 各个子功能组合起来,能否达到预期要求的父功能; 
– 全局数据结构是否有问题; 
– 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。 
在单元测试的同时可进行集成测试, 
发现并排除在模块连接中可能出现 
的问题,最终构成要求的软件系统。 



* 子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。 
* 通常,把模块集成成为系统的方式有两种 
– 一次性集成方式 
– 增殖式集成方式 


1. 一次性集成方式(big bang) 
* 它是一种非增殖式组装方式。也叫做整体拼装。 
* 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。 

2. 增殖式集成方式 
* 这种集成方式又称渐增式集成 
* 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 
* 在集成的过程中边连接边测试,以发现连接过程中产生的问题 
* 通过增殖逐步组装成为要求的软件系统。 


(1) 自顶向下的增殖方式 
* 这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。 
* 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。 
* 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。 

(2) 自底向上的增殖方式 
* 这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。 
* 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。 



* 自顶向下增殖的方式和自底向上增殖的方式各有优缺点。 
* 一般来讲,一种方式的优点是另一种方式的缺点。 
(3) 混合增殖式测试 
* 衍变的自顶向下的增殖测试 
– 首先对输入/输出模块和引入新算法模块进行测试; 
– 再自底向上组装成为功能相当完整且相对独立的子系统; 
– 然后由主模块开始自顶向下进行增殖测试。 

* 自底向上-自顶向下的增殖测试 
– 首先对含读操作的子系统自底向上直至根结点模块进行组装和测试; 
– 然后对含写操作的子系统做自顶向下的组装与测试。 
* 回归测试 
– 这种方式采取自顶向下的方式测试被修改的模块及其子模块; 
– 然后将这一部分视为子系统,再自底向上测试。 
关键模块问题 
* 在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。 
* 关键模块的特征: 
① 满足某些软件需求; 
② 在程序的模块结构中位于较高的层次(高层控制模块); 
③ 较复杂、较易发生错误; 
④ 有明确定义的性能要求。 


确认测试(Validation Testing) 
* 确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。 
* 对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。 

1. 进行有效性测试(黑盒测试) 
* 有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。 
* 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。 

* 通过实施预定的测试计划和测试步骤,确定 
– 软件的特性是否与需求相符; 
– 所有的文档都是正确且便于使用; 
– 同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试 

* 在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类: 
– 测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。 
– 测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。 


2. 软件配置复查 
n 软件配置复查的目的是保证 
u 软件配置的所有成分都齐全; 
u 各方面的质量都符合要求; 
u 具有维护阶段所必需的细节; 
u 而且已经编排好分类的目录。 
n 应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。 
验收测试(Acceptance Testing) 
* 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。 
* 验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。 
* 由用户参加设计测试用例,使用生产中的实际数据进行测试。 

* 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。 
* 确认测试应交付的文档有: 
– 确认测试分析报告 
– 最终的用户手册和操作手册 
– 项目开发总结报告。 


系统测试(System Testing) 
* 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。 
* 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
其实软件测试不仅仅是用工具去检查别人的程序,他主要告诉就是保证所开发的软件错误降低到最小。 
其实做软测的也要编代码,他们编的是软件的源程序,我们编的是测试用例,里面的内容很多,做软测也需要有一定的编程基础

软件测试是指使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于检验是否满足规定的需求或者弄清预期的结果与实际结果的区别。 

一句话发现BUG
所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件 老化失效等。软件的错误全是厂家设计错误。那种说用户执行了非法操作的提示,是软件厂商不负责的胡说八道。用户可能会执行不正确的操作,比如本来是做加法 但按了减法键。这样用户会得到一个不正确的结果,但不会引起bug发作。软件厂商在设计产品时的一个基本要求,就是不允许用户做非法的操作。只要允许用户 做的,都是合法的。用户根本就没有办法知道厂家心里是怎么想的,哪些操作序列是非法的。 
从电脑诞生之日起,就有了电脑BUG。第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯·哈珀(Grace Hopper)发现的。哈珀后来成了美国海军的一个将军,领导了著名计算机语言Cobol的开发。 
1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电 器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空 调,所有窗户都敞开散热。 
突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”[1] 
从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)

“BUG”的由来: 
Bug一词的原意是“臭虫”或“虫子”。但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“Bug”,这是怎么回事呢? 
原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子 Bug 钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后 来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。 
与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。遗憾的是,在中文里面,至今仍没有与 “Bug”准确对应的词汇,于是只能直接引用“Bug”一词。虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。 
所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误, 一是硬件部件老化失效等。软件的错误全是厂家设计错误。那种说用户执行了非法操作的提示,是软件厂商不负责的胡说八道。用户可能会执行不正确的操作,比如 本来是做加法但按了减法键。这样用户会得到一个不正确的结果,但不会引起bug发作。软件厂商在设计产品时的一个基本要求,就是不允许用户做非法的操作。 只要允许用户做的,都是合法的。用户根本就没有办法知道厂家心里是怎么想的,哪些操作序列是非法的。 
从电脑诞生之日起,就有了电脑BUG。第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯·哈珀(GraceHopper)发现的。哈珀后来成了美国海军的一个将军,领导了著名计算机语言Cobol的开发。 
1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电 器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空 调,所有窗户都敞开散热。 
突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”[1] 
从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。 
程序中隐藏的功能缺陷或错误。由于现在的软件复杂程度早已超出了一般人能控制的范围,如Win95、Win98这样的较成熟的操作系统也会不定期地公布其中的Bug。如何减少以至消灭程序中的Bug,一直是程序员所极为重视的课题


1983年,IEEE提出了软件工程标准术语,软件测试定义为: 
“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。” 
简单的说,软件测试就是对软件中的缺陷进行检测和预防。