一、测试基础
什么是软件测试
为了发现程序中的错误而执行程序的过程
软件测试的目的/为什么要在一个团队中开展软件测试工作?
发现程序员在开发中存在的代码以及逻辑错误
审核产品的完成是否符合用户需求
提高用户体验
交付更高质量的产品
软件的生命周期
软件的生命周期指软件从开发开始到最终发版的全过程,通常包括以下几个阶段:
需求分析阶段:确定软件的需求和功能,包括用户需求、系统需求和软件规格说明等。
设计阶段:根据需求分析的结果,设计软件的架构、模块、接口和数据结构等。
编码阶段:根据设计阶段的结果,实现软件的功能和模块。
测试阶段:对软件进行各种测试,包括单元测试、集成测试、系统测试、验收测试等。
部署阶段:将软件部署到目标环境中,包括安装、配置、数据迁移等。
维护阶段:对软件进行维护和支持,包括修复缺陷、更新版本、优化性能等。
在软件的生命周期中,每个阶段都有相应的文档和标准,以确保软件开发的质量和可靠性。
常见的软件生命周期模型有哪些?
瀑布模型:瀑布模型是软件工程中最早出现的模型,它将软件开发过程分为需求分析、设计、编码、测试和维护五个阶段,每个阶段都有明确的输入和输出。
增量模型:增量模型是将软件开发过程分为多个增量,每个增量都包含需求分析、设计、编码、测试和维护五个阶段,每个增量都是一个可用的软件版本。
螺旋模型:螺旋模型是一种风险驱动的软件开发模型,它将软件开发过程分为多个迭代,每个迭代都包含风险评估、需求分析、设计、编码、测试和维护六个阶段。
敏捷模型:敏捷模型是一种基于迭代和增量的软件开发模型,它强调快速响应需求变化、持续交付可用软件和团队协作等特点。
V模型:V模型是一种基于瀑布模型的软件开发模型,它将软件测试过程与软件开发过程相互对应,强调测试在整个软件开发过程中的重要性。
一个完整的开发流程是什么样的?
测试与开发各个阶段的关系
在软件开发过程中5个常见的问题是什么?
时间和成本控制:软件开发过程中经常会出现时间和成本超预算的情况,这可能是因为需求变更、技术难度、人员变动等原因导致的。
质量控制:软件开发过程中,质量控制是一个非常重要的问题,如果质量不好,会影响软件的稳定性和可靠性,甚至可能导致用户流失。
人员管理:软件开发需要多个人员协作完成,如果人员之间沟通不畅、分工不明确、协作不配合等问题,会影响软件开发的进度和质量。
需求变更:软件开发过程中,需求变更是一个常见的问题,如果需求变更频繁或者变更不明确,会导致软件开发过程中出现很多问题。
技术难度:软件开发过程中,技术难度也是一个常见的问题,如果开发人员没有足够的技术能力或者遇到了技术难题,会影响软件开发的进度和质量。
针对软件开发过程中的问题,有哪些解决方法?
时间和成本控制:制定详细的项目计划和时间表,对项目进度进行监控和管理,及时调整计划,避免延误和超支。
质量控制:实施严格的质量管理,包括代码审查、测试、Bug跟踪和修复等,确保软件质量符合用户需求和标准。
人员管理:建立有效的团队合作机制,加强沟通和协作,提高团队成员的技能和素质,确保项目顺利进行。
需求变更:及时响应用户需求变更,与用户保持沟通,确保需求的准确性和可行性,避免对项目进度和质量的影响。
技术难度:采用适当的技术手段和工具,提高开发效率和质量,同时加强技术培训和学习,提高团队技术水平,解决技术难题。
测试工程师的职责
测试经理:
1、制定测试计划。
2、确保测试过程正常进行。
测试工程师:
1、编写测试用例
2、搭建测试环境
3、执行测试
软件的分类
软件测试的对象
软件测试的对象是软件系统或应用程序。在软件开发的不同阶段,测试的对象也会有所不同。例如:
需求分析阶段:测试的对象是需求规格说明书和用户需求;
设计阶段:测试的对象是软件设计文档;
编码阶段:测试的对象是源代码和编译后的程序;
集成测试阶段:测试的对象是不同模块之间的接口和整个系统的功能;
系统测试阶段:测试的对象是整个系统的性能和安全性等方面;
验收测试阶段:测试的对象是用户验收标准和用户需求是否满足等。
引入测试管理的含义?
风险分析,进度控制、角色分配、质量控制
做好软件测试的关键点
做好软件测试的关键点包括:
设计全面的测试计划:在软件测试之前,需要设计全面的测试计划,明确测试的目标、范围、方法、时间等,以确保测试工作能够高效有序地进行。
编写全面的测试用例:测试用例是软件测试的核心,需要编写全面的测试用例,覆盖软件的各个功能模块和各种场景,以确保软件的稳定性和可靠性。
严格执行测试流程:在测试过程中,需要严格执行测试流程,按照测试计划和测试用例进行测试,确保测试结果的准确性和可靠性。
及时记录和跟踪缺陷:在测试过程中,需要及时记录和跟踪发现的缺陷,包括缺陷的描述、重现步骤、影响范围、优先级等信息,以便开发人员及时修复缺陷。
定期生成测试报告:测试结束后,需要定期生成测试报告,包括测试结果、缺陷情况、测试覆盖率等信息,以便项目经理和开发人员了解测试进度和测试质量。
使用自动化测试工具:自动化测试工具可以提高测试效率和准确性,特别是在重复性测试方面更为有效,可以节省测试时间和人力成本。
坚持学习和技术更新:软件测试是一个不断发展和更新的领域,测试人员需要不断学习新的测试方法和技术,以提高自己的测试水平和质量。|
怎么估计测试的工作量?
测试工作量的估计通常是基于以下几个因素:
功能点数量:测试的工作量通常与软件中的功能点数量成正比。因此,通过对软件的需求文档或功能列表进行分析,可以初步估算出测试的工作量。
测试用例数量:测试用例数量通常是测试工作量的重要指标之一。通过对软件的需求文档或功能列表进行分析,可以编写相应的测试用例。测试用例数量越多,测试工作量就越大。
测试环境的复杂程度:测试环境的复杂程度也会影响测试的工作量。如果测试环境需要多个平台或多个版本的软件,那么测试工作量就会增加。
测试方法和工具的使用:测试方法和工具的使用也会影响测试的工作量。自动化测试通常比手动测试更快速和高效,但是自动化测试的编写和维护也需要一定的时间和精力。
测试人员的经验和技能:测试人员的经验和技能也会影响测试的工作量。经验丰富的测试人员通常能够更快速和准确地完成测试工作。
测试评估的目标
1. 发现和解决问题:主要目标是发现和解决软件中的问题和缺陷,从而提高软件的质量和可靠性。
2. 确认软件功能:确认软件的功能是否符合预期的设计和需求,从而确保软件的正确性和完整性。
3. 确保软件质量:确保软件的质量符合预期的标准和要求,从而提高软件的可靠性和可用性。
4. 改进软件设计:帮助改进软件的设计和实现,从而提高软件的可维护性和可扩展性。
5. 提高用户满意度:提高用户的满意度,从而增强软件的市场竞争力。
如何提高测试效率?
提高测试效率的方法有很多,以下是一些常用的方法:
1. 自动化测试:自动化测试可以减少测试人员的工作量,同时可以提高测试的准确性和可靠性。
2. 测试用例设计:设计好的测试用例可以减少测试人员的工作量,提高测试效率。
3. 并行测试:对于一些可以并行测试的功能或模块,可以同时进行测试,从而提高测试效率。
4. 测试环境的准备:测试环境的准备应该提前完成,确保测试人员可以及时开始测试工作。同时,测试环境的稳定性和可靠性也非常重要,可以减少测试过程中的错误和干扰。
5. 测试人员的技能和经验:具有丰富的测试经验和技能的测试人员可以更快地找到问题和解决问题,从而提高测试效率。
6. 测试过程的优化:测试过程中的优化也可以提高测试效率,包括测试计划的合理性、测试执行的顺序、测试结果的分析和反馈等方面。
总之,提高测试效率需要综合考虑多个方面,包括工具、方法、环境、人员和过程等。
常见的测试设计的问题
以下是一些常见的测试设计问题:
不充分的测试用例:测试用例的设计需要覆盖软件的所有功能和场景,但是有时候测试人员会忽略一些重要的测试场景,导致测试用例不充分,无法覆盖所有的功能和场景。
重复的测试用例:编写重复的测试用例,会浪费时间和资源,并且不利于测试效率的提高。
测试用例的可读性和可维护性:测试用例需要清晰明了,易于理解,便于修改和维护。
不充分的边界测试:测试人员可能会忽略一些边界情况,导致测试结果不准确。
不充分的异常测试:测试人员需要设计出一些异常场景,以确保软件能够正确地处理异常情况。
C/S模式
C/S模式的定义:
C/S模式中,软件系统被分为客户端和服务器端两部分。客户端通常是一个独立的应用程序,可以运行在用户的本地计算机上,而服务器端则负责提供服务和处理客户端的请求。客户端和服务器之间通过网络进行通信,客户端向服务器发送请求,服务器返回响应结果。C/S模式通常用于需要处理大量数据或需要高性能的应用程序。
C/S模式的优点:
网络负载较小:C/S模式中,客户端和服务器之间的通信只涉及到数据交换,而不需要传输HTML等页面内容,因此网络负载较小,响应速度较快。
可以脱机工作:客户端可以缓存数据,即使没有网络连接也可以继续工作,等到网络连接恢复后再进行数据同步。
功能更强大:客户端可以使用本地计算机的资源,例如CPU、内存、硬盘等,因此可以支持更复杂的功能和更高的性能要求。
C/S模式的缺点:
客户端需要安装软件:C/S模式中,客户端需要安装相应的软件,这会增加用户的配置和维护成本。
可扩展性较差:C/S模式中,客户端和服务器之间的通信是通过协议进行的,如果需要增加新的功能,需要修改客户端和服务器端的代码,扩展性较差。
安全性较差:C/S模式中,客户端可以访问本地计算机的资源,因此容易受到病毒、木马等安全威胁。
B/S模式
B/S模式的定义:
B/S模式中,软件系统被分为浏览器和服务器端两部分。浏览器是客户端,可以运行在用户的本地计算机上,而服务器端则负责提供服务和处理浏览器的请求。浏览器向服务器发送请求,服务器返回HTML等页面内容,浏览器解析页面并显示给用户。B/S模式通常用于需要跨平台、易于维护和部署的应用程序。
B/S模式的优点:
客户端无需安装软件:B/S模式中,客户端只需要使用浏览器即可访问应用程序,无需安装任何软件。
可扩展性更好:B/S模式中,应用程序的逻辑和数据都在服务器端,客户端只需要负责显示和交互,因此增加新的功能只需要修改服务器端的代码,扩展性更好。
安全性更好:B/S模式中,客户端无法访问本地计算机的资源,因此安全性更好。
B/S模式的缺点:
网络负载较大:B/S模式中,客户端和服务器之间的通信需要传输HTML等页面内容,网络负载较大,响应速度较慢。
功能受限:B/S模式中,客户端只能使用浏览器提供的功能,无法使用本地计算机的资源,因此功能受限。
依赖于浏览器:B/S模式中,客户端需要使用浏览器访问应用程序,因此受到浏览器版本、插件等因素的影响。
web测试和app测试的异同有哪些?
相同点:功能测试方面没有区别
不同点:
系统结构方面
web项目:b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步会更新。
app项目:c/s结构的,必须要有客户端;app修改了服务端,则客户端用户所有核心版本都需要进
行一遍。
性能方面
web项目:需监测响应时间、CPU、Memory
app项目:除了监测 响应时间、CPU、Memory外,还需监测流量、电量等
兼容方面
web项目:
浏览器:(火狐、谷歌、IE等)
操作系统:(Windows7、Windows10、Linux、Mac等)
app项目
设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等)
手机设备:可根据手机型号、分辨率不同
相对于web项目,APP有专项测试
1.干扰测试:中断,来电,短信,关机,重启等
2.弱网络测试(模拟2g、3g、4g、wifi网络状态以及丢包情况):网络切换测试(网络断开后重
连、3g切换到4g/wifi等)。
3.安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
什么是漏测?/如何避免漏测?/怎么才能够全面的测试到每一个点?(测试的全面性)
什么是漏测
测试漏测指软件产品在测试结束后出现了在测试过程中没有被发现的bug。
漏测的危害
首先给客户带来了非常不好的影响,特别是严重的功能性bug被漏测;
其次增加bug修复的成本,包括人力物力财力上;
再者给自己的测试团队也带来了不利影响,容易被别人质疑能力不足,难以取得信任。
如何避免漏测(测试的全面)
吃透业务需求
研读需求文档和原型图,做好理解不明确和产生歧义的地方,针对不懂的地方进行提问,认真记录。
提高用例质量
提高用例覆盖率,结合业务设计有效业务场景,保证测试有效性。
做好用例评审
测试人员结合用例对需求进行串讲,把对需求的理解讲一遍,列出所有的测试点和测试场景,产品和开发同事评审是否有遗漏场景,这样就可以很大程度的避免漏测了。
增加交叉测试
条件和时间允许,可以与同事交叉测试,毕竟每个人的测试思路不一样,也许有不一样的收获。
有效回归测试
梳理主流程用例,尤其随着版本迭代和功能的增加,每次发版时,要保证主流程没问题。
bug仲裁
在上线前,查看还有哪些问题是未解决的,与产品、开发、测试经理商量,哪些bug是允许带到线上的,如果三方达成一致,那么线上再出问题,也是已知的,就没什么问题了。
做好漏测复盘
对待漏测态度上必须要重视,分析为何会漏测,是哪个环节出了问题,是流程问题还是技术问题?
怎么和开发沟通
和开发沟通是软件测试过程中非常重要的一环。以下是一些和开发沟通的建议:
1. 建立良好的沟通渠道:比如定期开会,使用协同工具等。
2. 明确测试目标:测试人员应该明确测试的目标和测试的重点,以便和开发人员进行更加有针对性的沟通。
3. 尊重开发人员:测试人员应该尊重开发人员的工作,不要过分指责或者批评开发人员。
4. 保持耐心和冷静:在和开发人员沟通时,测试人员应该保持耐心和冷静,不要情绪化,以免影响沟通的效果。
5. 提供详细的信息:当发现问题时,测试人员应该提供尽可能详细的信息,比如问题的重现步骤、截图、日志等,以便开发人员更好地理解问题。
6. 积极参与讨论和解决问题:测试人员应该积极参与开发人员的讨论和解决问题,提出自己的建议和意见,以促进问题的解决。
测试活动中统计了哪些数据?
工作量 bug 数量
进行测试时产生了哪些文档或记录?
测试的整个过程有系统测试计划、系统测试用例、系统测试报告、缺陷报告、产品发布说明。
有个程序,在 Windows 上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
检查系统是否有中毒的特征;
检查软件/硬件的配置是否符合软件的推荐标准;
确认当前的系统是否是独立,即没有对外提供什么消耗 CPU 资源的服务;
如果是 C/S 或者 B/S 结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
在系统没有任何负载的情况下,查看性能监视器,确认应用程序对 CPU/内存的访问情况。
软件的评审一般由哪些人参加?其目的是什么
软件评审一般由以下人员参加:
项目经理:负责协调和安排评审流程,确保评审按计划进行。
开发人员:负责提交代码和文档,解释代码实现细节。
测试人员:负责评估软件是否符合需求和规格要求,是否存在Bug。
产品经理:负责确认需求和规格是否得到满足,是否需要修改。
用户代表:如果有的话,可以提供用户的反馈和建议。
评审的目的是为了确保软件的质量和满足需求。评审可以帮助团队发现和解决潜在的问题和风险,避免在后期开发和测试中出现不必要的延误和成本增加。评审还可以促进团队的合作和沟通,提高开发和测试人员的技能和经验。最终目的是确保软件交付符合用户需求,同时满足质量标准和时间要求。
测试活动中,如果发现需求文档不完善或者不准确,怎么处理?
测试需求分析 发现需求文档不完善或者不准确,应该立即和相关人员进行协调交流。
软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。那么软件系统的用户文档包括哪些?
用户手册
安装和设置指导
联机帮助
指南、向导
样例、示例和模板
授权/注册登记表
软件系统中除用户文档之外,文档测试还应该关注哪些文档?
开发文档
软件需求说明书
数据库设计说明书
概要设计说明书
详细设计说明书
可行性研究报告
管理文档
项目开发计划
测试计划
测试报告
开发进度月报
开发总结报告
什么是系统瓶颈?
系统瓶颈指系统中影响整体性能的最慢或最拥堵的部分或组件。当系统出现瓶颈时,系统的性能将受到限制,导致系统的响应时间变慢,处理速度下降,甚至可能导致系统崩溃。系统瓶颈通常是由于系统中某些资源的不足或某些操作的复杂度过高导致的。为了解决系统瓶颈问题,需要对系统进行性能优化,找出并解决瓶颈所在的问题。
软件文档测试主要包含什么?
软件文档测试主要包含以下几个方面:
需求测试
设计测试
用户手册测试
API文档测试
测试计划和测试报告测试
总的来说,软件文档测试主要包括对需求、设计、用户手册、API文档、测试计划和测试报告等文档的测试,以确保软件文档的质量和可靠性。
完全测试程序是可能的吗?
对软件进行完全测试,找到全部的软件缺陷,使软件"零缺陷"发布是不可能的实现的。主要有以下原因:
完全测试比较耗时,时间上不允许;
完全测试通常意味着较多资源投入,这在现实中往往是行不通的;
输入量太大,不能一一进行测试;
输出结果太多,只能分类进行验证;
软件实现途径太多;
软件产品说明书没有客观标准,从不同的角度看,软件缺陷的标准不同:
软件测试有哪些风险和问题
测试时间不够
测试资源的及时到位
测试人员的技能需求
开发进度的变化,需求的变更
开发部门的版本控制
软件测试人员就是QA吗?
QA指质量保证,主要职责是创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷。QA日常工作重要内容是检查与评审。
软件测试人员的职责是尽可能早的找出软件缺陷,确保得以修复。测试人员的主要工作是测试。
软件测试和质量是相辅相成的关系,都是为了提高软件质量而工作。
如何减少测试人员跳槽带来的损失?
通常情况下,企业能为员工提供足够大的发展空间时,如果不是待遇特别低,员工都不会主动离开企业。因此我们要想留住员工,管理者就应该把员工的个人成长和企业的发展联系起来,为员工设定合理发展规划并付诸实现。以下是一些减少测试人员跳槽带来的损失的建议:
提供良好的工作环境
提供培训和发展机会
建立良好的团队文化
提供有意义的工作
了解测试人员的需求
测试产品与测试项目的区别是什么?
测试产品指一个软件产品的测试,包括测试计划、测试用例、测试执行和测试报告等。
测试项目则指一个测试任务的集合,包括多个测试产品的测试,以及测试环境的搭建、测试数据的准备、测试工具的选择和测试团队的组织等。
测试产品是测试项目的组成部分,测试项目是测试产品的集合。测试产品是一个具体的测试任务,而测试项目则是一个更加复杂的测试任务集合。
测试环境一般分为哪几种?
测试环境一般可以分为以下几种:
开发环境:也称为开发测试环境,是软件开发人员在进行软件开发时使用的环境,通常包括开发工具、编译器、调试器等。
测试环境:也称为集成测试环境,是测试人员在进行软件测试时使用的环境,通常包括测试工具、测试数据、测试设备等。
模拟环境:也称为仿真测试环境,是模拟真实环境进行测试的环境,通常用于测试软件在不同环境下的表现,例如网络环境、操作系统环境等。
生产环境:也称为生产测试环境,是软件正式上线后用户使用的环境,通常包括硬件设备、软件系统、数据库等。
SIT测试和UAT测试的区别
SIT(System Integration Testing):系统集成测试,是在系统开发完成后,进行系统整体测试的过程。其目的是测试系统各个模块之间的接口和交互,以确保系统能够正常运行。SIT测试通常由开发人员和测试人员共同完成。
UAT(User Acceptance Testing):用户验收测试,是在SIT测试完成后,由最终用户进行的测试过程。其目的是测试系统是否满足用户的需求和期望,以确保系统能够正常使用。UAT测试通常由用户和测试人员共同完成。
测试工具在测试工作中是什么地位?
测试工具可以帮助测试人员更高效地执行测试任务,提高测试质量和效率,降低测试成本和风险。以下是测试工具在测试工作中的几个方面的作用:
1. 自动化测试:测试工具可以帮助测试人员实现自动化测试,减少手动测试的工作量,提高测试效率和准确性。
2. 测试管理:测试工具可以帮助测试人员管理测试用例、测试计划、测试进度和测试报告等,提高测试管理的效率和可靠性。
3. 性能测试:测试工具可以帮助测试人员进行负载测试、压力测试、性能测试等,评估系统的性能和稳定性,提高系统的可靠性和可用性。
4. 安全测试:测试工具可以帮助测试人员进行漏洞扫描、安全测试等,评估系统的安全性和风险,提高系统的安全性和防护能力。
5. 数据管理:测试工具可以帮助测试人员管理测试数据,包括测试数据的生成、存储、备份和还原等,提高测试数据的质量和可靠性。
说说你对软件配置管理的理解?
软件配置管理是一种管理和控制软件开发过程中所涉及的各种配置和变更的方法。它包括对软件开发过程中所涉及的各种配置项进行管理和追踪,以确保软件的正确性、可靠性和可维护性。软件配置管理的目标是确保软件的版本控制、变更管理、构建管理、发布管理和测试管理等方面的有效性和可靠性,以确保软件开发过程的顺利进行和软件质量的提高。在软件配置管理中,需要使用各种工具和技术,如版本控制系统、构建工具、持续集成工具、测试工具等,以支持软件开发过程中的各种活动。
什么是版本控制,常用的版本控制系统有哪些?
版本控制是一种管理软件代码和文件变更的方法,它可以追踪文件的修改历史、恢复旧版本、协同开发等。常用的版本控制系统有以下几种:
Git:一个开源的分布式版本控制系统,支持分布式版本控制,可以在本地存储代码库,也可以在远程服务器上存储代码库,支持多人协同开发。
SVN:一个开放源代码的版本控制系统,是集中式版本控制系统,所有代码都存储在中央服务器上,开发者需要从服务器上获取最新的代码,然后进行修改和提交。
开发人员老是犯一些低级错误怎么解决?
从开发管理入手,制定规范的开发流程,甚至可以制定惩罚制度,还有就是软件开发前做好规划设计。
加强测试,具体做法就是加强开发人员的自己测试,把这些问题"消灭"在开发阶段,
此通过规范的缺陷管理来对开发人员进行控制,比如测试部门整理出常见的缺陷,让开发人员自己对照进行检查,以减少这类低级错误的发生。
测试在开发阶段的作用/简述软件测试与软件开发之间的关系?
项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。
需求分析阶段:确定测试需求分析、系统测试计划的制定,评审后成为管理项目。
详细设计和概要设计阶段:确保集成测试计划和单元测试计划完成。
编码阶段:由开发人员进行自己负责部分的测试代码。在项目较大时,由专人进行编码阶段的测试任务。
测试阶段(单元、集成、系统测试):依据测试代码进行测试,并提交相应的测试状态报告和测试结束报告。
对测试最大的兴趣在哪里?为什么?
作为一个测试工程师,我的最大兴趣在于通过测试帮助团队提高软件质量,从而为用户提供更好的产品体验。同时,我也非常喜欢测试过程中的挑战和学习,因为测试需要不断学习新的技术和方法,以适应不断变化的软件开发环境。
测试工作进行到一半,发现时间不够,你如何处理
优先级排序:对测试任务进行优先级排序,先测试最重要的功能,确保关键功能没有问题。
调整测试计划:将时间充分利用,确保测试工作的最大效益。
延长测试时间:需要与项目经理或者客户进行沟通,确保延长测试时间不会影响项目的进度。
压缩测试范围:只测试最关键的功能,确保软件的核心功能没有问题。
无论采用哪种方式,都需要与项目经理或者客户进行沟通,并且在测试报告中说明原因和采取的措施。
怎样才能成为一个优秀的测试工程师
要成为一个优秀的测试工程师,需要具备以下几个方面的能力:
1. 熟悉软件测试的基本原理和方法,掌握测试流程和测试文档的编写方法。
2. 具备良好的沟通能力和团队合作能力,能够与开发人员、产品经理等团队成员进行有效的沟通和协作。
3. 具备良好的分析和解决问题的能力,能够快速定位问题并提出解决方案。
4. 具备一定的编程和脚本编写能力,能够编写自动化测试脚本和工具。
5. 持续学习和自我提升,了解最新的测试技术和工具,不断提高自己的技能和水平。
6. 具备良好的测试思维,能够从用户角度出发,发现潜在的问题和缺陷。
总之,成为一个优秀的测试工程师需要不断地学习和实践,不断提高自己的技能和能力。同时,也需要具备良好的沟通能力和团队合作能力,能够与团队成员协作完成测试任务。
在您参与或负责的项目测试中,发生过哪些棘手的问题,是如何解决的?
棘手的问题:
测试用例设计不全面或不够有效,导致遗漏了一些重要的测试场景和用例。
缺陷管理和跟踪不够及时和有效,导致一些重要的缺陷被忽略或漏掉。
开发人员和测试人员之间的沟通不够充分和有效,导致一些问题没有得到及时的解决。
解决方法:
对测试用例进行全面的回顾和补充,确保测试用例的全面性和有效性。
加强缺陷管理和跟踪,及时记录和跟踪缺陷,并与开发人员进行沟通和确认。
加强与开发人员的沟通和协作,及时反馈测试结果和问题,并与开发人员一起探讨和解决问题。
项目版本执行过程中,测试人员如何把控测试进度?
测试人员可以通过制定测试计划、设计测试用例、执行测试用例、缺陷管理和跟踪以及报告测试进度等方式来把控测试进度。
二、需求分析
测试人员需要何时参加需求分析?
越早介入需求分析越好, 因为测试人员对需求理解越深刻 ,对测试工作的开展越有利, 可以尽早的确定测试思路 ,减少与开发人员的交互, 减少对需求理解上的偏差。这样做可以带来如下好处:
测试人员全程参与需求分析,对需求了解得很深入,减少了很多与开发人员的交互,节省了时间。测试人员参与前期开发讨论,直接掌握了不清晰的需求点。
早期确定测试用例的编写思路,为测试打好基础
可以获取一些测试数据,为测试用例设计提供帮助
可以发现需求不合理的地方,降低了测试成本。
如果需求一直在变化,测试人员应该怎么办?
紧密跟踪变化:以便了解需求会怎样改变,从而可以尽早地改变测试计划和策略。
及时测试:测试人员需要尽早地测试变更,以便在早期发现和纠正问题。
自动化测试:对于一些稳定的功能模块,可以采取自动化手段回归测试,可以减少测试的时间和成本。
优先级管理:测试人员需要管理测试用例的优先级,以确保他们首先测试最重要的功能和变更。
三、测试模型
常见的测试模型有哪些?
瀑布模型
特点:(1)是线性模型的一种,每一个阶段执行一次,(2)文档驱动
优点:开发的各个阶段比较清晰,当前阶段完成后,只需关注后续阶假
缺点:(1)不响应需求的变化,(2)风险往往颜值后期才显露,失去去及早纠正机会
V模型(重点)
V模型本身的软件开发中瀑布模型的变种,它反映了测试活动与分析和设计的关系
V模型标明了测试过程中本身存在的不同阶段,从左到右,描述开发过程中和测试过程间的阶段对应关系
优点:测试V模型既包含了底层测试又包含了高层测试;
缺点:当需求变更时将会导致返工量非常大,模型灵活比较低
双V 模型(重点)
介绍:测试伴随整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样测试
优点:(1)强调测试办税着整个软件开发周期,而且测试的对象不仅仅是程序,还包括需求和设计
(2)更早地介入测试,能尽早的发现缺陷进行修复
缺点:对测试技术要求高,事件起来困难
快速原型模型
解释:在开发知识系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作
特点:(1)快速构造软件模型。(1)支持用户参与。
优点:克服瀑布的缺点,减少由于软件需求不明确带来的项目开发风险。
缺点:不适合大型系统的开发(适合小型的,灵活性高的系统)
螺旋模型
特点:引进了风险分析活动
优点:螺旋模型很大程度上是一种风险驱动的方法体系
缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识
质量模型
软件质量的定义
软件质量指软件产品满足用户需求和期望的程度
软件质量的八大属性
同9126相比,25010将质量模型从原来的6个属性扩展到8个属性,新增加的内容是安全性 和 兼容性, 另外还对功能性、易用性和可维护性做了修改
四、测试计划
测试计划的定义
测试计划指为了达到测试目标,规划测试活动和资源的过程。
测试计划由谁编写?
测试计划是由测试经理编写,我们在测试计划中了解到自已是此次项目组的测试工程师。
测试计划工作的目的是什么?
测试计划工作的主要目的是规划和组织测试活动,确保软件测试的有效性和高效性。
测试计划的内容都包括什么?/测试计划都包括哪些项?/测试计划要安排哪些方面?
测试计划通常包括以下内容:
测试的目标和范围
测试的策略和方法
测试的资源和时间
测试的环境和配置
测试的风险和问题
测试的报告和评估
测试的验收标准和准则
测试计划编写的六要素?/制定测试计划之前需要了解什么问题?
why:为什么要进行这些测试
what:测试哪些方面,不同阶段的工作内容
when:测试不同阶段的起止时间
where:相应文档,缺陷的存放位置,测试环境等
who:项目有关人员组成,安排哪些测试人员进行测试
how:如何去做,使用哪些测试工具以及测试方法进行测试。
怎么做好测试计划?
理解系统。从整个系统的高度了解被测系统必须满足的功能和非功能性需求。利用涉及整个系统的文档,形成对系统的整体了解。
及早介入。可以增加对客户需求,客户间问题,潜在风险,以及最重要的功能方面的理解。
测试期望。程序员的期望是什么?客户的期望是什么?销售对测试的期望又是什么?测试目标必须是绝对的,以免说不清楚是否达到目标。
吸取教训。把以前工作中学习到的经验教训运用过来,对确定测试策略很有作用。
工作量大小。完成测试需要多少工作量?需要多少人员?
技术选择。系统会采取什么技术?系统会采用什么架构?过这些信息有助于确定测试策略和测试工具。
时间表。系统开发和测试分配的时间有多长?截止日期是什什么时候?
设计系统测试计划需要参考哪些项目文挡?
软件需求规格说明书
系统测试计划是否需要同行审批,为什么?
需要,系统测试计划属于项目阶段性关键文档,因此需要评审。
什么是测试资源?
测试资源指在测试过程中所需的各种资源,包括硬件、软件、人员、数据等。具体来说,测试资源可以包括以下几个方面:
测试设备:如计算机、服务器、移动设备、网络设备等。
测试工具:如测试管理工具、自动化测试工具、性能测试工具、安全测试工具等。
测试人员:如人数、经验和专长、全职还是兼职等。
测试数据:如测试用例、测试数据集、测试报告等。
测试环境:如测试服务器、测试数据库、测试网络等。
五、测试策略
什么是”测试策略 “?
测试策略指在软件测试过程中,为了满足测试目标和质量要求,制定的一系列测试规划和测试方法。
测试策略包括哪些?
测试策略通常包括测试范围、测试目标、测试类型、测试方法、测试环境、测试资源、测试计划、测试进度、测试风险、缺陷管理等内容。
系统测试的策略有哪些?
功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,
六、测试类型
软件测试的类型
按测试阶段划分
单元测试:用于测试软件的最小可测试单元,通常是指软件中的一个函数、方法或类。
集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。
系统测试:对整个系统进行测试,以验证其是否满足用户需求和规格说明书的要求。
按是否覆盖代码划分
白盒测试:基于软件内部结构和实现细节进行测试的方法,测试人员需要了解软件的源代码、算法和数据结构等内容,以便进行测试。
黑盒测试:基于软件功能需求和规格说明进行测试的方法,测试人员不需要了解软件的内部结构和实现细节,只需关注软件的输入输出和功能是否符合需求。
灰盒测试:黑盒测试和白盒测试的结合,既关注软件的功能是否符合需求,又关注软件的内部结构和实现细节,以便更全面地进行测试。
按是否运行划分:
静态测试:静态测试是一种基于文档和代码的测试方法,测试人员主要通过检查软件的文档、源代码、设计模型等静态元素来发现问题。
动态测试:动态测试是一种基于运行时行为的测试方法,测试人员需要运行软件并执行测试用例来发现问题。
按功能测试划分:
逻辑功能测试:主要用于验证软件的逻辑功能是否符合需求和设计要求。
界面测试:又称UI测试,主要用于验证软件的用户界面是否符合设计要求和用户需求。
易用性测试:测试软件的易用性和用户界面的友好程度。
安全测试:测试软件的安全性和可靠性的方法,包括漏洞扫描、渗透测试、授权测试等。
兼容性测试:测试软件在不同操作系统、浏览器、设备等环境下的兼容性。
按是否自动化划分:
人工测试:测试人员通过手工操作软件进行测试的方法,包括功能测试、性能测试、安全测试等。
自动测试:利用自动化测试工具进行测试的方法,可以自动化执行测试用例、生成测试报告等操作,提高测试效率和准确性。
按性能测试划分:
一般性能测试:评估系统在不同负载条件下的性能表现。包括压力测试、负载测试、容量测试等。
稳定性测试:主要用于测试软件在长时间运行过程中的稳定性和可靠性。
负载测试:评估系统在正常工作负载下的性能表现。在负载测试中,测试人员会模拟一定数量的用户请求,以测试系统的响应能力、稳定性和可靠性。负载测试通常会持续较短时间,以评估系统的瞬时性能。
压力测试:评估系统在超出正常工作负载的情况下的性能表现。在压力测试中,测试人员会模拟大量的用户请求,以测试系统的响应能力、稳定性和可靠性。压力测试通常会持续较长时间,以评估系统的持久性能。
其他划分:
冒烟测试:主要用于在进行正式测试之前,快速测试软件的基本功能是否正常、稳定。
回归测试:指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错
误。
随机测试:随机测试是没有测试用例、期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行抽查。
验收测试:由客户或用户对软件进行测试,以验证软件是否满足用户的需求和预期。验收测试分为Beta测试与Alpha测试。
Beta测试:在软件开发的早期阶段,由开发团队内部进行的测试。通常在开发团队内部进行,测试人员可以是开发人员或其他团队成员。
Alpha测试:在软件开发的后期阶段,由外部用户进行的测试。通常需要招募一些志愿者或付费用户来参与测试,并且在测试期间需要对测试结果进行跟踪和分析。
黑盒测试主要是为了发现那几类错误?
基于规格说明的功能错误
基于规格说明的构件或系统行为错误
基于规格说明的性能错误
面向用户的使用错误
黑盒接口错误
黑盒测试和白盒测试常用的测试方法有哪些?
黑盒:等价类划分法,边界分析法,因果图法和错误推测法。
白盒:语句覆盖、判定覆盖、条件覆盖、路径覆盖、数据流覆盖。
单元测试的策略有哪些?
逻辑覆盖,循环覆盖,同行评审,桌前检查,代码走查,代码评审,静态数据流分析
简述黑盒测试和白盒测试的优缺点?
黑盒测试优点:
比较简单,不需要了解程序内部的代码及实现:
与软件的内部实现无关:
从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题:
基于软件开发文档,所以也能知道软件实现了文档中的哪些力能;
在做软件自动化测试时较为方便。
黑盒测试缺点:
不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%3;
自动化测试的复用性较低。
白盒测试优点:
帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中中隐藏的问题。
白盒测试缺点:
程序运行会有很多不同的路径,不可能测试所有的运行路径;
测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
系统庞大时,测试开销会非常大;
没有产品说明书和需求文档地情况下能够进行黑盒测试吗?
可以,可以通过探索测试进行测试,具体做法是测试人员根据自己的专业技能、领域知识等不断的的深入了解测试对象、理解软件功能,进而发现缺陷。
这种做法基本上把软件当成了产品说明书,测试过程中要和开发人员不断的进行交流。在项目进度压力比较大的时候,可以作为加急测试方案。
这种测试有很大风险,没有产品说明书和需求文档的情况下,测试人员可能无法全面了解软件的功能和特性,从而可能会遗漏一些测试用例。此外,测试人员也无法验证软件是否满足所有的需求,因为他们无法确定所有的需求。
简述集成测试的过程
制定集成测试计划
设计集成测试用例
准备测试环境
执行测试用例
发现和修复缺陷
重复执行测试用例
完成集成测试
集成测试进入准则?退出准则?
进入准则:
所有单元测试都已完成并通过。
所有模块都已完成并经过测试。
所有模块之间的接口已定义和测试。
测试环境准备就绪
集成测试计划已制定并经过评审。
退出准则:
所有测试用例都已执行并通过。
所有缺陷都已修复并经过验证。
所有性能和负载测试都已完成并通过。
所有安全和兼容性测试都已完成并通过。
集成测试报告已编写并经过评审。
项目经理已确认集成测试的完成。
系统测试的进入原则和退出原则
进入原则:
开发完成
系统集成完成
测试环境准备就绪
退出原则:
测试用例覆盖率达到预期
缺陷率符合要求
系统稳定性达到要求
客户验收通过
集成测试通常都有那些策略?
自下而上集成测试策略:从最底层的模块开始进行测试,逐步向上测试到整个系统。这种策略可以早期发现底层模块的问题,但是需要等到整个系统集成后才能进行系统级别的测试。
自上而下集成测试策略:从整个系统开始进行测试,逐步向下测试到底层模块。这种策略可以早期发现整个系统的问题,但是可能需要等到底层模块集成后才能进行底层模块的测试。
模块驱动的集成测试策略:先对每个模块进行测试,然后对模块之间的接口进行测试,最后进行整个系统的测试。这种策略可以早期发现模块之间的问题,但是需要花费更多的时间和精力。
增量式集成测试策略:将系统分成多个模块,每次只集成一个或几个模块,逐步增加系统的功能和复杂度。这种策略可以更早地发现问题,并且可以进行快速反馈和修复。
并行集成测试策略:将不同的模块分配给不同的测试团队进行测试,以加快测试的速度和效率。这种策略可以同时进行多个测试活动,但需要协调不同测试团队之间的工作。
什么是文档测试
指检查用户文档(如用户手册)的清晰性和精确性。用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。
怎么做好文档测试
仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。
检查文档的编写是否满足文档编写的目的
内容是否齐全,正确
内容是否完善
标记是否正确
文档测试要注意什么?
文档的读者群、文档的术语、文档的正确性、文档的完整性、文档的一致性、文档的易用性、样例与示例、文档的语言。
什么时候适用自动化测试?
可重复的,对于数据能进行精确的大批量的比较的;
回归测试
在机械化的执行和比较
什么时候不宜使用自动化的情况
周期短并且一次性的项目
进度非常紧张的项目
需求非常不稳定的项目
界面尚未确定
使用了很多第三方或自定义控件的项目
七、测试流程
测试的工作流程/软件测试的过程/测试的步骤/一套完整的测试应该由哪些阶段组成/你以前工作时的测试流程是什么?(根据以下灵活回答)
需求分析
编写测试计划;
部署测试环境
编写测试用例;
评审测试用例;
执行测试用例;
缺陷管理;
测试报告的输出。
测试结束的标准是什么?(测试出口准则/测试完成标准)
测试超过了预定时间,则停止测试。
执行了所有的测试用例,但并没有发现故障,则停上测试。
使用特定的测试用例设计方案作为判断测试停止的基础
正面指出停止测试的具体要求,即停止测试的标准可定义为查出某一预订数目的故障。
根据单位时间内查出故障的数量决定是否停止测试...
软件测试的原则
所有的软件测试都应追溯到用户需求;
尽早和不断地进行软件测试;
测试用例应由测试输入数据和对应的预期输出结果这两部分组成。
充分注意测试中的群集现象(2/8原则:80%的错误集中在20%的程序模块中);
程序员应避免检查自己的程序;
严格执行测试计划,排除测试的随意性。
应当对每个测试结果做全面检查;
妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
八、测试用例
什么是“测试用例”(测试案例)
测试用例是为执行软件系统测试而设计和编写出的一组文档,主要由测试输入、执行条件、预期结果等内容组成。
测试用例的作用/为什么要写测试用例
便于理清测试思路,确保需覆盖测试的功能点无遗漏;
便于测试工作量的评估;
便于提前准备测试数据;
便于把控测试工作进度;
便于回归测试;
便于测试工作的组织,提高测试效率,降低测试交接成本。
测试用例的特征/好的测试用例有哪些特点?/测试用例制定的原则?/编写测试用例要注意什么问题?
有效性:测试用例的能够被使用,且被不同人员使用测试结果一致。
可重复性:好的测试用例具有重复使用的功能。(回归测试)。
易组织性:好的测试用例会分门别类地提供给测试人员参考和使用(功能、性能、易用分类编号)。
清晰、简洁:好的测试用例描述清晰,每一步都应有相应的作用,有很强的的针对性,不应出现一些无用的操作步骤。
可维护性:由于软件开发过程中需求变更等原因的影响,常常对测试用例进行修改、增加、删除等,以便测试用符合相应测试要求。
怎么编写测试用例(测试案例)/测试用例的要素/描述测试用例设计的完整过程
测试用例编号:由字母、字符、数字组合而成的字符串,有唯一性,易识别性。
测试项目:所在测试用例所属大类、被测需求、被测模块、被测单元等
测试用例名称:对测试用例的简单描述
优先级:一般分为高、中、低三等。
前置条件:测试用例执行前需要满足的条件,例如需要准备的测试数据、测试环境等。
操作步骤:明确的给出每一个操作的详细描述。
预期结果:测试用例执行后的预期结果,以及如何判断测试用例是否通过。
实际结果:测试用例执行后的实际结果,以便于测试人员进行对比和分析。
测试用例状态:例如通过、失败、阻塞等。
以上是测试用例中常见的要素,不同的测试团队和项目可能会有所不同。
如何设计才能保证测试用例的覆盖率?/如何保证产品的上线质量?/如何保证用例覆盖到罕见缺陷?/如何降低漏测率?
充足的设计时间
充分的需求分析
每一个功能点都有用例覆盖
严格的评审流程
保障输出都是有效的
在测试执行过程中,根据实际的项目情况,对用例做增加和修改。
bug回归
发布前的功能回归。
编写测试用例的方法?/测试用例的基本设计方法
等价类划分法
将程序的输入域划分为若干个区域(等价类),并在每个等价类中选择一个具有代表性的元素生成测试用例。该方法是常用的黑盒(Blackbox Testing)测试用例(Testcase)设计方法。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
有效等价类指合理的、有意义的输入数据构成的集合,它能检验程序是否可以实现规格说明中所规定的功能需求。
无效等价类指不合理的或无意义的输入数据所构成的集合,它能检验程序在不符合规则的数据输入下,是否会有异常;无效等价类至少应有一个,也可能有多个,视具体情况而定。
例2:
边界值分析法
是对等价类划分的一个补充,边界值一般都是从等价类的边缘值去寻找。包括最小值、最大值、临界值等。
取值范围:正好等于,刚刚大于,刚刚小于,(0,负数)
上点:边界上得点(正好等于)
离点:距离上点最近的点(刚好大于、刚好小于)
内点:范围内的点(区间范围内的数据)
因果图法
通过绘制因果图来分析系统中的因果关系,从而确定需要测试的场景。
利用因果图导出测试用例需要经过以下几个步骤:
找出所有的原因,原因即输入条件或输入条件的等价类
找出所有的结果,结果即输出条件。
明确所有输入条件之间的制约关系以及组合关系。
哪些条件不能组合到一起,哪些条件可以组合到一起
明确所有输出条件之间的制约关系以及组合关系。
哪些输出结果不能同时输出,哪些输出结果可以同时输出
找出什么样的输入条件组合会产生哪种输出结果
把因果图转换成判定表/决策表。
为判定表/决策表中的每一列表示的情况设计测试用例。
例如,售货机:假设投币只有1元和5毛两种;零钱默认都是5毛;有橙汁和可乐两种饮料,饮料价格均为5毛;机器没零钱的时候零钱找完的灯会亮
第一步:梳理输入与输入,输入与输出之间的约束关系
输入:
(1)售货机有零钱
(2)投币1元
(3)投币5毛
(4)按橙汁按钮
(5)按可乐按钮
输出:
(21)零钱找完的灯亮
(22)退回1元
(23)退回5毛
(24)出橙汁
(25)出可乐
输入与输入的约束关系:
(2)、(3)是异的关系,至多出现一个,可能一个都不发生
(4)、(5)是异的关系,至多出现一个,可能一个都不发生
输入与输出的约束关系:
(1)、(21)是非的关系
第二步:绘制因果图
第三步:绘制判定表
第四步:根据判定表写测试用例
错误推测法
错误推测法其实它不同于等价类划分法或者边界值分析法,它是对有效等价类和边界值分析法的一个补充。测试人员可能会根据自己的经验和知识,推测出一些可能存在的错误,如搜索结果不准确、搜索速度过慢、搜索功能崩溃等。然后,测试人员会设计测试用例来验证这些错误是否存在。
场景法
测试人员会根据用户的实际使用场景和需求,设计测试用例来验证软件是否符合用户的期望。
例如:支付宝个人账户注册---验证用户名
需求
输入手机号或者电子邮箱作为账户名
输入正确验证码
两项验证成功,填写账户信息
如果一项验证不正确(输入手机号或电子邮箱格式错误),报错L
验证码输入错误,报错M
描述测试用例设计的完整过程?/测试用例如何设计的?
根据需求文档、概要设计、测试计划、测试方案细分出各功能模块的测试项。
根据各测试项,按照概要设计、详细设计以及测试方案中测试的覆盖率细分出测试子项。
按测试子项、根据测试用例的设计方法编辑测试用例
然后根据一下步骤来:
选用适合的用例管理工具(如xmind,excel、禅道)。
用例一定要及时更新(补充新的想法,删除过时的需求)。
做好用例分级。
做好用例评审,写用例之前可以征询相关人员的意见,如果评审通过可以参考其执行测试,如果未通过,需要继续修改直到通过为止。
可以考虑结对编写。
要全面、包括功能、性能、兼容性、安全性、易用性、容错性等。
注意把握适当的颗粒度。
你认为做好测试用例工作的关键是什么?
需求和设计文档的理解程度
对系统的熟悉程度
以最少的用例在合理的时间内发现最多的问题
测试用例的优先划分
测试用例发生变更的流程?
测试用例没有变更流程
1.8.7什么时候编写测试用例?依据是什么?如何保证测试用例与需求的一致性?需要同行评审吗?
在测试计划完成之后,按照计划进度编写测试用例。
依据是软件需求规格说明书
通过同行评审来对用例进行评审,需要同行评审
九、软件缺陷(bug)
什么是bug/软件缺陷
软件的Bug指软件中(包括程序和文档)不符合用户需求的问题。
常见的软件Bug分为以下几类:
软件未达到客户需求的功能和性能;
软件超出客户需求的范围;
软件出现客户需求不能容忍的错误;
软件的使用未能符合客户的习惯和工作环境。
什么是缺陷报告
缺陷报告指在软件测试过程中,测试人员发现了一个或多个缺陷,并将其详细描述、记录和提交给开发团队的过程。缺陷报告通常包含缺陷的类型、严重程度、重现步骤、测试环境、预期结果、实际结果等信息,以便开发团队能够快速定位和修复缺陷。
bug的严重程度的划分/bug评级别
缺陷的严重程度指缺陷对软件功能和性能的影响程度。可以分为以下几个等级:
致命:系统崩溃、数据丢失、数据毁坏、安全性被破坏。
严重:操作性错误、结果错误、功能遗漏。
一般:小问题、拼写错误、UI布局、罕见错误。
建议:对产品的改进建议。
bug的优先级别的划分
缺陷的优先级别指缺陷修复的紧急程度,可以分为以下几个等级:
紧急:影响进一步测试,需要立即修复。
高:必须在版本发布前修复。
中:必须要修复,不一定马上修复,可以讨论确定再某个时间点修复好。
低:对产品影响较少,不修复也不影响产品的发布会,在时间不允许的情况下可以暂时不修复。
软件测试缺陷报告的 5C原则
Correct(准确):每个组成部分的描述准确,不会引起误是解:
Clear(清晰):每个组成部分的描述清晰,易于理解;
Concise(简洁):只包含必不可少的信息,不包括任何多余的内容:
Complete(完整):包含复现该缺陷的完整步骤和其他本质信息;
Consistent(一致):按照一致的格式书写全部缺陷报告。、
软件缺陷的原则
软件缺陷区别于软件bug,它是在测试过程中出现的对系统有影响的,但是在设计中没有的或者对修改后的bug测试和开发人员有不同意见等
软件未达到产品说明书标明的功能。
软件出现了产品说明书指明不会出现的错误。
软件功能超出产品说明书指明范围。
软件未达到产品说明书虽未指出但应达到的目标。
软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
缺陷报告怎么写/缺陷描述(报告单)包括哪些内容?/缺陷报告的要点/缺陷报告包括哪些项?
缺陷报告应包括的内容:
标题:简要描述缺陷的名称或关键字。
缺陷描述:详细描述缺陷的现象、表现和影响。
复现步骤:描述如何复现缺陷,包括测试环境、测试数据和操作步骤等。
期望结果:描述缺陷应该产生的正确结果。
实际结果:描述缺陷实际产生的错误结果。
缺陷分类:根据缺陷的类型、严重程度和优先级别进行分类。
缺陷截图:提供缺陷现象的截图或录屏,以便开发人员更好地理解缺陷。
环境信息:提供测试环境的相关信息,包括操作系统、浏览器版本、数据库版本等。
缺陷状态:描述缺陷的状态,如已复现、已修复、已验证等。
缺陷影响范围:描述缺陷对系统的影响范围和严重程度。
缺陷报告人:记录缺陷报告人的姓名和联系方式。
如何提高缺陷的记录质量?
缺陷的标题尽量简单、明确、完整;
尽量使用惯用的表达术语和表达方法,保证表达准确专业;
一个缺陷报告只包括一个缺陷,复现步骤描述清楚;
是UI问题的话,尽量配上截图标注好有问题的地方;功能问题,尽量配上视频;闪退一类的bug配上log日志等;
一些特殊数据出现的bug,需要备注好数据信息;
一些非必现的问题,多测试几遍,然后备注清楚bug的复现率图;
如果是兼容性问题需要备注上设备型号、操作系统及浏览器版本等信息
缺陷尽量保证不重复提交;
缺陷状态
新建:测试人员提交的bug、优化或者建议的状态。
进行中:开发人员确认是bug,在修复bug过程的状态。
已解决:开发人员已修复的bug状态。
已关闭:测试人员验证修复的bug,确定已解决问题的状态。
不解决:开发人员认为不是bug,拒绝解决问题的状态或者无法解决问题的状态。
再次打开:测试人员验证修复的bug,发现没有完全修复好的bug,重新大会给开发人员的状态。
延迟(later):开发人员认为bug不急于修复,可以放置一段时间再修复状态。
缺陷类型
bug:测试人员通过测试发现的问题称为bug。
需求:需要产品经理对需求进一步梳理。
建议:是软件产品改进建议。
优化:功能已实现,需要优化问题,可以师用户体现优化、性能优化。
bug的生命周期
缺陷处理流程/写出bug流转的步骤/bug的流转状态
发现的缺陷(bug)越多,说明软件缺陷越多吗?
不一定。发现的缺陷数量可能受多种因素影响,例如测试的深度和广度、测试用例的设计质量、测试环境的准确性等。因此,发现的缺陷数量不能单纯地用来评估软件的质量。
所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?
从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的的软件缺陷。
在进行软件缺陷修复时,需要根据缺陷的严重程度、影响范围、修复成本等因素进行综合考虑,以确定是否需要修复缺陷,以及修复的优先级和方式。
当开发人员说不是BUG时,你如何应付?/测试说是bug但是开发认为这个不是,怎么处理?
首先,将问题提交到缺陷管理库里面进行备案。
然后,要获取判断的依据和标准:
根据需求说明书、产品说明、设计文档等,确认实际结果是否与与计划有不一致的地方,提供缺陷是否确认的直接依据;
如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷:
根据用户的一般使用习惯,来确认是否是缺陷;
与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不掺杂个人情绪。
等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。
发现问题后你是如何判断其是否是BUG
根据软件的功能、性能、安全性等方面的预期行为与实际行为之间的差异来判断是否存在缺陷。如果实际行为与预期行为不一致,那么就可以将其视为潜在的缺陷或bug。
如何提交bug
一般使用缺陷管理工具来提交缺陷。
提交时需要对缺陷进行详细的描述,包括前提条件、复现步骤、预期结果、实际结果等。
需要提供相关的截图、日志或录像等证据来帮助开发人员更好地理解和复现缺陷。
还需要为缺陷设置优先级和严重程度,以便开发人员能够根据缺陷的优先级来进行处理。一般来说,缺陷的优先级和严重程度越高,开发人员处理的速度就越快。
以下为缺陷管理工具ezone界面:
以下为禅道的界面:
修复一个BUG而导致其他的BUG出现,该如何处理
帮助开发人员分析问题锁定原因然后进行新Bug的修正。
以下是一些处理这种情况的常用方法:
重新测试:在修复一个缺陷后,需要重新测试软件以确保修复的缺陷已经被解决。
回滚:如果修复一个缺陷导致其他严重的缺陷出现,我们可以考虑回滚到之前的版本,以便避免新的缺。
陷对软件造成更大的影响。在回滚之后,我们需要重新评估缺陷并采取相应的措施来解决它们。
优先级调整:在修复一个缺陷后,我们需要重新评估其他缺陷的优先级,以确保最紧急的缺陷得到及时。
的解决。同时,我们还需要重新评估修复新出现的缺陷的优先级,以便及时解决它们。
沟通:在修复一个缺陷后,我们需要及时与其他团队成员沟通,以便他们了解新出现的缺陷和我们的解。
决方案。这可以帮助我们更好地协调工作,并确保软件的质量和稳定性。
开发人员修复缺陷后,如何保证不影响其他功能?
回归测试:在修复缺陷后,运行回归测试来确保已修复的缺陷不会影响其他功能。
自动化测试:编写自动化测试脚本,以确保在修复缺陷后不会影响其他功能。
代码审查:对修复缺陷的代码进行代码审查,以确保代码变更不会影响其他功能。
版本控制:使用版本控制系统来跟踪代码变更,以便在需要时可以轻松地回滚到之前的版本。
分支管理:使用分支管理策略来确保修复缺陷的代码不会直接影响主干代码,从而减少对其他功能的影响。
系统测试阶段低级缺陷较多怎么办?
展开测试活动之前先进行冒烟测试,如果低级缺陷比较多严重,阻碍测试执行的话,我们会打回开发部,不执行测试。
为什么软件会有BUG/软件带来错误的主要原因有哪些?
需求不清晰或不完整:开发人员可能会开发出与实际需求不符合的软件。
设计缺陷:软件设计不合理、不完善或不严谨。
编码错误:编写代码时可能会出现语法错误、逻辑错误、算法错误等
资源限制:软件在运行时使用的资源超出了系统的限制,可能会导致软件出现错误。
环境问题:软件可能在某些特定的环境下出现错误,例如操作系统、网络环境、硬件配置等。
测试不足或测试不严谨:会导致软件中的错误没有被发现。
外部攻击:软件可能会受到黑客攻击或病毒感染,从而导致软件出现错误。
软件缺陷产生的原因
软件产品说明书(需求)--56%
设计--27%
编写代码--7%
其他--10%
十、测试报告
如何编写测试报告?/测试总结报告包括那些项/测试报告需要说明哪些内容
概述:包括本次测试的目的,测试的背景介绍;
测试环境:包括测试软硬件环境及配置,以及测试环境的网络拓扑图;
测试的一些参考资料;
测试参与人员,以及投入的时间情况说明;
测试的进度情况,包括计划进度和实际进度:
测试情况介绍,包括测试的内容项说明。如功能测试具体的测试项,测试通过情况:性能测试的测
试项,测试通过情况等;
缺陷的统计和分析,包括迭代次数,缺陷的分布情况,缺陷的覆盖情况,缺陷的发展趋势等;
本次测试的结论:
测试人员就本次测试的一些建议。
十一、测试案例
给你一个网站,你应该怎么测试?
功能测试:测试网站的各个功能是否按照要求正常工作,包括登录、注册、搜索、下单、支付等。
兼容性测试:测试网站在不同浏览器、操作系统、设备上的兼容性,确保网站在不同环境下都能正常工作。
性能测试:测试网站在高并发情况下的性能表现,包括响应时间、负载能力、并发用户数等指标。
安全测试:测试网站的安全性,包括防止 SQL 注入、XSS 攻击、CSRF 攻击等方面。
可用性测试:测试网站的易用性和用户体验,确保网站的界面设计、交互方式等方面符合用户习惯和期望。
冒烟测试:测试网站的核心功能是否正常工作,以便在发布前快速排查重要问题。
回归测试:在网站进行重大更新或修改后,测试之前已经测试过的功能是否仍然正常工作。
一个有广告的纸杯子,请设计测试用例?
测试项目:杯子
需求测试:查看杯子使用说明书界面测试:查看杯子外观
功能度:用水杯装水看漏不漏;水能不能被喝到安全性:杯子有没有毒或细菌
可靠性:杯子从不同高度落下的损坏程度
可移植性:杯子在不同的地方、温度等环境下是否都可以正常使使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况:盛上汽油(案例二)放24小
时检查泄漏时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
跌落测试:杯子加包装(有填充物),在多高的情况摔下不破损
震动测试:杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路\公路\航空运输
一个身份证号码输入框,怎么设计用例?
输入有效的身份证号码:输入符合规范(包括地址码/生日码、顺序码和校验码)的18位身份证号码,验证输入框是否能够正确接受并显示该号码。
输入无效的身份证号码:输入不符合规范的身份证号码,例如长度小于18位或者长度大于18位、包含非法字符等,验证输入框是否能够正确提示用户输入错误,并阻止用户提交。
校验末尾是X的情况
校验非数字的情况,是否有正确的提示信息(包括大小写字母、汉字、特殊字符、标点符号、空格等)
唯一性校验:输入已经存在的身份证号码,验证输入框是否能够正确提示用户该号码已存在,并阻止用户提交。
必填项校验:不输入任何值,直接提交表单,验证输入框是否能够正确提示用户该字段不能为空,并阻止用户提交。
输入边界值:输入最小值和最大值的身份证号码,验证输入框是否能够正确接受并显示这些值。
登录功能怎么设计测试用例?
假设登录界面包含以下字段
用户名(手机号、邮箱)
密码:(长度、字符类型)
验证码(图片?、数字?)
忘记密码
记住密码
登录按钮
取消按钮
功能测试:
用户名(手机号、邮箱)
是否可以输入正确的手机号或邮箱
是否可以输入不正确的手机号或邮箱
是否可以输入不存在的手机号或邮箱
是否可以输入已注销的手机号或邮箱
是否可以输入过长或过短的手机号或邮箱
是否可以输入特殊字符或空格等非法字符
密码:(6-18位,-字符类型:字母+数字组合,首位为字母)
长度测试:测试密码的最小长度和最大长度是否符合要求(6-18位)。
字符类型测试:测试密码是否只包含字母和数字,并且首位是否为字母。
特殊字符测试:测试密码是否允许输入特殊字符,如@、#、$等。
注册测试:测试用户在注册时是否可以成功设置密码。
登录测试:测试用户在登录时是否可以成功输入密码。
修改密码测试:测试用户是否可以成功修改密码,并且新密码是否符合要求。
密码重置测试:测试用户是否可以成功重置密码,并且新密码是否符合要求。
验证码(图片、数字)
是否可以正确输入验证码
是否可以输入错误的验证码
是否可以刷新验证码
验证码是否易于识别
验证码是否易于攻击(例如使用简单的数字或字母)
忘记密码
是否可以通过忘记密码功能重置密码
重置密码的流程是否顺畅
重置密码是否需要验证用户身份
重置密码的安全性是否高
记住密码
是否可以勾选记住密码
是否可以取消勾选记住密码
记住密码的功能是否正常
记住密码的安全性是否高
登录按钮
是否可以正常点击登录按钮
登录成功后是否跳转到正确的页面
登录失败时是否有错误提示
取消按钮、
点击后取消按钮后,是否能够取消登录操作。
点击取消按钮后,是否关闭登录窗口。
点击取消按钮后,是否清空已输入的用户名和密码。
界面测试(UI Test)
布局是否合理
字段 和按钮的长度,高度是否符合要求
界面的设计风格是否与 UI 的设计风格统一
界面中的文字简洁易懂,没有错别字。
性能测试(Performance Test)
打开登录页面,需要几秒
输入正确的账号和密码后,登录成功跳转到新页面,不超5秒
安全测试(Security Test)
登录成功后生成的 Cookie 是否有 HttpOny(降低脚本盗取风险)。
账号和密码是否通过加密的方式,发送给 Web 服务器。
账号和密码的验证,应该是用服务器端验证,而不能单单是在客户端用javaScript 验证4、账号和密码的输入框,应该屏蔽 SQL 注入攻击。
账号和密码的输入框,应该禁止输入脚本(防止 XSS 攻击)。
错误登录的次数限制(防止暴力破解)。
考虑是否支持多用户在同一机器上登录。
考虑一用户在多台机器上登录。
可用性测试(Usability Test)
是否可以全用键盘操作,是否有快捷键
输入账号,密码后按回车,是否可以登录
输入框是否可以以Tab 键切换兼容性测试(Compatibility Test)
主流的浏览器下能否显示正常已经功能正常 (IE6~11,FireFox,Chrome, Safari 等 )
不同的平台是否能正常工作,比如 Windows, Mac
移动设备上是否正常工作,比如 iPhone,Android
不同的分辨率
本地化测试(Localization Test)
不同语言环境下,页面的显示是否正确.
App端和 web 端测试有什么区别
功能测试:APP 测试、web 试 在流程和功能测试上是没有区别的
根据两者载体不一样,则区别如下:
系统结构方面:
web 项目:b/s 架构,基于浏览器的;web 试只要更新了服务器端,客户端就会同步会更新。
app 项目:c/s 结构的,必须要有客户端; pp 修改了服务端,则客户端用户所有核心版本都需进行回归测试一遍。
性能方面
web 项目 需监测 响应时间、CPU、Memory
app 项目 除了监测 响应时间、CPU、Memory 外,还需监测 流量、电量等
兼容方面
web 项目:
浏览器 (火狐、谷歌、IE 等)
操作系统 (Windows7、Windows10、Linux 等)
app 项目:
设备系统iOS (ipad、iphone)、Android (三星、华为、联想等) 、Windows (Win7、Win8)OSX (Mac)
手机设备可根据 手机型号、分辨率不同相对于 Wed 项目
自动化工具:APP一般使用 Appium; Web 一般使用 Selenium
性能测试工具:APP一般使用 JMeter; Web 一般使用 LR、JMeter
APP 有专项测试
干扰测试:中断,来电,短信,关机,重启等
弱网络测试(模拟 2g、3g、4g,wifi 网络状态以及丢包情况); 网络切换测试(网络断开后重连、3g 切换到 4g/wifi 等)
安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况。
卸载:需考虑 卸后是否删除 app相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换5.安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例访问通讯录等
边界测试:可用存储空间少、没有 SD 卡/双 SD 卡飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等。
权限测试: 设置某个 App 是否可以获取该权限,如是否可访问通讯录、相册、照相机等测试工具方面。
测试一个 C/S 客户端时,需要考虑的因素
客户端安装测试
客户端升级测试
客户端可维护性测试
个体的客户端应用以“分离的”模式被测试一一不考虑服务器和底层网络的运行;
客户端软件和关联的服务器端应用被一起测试,但网络运行不被明显的考虑;
完整的 C/S 体系结构,包括网络运行和性能被测试。
应用功能测试:客户端应用被独立地执行,以揭示在其运行中的错误。
服务器测试:测试服务器的协调和数据管理功能,也考虑服务器性能(整体反映时间和数据吞吐量)。
数据库测试:测试服务器存储的数据的精确性和完整性,检查客户端应用提交的事务,以保证数据被正确地存储、更新和检索。
事务测试:创建一系列的测试以保证每类事务被按照需求处理。测试着重于处理的正确性,也关注性能问题。
网络通信测试:测试验证网络节点间的通信正常地发生,并且消息传递、事务和相关的网络交通无错的发生。
测试电梯,请详细描述
如果给你一台电梯,请问你如何测试它,分析如下:
功能:上升、下降、停止、开门、关门、梯内电话、灯光、指示灯等;
性能: 速度、反应时间、关门时间等;
压力:超载、尖锐物碰撞电梯壁等;
安全:停电、报警装置、轿箱停靠位置、有人扒门时的情况等
可用性:按键高度、操作是否方便、舒适程度等;
UI:美观程度、光滑程度、形状、质感等;
稳定性:长时间运行情况等;
下面是详细的测试点:
需求测试:查看电梯使用说明书、安全说明书等
界面测试:查看电梯外观
功能测试:
测试电梯能否实现正常的上升和下降功能
电梯的按钮是否都可以使用
电梯门的打开,关闭是否正常
报警装置是否可用
与其他电梯之间是否协作良好
通风状况如何
突然停电时的情况.
是否有手机信号
上升途中的响应
电梯本来在1楼,如果有人按 18 楼,那么电梯在上升到 5楼的时候,有人按了10 楼,这时候是否会在 10 楼先停下来
电梯下降到 10 层时显示满员,此时若8 层有人等待电梯,是否在8 层停
可靠性测试
门关上的一刹那出现障碍物
同时按关门和开门按钮
点击当前楼层号码
多次点击同一楼层号码
同时按上键和下键
易用性测试: 电梯的按钮的设计是否符合一般人的习惯
用户文档: 使用手册是否对电梯的用法、限制、使用条件等有详细的描述。
压力测试: 看电梯的最大承重量,在负载过重时报警装置是否有提醒
稳定性测试:看垫底在最大负载下平行运行的最长时间
对圆珠笔进行测试
功能测试:
笔墨:颜色、干燥速度、不易脱落性、防水性等
笔盖开合:牢固性、密封性等
笔尖:耐磨性、流畅度、出墨快慢、出墨粗细等
笔墨的可替换性、笔身的外观质量等
UI测试:
笔身的文字和logo:可读性和清晰度、排版和布局、版权和知识产权符合法律要求。
色彩搭配、尺寸是否适用、形状是否美观、是否方便携带和存放
兼容性测试:
不同的笔简和笔芯能否使用主流签字笔尺寸;
笔芯的笔尖如果损坏,换上其他的笔芯的笔尖是否能用;
芯的笔墨如果用完,换上其他笔芯的笔墨是否可以使用;
笔的笔墨如果在其他笔的笔墨上写字是否可以成功覆盖。
性能测试:
笔芯的寿命;
笔墨的气味;
写出的墨水多久会干;
书写的流畅度;
写过字的纸浸湿,笔墨是否会晕开。
安全测试:
测试不同高度,笔身做自由落体损坏程度。
笔墨是否有易燃性;
笔墨是否对皮肤有伤害;
误食笔芯是否会引起
测试淘宝购物车
功能测试
添加商品到购物车后,购物车中商品数量是否正确
删除购物车中的商品后,购物车中商品数量是否正确
修改购物车中的商品数量和属性后,购物车中商品数量和属性是否正确
选择商品后进行结算,结算页面中商品数量和价格是否正确
购物车中是否能够显示商品的图片、名称、价格等信息
购物车中是否能够显示商品的优惠信息、促销信息等
界面测试
购物车页面的布局是否合理
购物车页面的样式是否符合设计要求
购物车页面的功能按钮是否正常显示
购物车页面的提示信息是否正常显示
兼容性测试
不同浏览器下购物车功能是否正常
不同操作系统下购物车功能是否正常
安全性测试
购物车功能是否存在安全漏洞
购物车功能是否存在数据泄露风险
购物车功能是否存在跨站点脚本攻击风险
性能测试
购物车功能的响应时间是否符合要求
购物车功能在高并发情况下是否正常工作
用户体验测试
购物车功能是否符合用户使用习惯
购物车功能是否易于操作
购物车功能是否能够提高用户购物体验
国际化测试
购物车功能是否支持多语言
购物车功能是否支持多货币
测试网上银行转账
转账金额测试:测试转账金额的上限和下限,测试小数点和分隔符的输入,测试转账金额的格式和精度是否正确。
转账类型测试:测试转账类型的选择和输入,测试不同类型的转账是否有不同的限制和规则。
收款人信息测试:测试收款人信息的输入和验证,测试收款人信息的格式和精度是否正确。
转账备注测试:测试转账备注的输入和显示,测试转账备注的长度和格式是否正确。
转账时间测试:测试转账时间的选择和输入,测试转账时间的限制和规则是否正确。
转账确认测试:测试转账前的确认信息是否准确,测试确认信息的显示和格式是否正确。
转账成功测试:测试转账后的成功页面是否正确显示,测试转账成功后的余额是否正确。
转账失败测试:测试转账失败的情况,如转账金额超过限制、收款人信息错误等,测试失败信息的显示和格式是否正确。
安全性测试:测试网上银行转账的安全性,如加密传输、安全认证等,测试安全性是否符合规定。
兼容性测试:测试网上银行转账在不同浏览器、操作系统和设备上的兼容性,测试兼容性是否符合规定。