精华内容
下载资源
问答
  • 软件测试知识点汇总

    千次阅读 2019-08-17 21:17:52
    软件测试知识点汇总 软件测试理论 1. 什么是软件测试? 答:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的...

    软件测试知识点汇总

    软件测试理论

    1. 什么是软件测试?
    答:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

    2. 软件测试的目的?
    答;测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。

    3. 什么是需求文档测试?
    答:主要测试需求中是否存在逻辑矛盾以及需求在技术上是否可以实现;

    4. 什么是设计文档测试?
    答:测试设计是否符合全部需求以及设计是否合理。

    5. 请问你了解什么测试方法
    (黑盒测试方法)等价类划分,边界值分析,错误推测,因果图法,
    (白盒测试方法)逻辑覆盖法,程序插桩技术,基本路径法,符号测试,错误驱动测试

    6. 测试的类型
    测试分为功能测试和非功能测试,非功能测试又可以分为性能测试、压力测试、容量测试、健壮性测试、安全性测试、可靠性测试、恢复性测试、备份测试、协议测试、兼容性测试、可用性测试、配置测试、GUI测试。

    7. 什么是驱动模块?
    答:驱动模块在大多数场合称为"主程序",它接收测试数据并将这些数据传递到被测试模块.单元测试一个函数单元时,被测单元本身是不能独立运行的,需要为其传送数据,为此写驱动。驱动模块主要完成以下事情:
    1、接受测试输入;
    2、对输入进行判断;
    3、将输入传给被测单元,驱动被测单元执行;
    4、接受被测单元执行结果,并对结果进行判断;
    5、将判断结果作为用例执行结果输出测试报告。

    8. 什么是桩模块?
    答:比如对函数A做单元测试时,被测的函数单元下还包括了一个函数B,为了更好的错误,定位错误,就要为函数B写桩,来模拟函数B的功能,保证其正确。

    9. 软件测试应该划分几个阶段?简述各个阶段应重点测试的点?各个阶段的含义?
    答:大体上来说可分为单元测试,集成测试,系统测试,验收测试。每个阶段又分为以下五个步骤: 测试计划,测试设计,用例设计,执行结果,测试报告。

    • 初始测试集中在每个模块上,保证源代码的正确性,该阶段称为单元测试,主要用白盒测试方法。 接下来是模块集成和集成以便组成完整的软件包。集成测试集中在证实和程序构成问题上。主要采用黑盒测试方法,辅之以白盒测试方法。软件集成后,需要完成确认和系统测试。确认测试提供软件满足所有功能、性能需求的最后保证。确认测试仅仅应用黑盒测试方法。

    • 单元测试,详细设计文档 。集成测试,概括设计文档。系统测试,系统设计文档
      单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一。目的是检验软件基本组成单位的正确。测试重点是系统的模块,包括子程序的正确性验证等。
      通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。
      单元测试的策略:逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析

    • 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。测试重点是模块间的衔接以及参数的传递等。

      • 自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。
      • 自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。
    • 系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。是黑盒的。测试重点是整个系统的运行以及与其他软件的兼容性。
      系统测试包括:功能测试,性能测试,可靠性测试,安全性测试

    • 验收测试是一项确定产品是否能够满足合同或用户所规定需求的测试。它的测试数据通常是系统测试的测试数据的子集。验收测试包括正式验收测试,非正式验收测试:Alpha测试和Beta测试。

      • Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
        Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。
      • Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
        因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。
        Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。

    10. 自顶向下测试和自底向上测试

    • 自顶向下测试:是从程序的初始模块开始测试。
      (1)该方法会在早期发现顶层的错误。
      (2)早期的程序框架可以进行演示
      (3)需要开发桩模块辅助测试。有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。
      (4)测试完一个上层模块后,挑选哪个模块作为下一个测试模块,以及测试的顺序没有唯一的界定标准。
      优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。
      缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。
    • 自底向上测试:是从程序的底层模块开始测试。
      (1)I/O操作可以提前测试,更好提交测试用例。
      (2)测试后比较容易观察输出。
      (3)需要开发驱动模块。
      (4)直到最后一个模块提交,程序才能完整的系统测试。
      优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。
      缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。

    11. 请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步?
    这些测试步骤分别在软件开发的不同阶段对软件进行测试,我认为对软件完整功能进行测试的系统测试很重要,因为此时单元测试和集成测试已完成,能够对软件所有功能进行功能测试,能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足了需求规格的定义,因此我认为系统测试很重要。(言之有理即可)

    12. 什么是白盒测试?
    白盒测试,又称逻辑驱动测试,结构测试。它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。

    • 常用白盒测试方法: 静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,也可以借助软件工具(Fxcop)自动进行。 动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。
    • 白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
      1.语句覆盖每条语句至少执行一次。
      2.判定覆盖每个判定的每个分支至少执行一次。
      3.条件覆盖每个判定的每个条件应取到各种可能的值。
      4.判定/条件覆盖同时满足判定覆盖条件覆盖。
      5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
      6.路径覆盖使程序中每一条可能的路径至少执行一次。

    13. 什么是黑盒测试?
    黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

    • “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,因此不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
    • 常用的黑盒测试方法有:等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法。

    14. 设计用例的方法、依据有那些?
    白盒测试用例设计有如下方法:基本路径测试\边界值分析\覆盖测试\循环测试\数据流测试\程序插桩测试\变异测试。这时候依据就是详细设计说明书及其代码结构
    黑盒测试用例设计方法:基于用户需求的测试\功能图分析方法\等价类划分方法\边界值分析方法\错误推测方法\因果图方法\判定表驱动分析方法\正交实验设计方法.依据是用户需求规格说明书,详细设计说明书。
    既可以用于黑盒测试,也可以用于白盒测试的方法的是(边界值分析)

    15. 如果能够执行完美的黑盒测试,还需要进行白盒测试吗?(白盒与黑盒的区别)
    答:任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
    黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

    • 软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
      1、是否有不正确或遗漏的功能?
      2、在接口上,输入是否能正确的接受?能否输出正确的结果?
      3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
      4、性能上是否能够满足要求?
      5、是否有初始化或终止性错误?
    • 软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
      1、对程序模块的所有独立的执行路径至少测试一遍。
      2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
      3、在循环的边界和运行的界限内执行循环体。
      4、测试内部数据结构的有效性,等等。
      以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。

    16. 什么是静态测试?
    答:通过运行程序测试软件称为动态测试.通过评审文档、阅读代码等方式测试软件称为静态测试,在动态测试中,通常使用白盒测试和黑盒测试从不同的角度设计测试用例,查找软件代码中的错误.
    静态测试方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

    17. 什么是回归测试?
    答: 回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。是在程序有修改的情况下,保证原有功能正常的一种测试策略和方法。
    说白了就是,我们测试人员在对程序进行测试时发现bug,然后返还程序员修改,程序员修改后发布新的软件包或新的软件补丁包给我们测试人员,我们就要重新对这个程序测试,已保证程序在修正了以前bug的情况下,正常运行,且不会带来新的错误的这样一个过程。 一般情况下是不需要全面测试的,而是根据修改的情况进行有效的测试。
    18. 软件的缺陷等级应如何划分?
    软件缺陷的等级可以用严重性和优先级来描述;

    • 严重性:衡量缺陷对客户满意度影响的满意程度,分为
      1,致命错误,可能导致本模块以及其他相关的模块异常,死机等问题;
      常见的有严重花屏、内存泄漏、用户数据丢失或破坏、系统崩溃/死机/冻结、模块无法启动或异常退出、严重的数值计算错误、功能设计与需求严重不符、其它导致无法测试的错误, 如服务器500错误。
      2.严重错误,问题局限在本模块,导致模块功能失常或异常退出;
      常见的有:功能未实现,功能错误、系统刷新错误、数据通讯错误、轻微的数值计算错误、影响功能及界面的错误字或拼写错误。
      3.一般错误,模块功能部分失效;
      常见的有:操作界面错误,边界条件错误,提示信息错误,长时间操作无进度提示,系统未优化,兼容性问题。
      4.建议模块,有问题提出人对测试模块的改进建议;
    • 优先级:缺陷被修复的紧急程度;
      1.立即解决(P1级):缺陷导致系统功能几乎不能使用或者测试不能继续,需立即修复;
      2.高优先级(P2级):缺陷严重,影响测试,需优先考虑;
      3.正常排队(P3级):缺陷需要正常排队等待修复;
      4.低优先级(P4级):缺陷可以在有时间的时候被纠正;

    19. 针对缺陷采取怎样的管理措施?
    1.要更好的管理缺陷,必须引入缺陷管理工具,商用的或者开源的都可。
    2.根据缺陷的生命周期,考虑缺陷提交的管理、缺陷状态的管理和缺陷分析的管理。
    3.所有发现的缺陷(不管是测试发现的还是走读代码发现的)都必须全部即时的、准确的提交到缺陷管理工具中,这是缺陷提交的管理。
    4. 缺陷提交后,需要即时的指派给相应的开发人员,提交缺陷的人需要密切注意缺陷的状态, 帮助缺陷的尽快解决。缺陷解决后需要即时对缺陷的修复进行验证。这样的目的有两个:一个是让缺陷尽快解决;二是方便后面缺陷的分析(保证缺陷相关的信息准确,如龄期等),这是缺陷状态的管理。
    5. 为了更好的改进开发过程和测试过程,需要对缺陷进行分析,总结如缺陷的类别、缺陷的龄期分布等信息,这是缺陷分析的管理。

    测试工具

    20. 描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程
    1.测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,系统会自动通过Email通知项目组长或直接通知开发者。
    2.经验证无误后,修改状态为VERIFIED.待整个产品发布后,修改为CLOSED.
    3.还有问题,REOPENED,状态重新变为“New",并发邮件通知。
    4.项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
    5.若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明)
    6.开发者收到Email信息后,判断是否为自己的修改范围。
    7.若不是,重新reassigned分配给项目组长或应该分配的开发者。
    8.测试人员查询开发者已修改的bug,进行重新测试。
    21. 请说一下手动测试与自动化测试的优缺点

    • 手工测试缺点:
      1、重复的手工回归测试,代价昂贵、容易出错。
      2、依赖于软件测试人员的能力。
    • 手工测试优点:
      1、测试人员具有经验和对错误的猜测能力。
      2、测试人员具有审美能力和心理体验。
      3、测试人员具有是非判断和逻辑推理能力。
    • 自动化测试的优点:
      1、对程序的回归测试更方便。这可能是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果是非常明显的。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率,缩短回归测试时间。
      2、可以运行更多更繁琐的测试。是可以在较少的时间内运行更多的测试。
      3、可以执行一些手工测试困难或不可能进行的测试。比如,对于大量用户的测试,不可能同时让足够多的测试人员同时进行测试,但是却可以通过自动化测试模拟同时有许多用户,从而达到测试的目的。
      4、更好地利用资源。将繁琐的任务自动化,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例。有些测试不适合于自动测试,仅适合于手工测试,将可自动测试的测试自动化后,可以让测试人员专注于手工测试部分,提高手工测试的效率。
      5、测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。
      6、测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。
      7、增加软件信任度。由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。一旦软件通过了强有力的自动测试后,软件的信任度自然会增加。
    • 自动化测试的缺点:
      1、不能取代手工测试
      2、手工测试比自动测试发现的缺陷更多
      3、对测试质量的依赖性极大
      4、测试自动化不能提高有效性
      5、测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。
      6、工具本身并无想像力

    22. 你觉得测试和开发需要怎么结合才能使软件的质量得到更好的保障
    测试和开发应该按照W模型的方式进行结合,测试和开发同步进行,能够尽早发现软件缺陷,降低软件开发的成本。
    W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
    需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试

    23. 请问你觉得测试项目具体工作是什么?
    1.搭建测试环境
    2.撰写测试用例
    3.执行测试用例
    4.写测试计划,测试报告
    5.测试,并提交BUG表单
    6.跟踪bug修改情况
    7.执行自动化测试,编写脚本,执行,分析,报告
    8.进行性能测试,压力测试等其他测试,执行,分析,调优,报告

    24. 请你说一下软件质量的六个特征
    按照软件质量国家标准GB-T8566–2001G,软件质量可以用下列特征来评价:

    1. 功能特征:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。
    2. 可靠特征:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。
    3. 易用特征:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。
    4. 效率特征:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。
    5. 可维护特征:与进行指定的修改所需的努力有关的一组属性。
    6. 可移植特征:与软件从一个环境转移到另一个环境的能力有关的一组属性。

    25. 描述测试工具的功能?
    LoadRunner-负载压力测试:预测系统性能。
    JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制
    功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
    Junit:白盒测试工具:针对代码测试
    测试管理工具:对测试需求、计划、用例、实施进行管理
    测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
    负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。
    功能测试: QTP(quicktest professional):自动测试工具
    白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
    缺陷管理工具:Mantis、BugFree、QC、TD
    用例管理工具:TestLink、QC
    测试辅助工具:SVN

    测试实例设计

    26. 请你说一下app性能测试的指标
    1、内存:内存消耗测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性。当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格。
    空闲状态指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲;中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。
    内存测试中存在很多测试子项,清单如下:
    ●空闲状态下的应用内存消耗;
    ●中等规格状态下的应用内存消耗;
    ●满规格状态下的应用内存消耗;
    ●应用内存峰值;
    ●应用内存泄露;
    ●应用是否常驻内存;
    ●压力测试后的内存使用。
    2、CPU:
    使用Android提供的view plaincopy在CODE上查看代码片派生到我的代码片
    adbshell dumpsys CPUinfo |grep packagename >/address/CPU.txt来获取;
    使用top命令view plaincopy在CODE上查看代码片派生到我的代码片
    adbshell top |grep packagename>/address/CPU.txt来获取。
    3、流量:
    网络流量测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。
    流量测试包括以下测试项:
    应用首次启动流量提示;
    应用后台连续运行2小时的流量值;
    应用高负荷运行的流量峰值。
    4、电量:
    ●测试手机安装目标APK前后待机功耗无明显差异;
    ●常见使用场景中能够正常进入待机,待机电流在正常范围内;
    ●长时间连续使用应用无异常耗电现象。
    5、启动速度:
    第一类:首次启动–应用首次启动所花费的时间;
    第二类:非首次启动–应用非首次启动所花费的时间;
    第三类:应用界面切换–应用界面内切换所花费的时间。
    6、滑动速度、界面切换速度
    7、与服务器交互的网络速度
    27. 请你说一说app测试的工具
    功能测试自动化
    a) 轻量接口自动化测试
    jmeter,
    b) APP UI层面的自动化
    android:UI Automator Viewer,Android Junit,Instrumentation,UIAutomator,
    iOS:基于Instrument的iOS UI自动化,
    性能测试
    a) Web前端性能测试
    网络抓包工具:Wireshark
    网页文件大小
    webpagetest
    pagespeed insight
    chrome adb
    b) APP端性能测试
    Android内存占用分析:MAT
    iOS内存问题分析:ARC模式
    Android WebView性能分析:
    iOS WebView性能分析
    c) 后台服务性能测试
    负载,压力,耐久性
    可拓展性,基准
    工具:apacheAB,Jmeter,LoadRunner,
    专项测试
    a) 兼容性测试
    手工测试:操作系统,分辨率,rom,网络类型
    云平台:testin,脚本编写,Android。
    b) 流量测试
    Android自带的流量管理,
    iOS自带的Network
    tcpdump抓包
    WiFi代理抓包:Fiddler
    流量节省方法:压缩数据,json优于xml;WebP优于传统的JPG,PNG;控制访问的频次;只获取必要的数据;缓存;
    c) 电量测试
    基于测试设备的方法,购买电量表进行测试。
    GSam Battery Monitoe Pro
    iOS基于Instrument Energy工具
    d) 弱网络测试
    手机自带的网络状况模拟工具
    基于代理的弱网络的模拟:
    工具:windows:Network Delay Simulator
    Mac:Network Link Conditioner
    28. 请你说一说bug的周期,以及描述一下不同类别的bug
    1、New:(新的)
    当某个“bug”被第一次发现的时候,测试人员需要与项目负责人沟通以确认发现的的确是一个bug,如果被确认是一个bug,就将其记录下来,并将bug的状态设为New
    2、Assigned(已指派的)
    当一个bug被指认为New之后,将其反馈给开发人员,开发人员将确认这是否是一个bug,如果是,开发组的负责人就将这个bug指定给某位开发人员处理,并将bug的状态设定为“Assigned”
    3、Open(打开的)
    一旦开发人员开始处理bug的时候,他(她)就将这个bug的状态设置为“Open”,这表示开发人员正在处理这个“bug”
    4、Fixed(已修复的)
    当开发人员进行处理(并认为已经解决)之后,他就可以将这个bug的状态设置为“Fixed”并将其提交给开发组的负责人,然后开发组的负责人将这个bug返还给测试组
    5、Pending Reset(待在测试的)
    当bug被返还到测试组后,我们将bug的状态设置为Pending Reset”
    6、Reset(再测试)
    测试组的负责人将bug指定给某位测试人员进行再测试,并将bug的状态设置为“Reset”
    7、Closed(已关闭的)
    如果测试人员经过再次测试之后确认bug 已经被解决之后,就将bug的状态设置为“Closed”
    8、Reopen(再次打开的)
    如果经过再次测试发现bug(指bug本身而不是包括因修复而引发的新bug)仍然存在的话,测试人员将bug再次传递给开发组,并将bug的状态设置为“Reopen”
    9、Pending Reject(拒绝中)
    如果测试人员传递到开发组的bug被开发人员认为是正常行为而不是bug时,这种情况下开发人员可以拒绝,并将bug的状态设置为“Pending Reject”
    10、Rejected(被拒绝的)
    测试组的负责人接到上述bug的时候,如果他(她)发现这是产品说明书中定义的正常行为或者经过与开发人员的讨论之后认为这并不能算作bug的时候,开发组负责人就将这个bug的状态设置为“Rejected”
    11、Postponed(延期)
    有些时候,对于一些特殊的bug的测试需要搁置一段时间,事实上有很多原因可能导致这种情况的发生,比如无效的测试数据,一些特殊的无效的功能等等,在这种情况下,bug的状态就被设置为“Postponed“
    不同类别的bug:
    Bug类型
    • 代码错误
    • 界面优化
    • 设计缺陷
    • 配置相关
    • 安装部署
    • 安全相关
    • 性能问题
    • 标准规范
    • 测试脚本
    • 其他

    29. 请问你怎么测试网络协议
    协议测试包括四种类型的测试
    1、一致性测试:检测协议实现本身与协议规范的符合程度
    2、互操作性测试:基于某一协议检测不同协议实现间互操作互通信的能力
    3、性能测试:检测协议实现的性能指标,比如数据传输速度,连接时间,执行速度,吞吐量,并发度,
    4、健壮性测试:检测协议是现在各种恶劣环境下运行的能力,比如注入干扰报文,通信故障,信道被切断。
    30. 请你说一说简单用户界面登陆过程都需要做哪些分析
    一、功能测试
    1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。
    2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。
    3.登录成功后能否能否跳转到正确的页面
    4.用户名和密码,如果太短或者太长,应该怎么处理
    5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况
    6.记住用户名的功能
    7.登陆失败后,不能记录密码的功能
    8.用户名和密码前后有空格的处理
    9.密码是否非明文显示显示,使用星号圆点等符号代替。
    10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使 用者),刷新或换一个按钮是否好用
    11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确
    12.输入密码的时候,大写键盘开启的时候要有提示信息。
    13.什么都不输入,点击提交按钮,检查提示信息。
    二、界面测试
    1.布局是否合理,testbox和按钮是否整齐。
    2.testbox和按钮的长度,高度是否复合要求。
    3. 界面的设计风格是否与UI的设计风格统一。
    4. 界面中的文字简洁易懂,没有错别字。
    三、性能测试
    1.打开登录页面,需要的时间是否在需求要求的时间内。
    2.输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内。
    3.模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转。
    四、安全性测试
    1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)。
    2.用户名和密码是否通过加密的方式,发送给Web服务器。
    3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript 验证。
    4.用户名和密码的输入框,应该屏蔽SQL注入攻击。
    5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)。
    6.防止暴力破解,检测是否有错误登陆的次数限制。
    7. 是否支持多用户在同一机器上登录。
    8. 同一用户能否在多台机器上登录。
    五、可用性测试

    1. 是否可以全用键盘操作,是否有快捷键。
    2. 输入用户名,密码后按回车,是否可以登陆。
    3. 输入框能否可以以Tab键切换。
      六、兼容性测试
      1.不同浏览器下能否显示正常且功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)。
      2.同种浏览器不同版本下能否显示正常且功能正常。
      2.不同的平台是否能正常工作,比如Windows, Mac。
      3.移动设备上是否正常工作,比如Iphone, Andriod。
      4.不同的分辨率下显示是否正常。
      七、本地化测试
    4. 不同语言环境下,页面的显示是否正确。
    展开全文
  • 第一部分软件测试概念类 1软件质量 软件质量是软件满足规定或潜在用户需求特性的总和 反映出如下 3 方面的问题 软件需求是度量软件质量的基础不符合需求的软件就不具备质量 软件人员必须遵循软件过程规范用工程化的...
  • 《软件测试》— 软件测试知识点汇总

    千次阅读 多人点赞 2017-05-30 09:05:21
    软件测试是软件生存周期中必不可少的环节,软件的典型生存周期可以用下图来形容: 软件测试的目的是尽可能早的发现软件缺陷并确保其得以修复,因此软件测试是提高软件质量的重要手段,大量的经验实践证明,软件...

    软件测试是软件生存周期中必不可少的环节,软件的典型生存周期可以用下图来形容:

                       

       软件测试的目的是尽可能早的发现软件缺陷并确保其得以修复,因此软件测试是提高软件质量的重要手段,大量的经验实践证明,软件测试越早参与到软件开发过程中,开发出来的软件质量相对越高,时间和物力也越经济。

        根据软件工程的基本理论,多模块程序的测试共包括以下4个层次:

      

       各阶段测试的具体内容会在以后章节具体介绍,下面介绍一下软件测试的经典技术。

     

       软件测试的经典技术分为黑盒测试和白盒测试技术。其中黑盒测试技术忽略程序内部结构,看不到程序的代码细节,只针对程序的功能进行测试,黑盒测试的方法有:

       具体方法会在以后章节中具体介绍,敬请期待。

            说完黑盒测试,就该介绍白盒测试了,白盒测试也称结构测试,白盒测试深入程序内部结构,分析程序代码结构,因此学好白盒测试,首先要掌握必要的编程语言,比如说Java或者C/C++/C#等。白盒测试的方法有:

     

       白盒测试的方法要涉及到程序图和流程图的设计,逻辑覆盖主要利用程序图,路径覆盖主要利用流程图,测试者必须能够根据程序的代码结构画出相应的程序图和流程图,白盒测试的方法也会在以后的章节中具体介绍。

     

     

     

    本节主要介绍一下层次测试的第一步——单元测试。在了解单元测试之前先看一个简单的主程序树状模块图: 

     

      

     

       所谓模块测试就是在底层进行的测试,如上图,单元测试就是测试上图中紫色的模块。单元测试是整个测试的基础,单元测试中发现的错误约占程序总错误数2/3,单元测试的目标是通过对程序底层模块的静态和动态测试使底层模块达到模块说明的要求。

       单元测试主要测试5方面的的问题:

     

     

     

       模块的接口测试主要检查数据能否正确地通过模块;数据结构测试目的在于保持程序内部数据的完整性;重要路径测试是单元测试的一项基本任务,主要做好覆盖分析;程序最容易在边界上出错,因此边界条件测试是必不可少的;错误处理测试要点是在工作中发生了错误,其中的错误处理措施是否有效。

        单元测试的一般步骤:

     

      

       编译过程中主要检查对象就是代码中的语法错误;静态分析器检查使用专用工具来进行分析,代码审查主要依靠人工,第二步和第三步都是以检查结构性错误为主的静态分析;动态测试是单元测试的最后步骤,重点是发现单元的功能型错误,可采用白盒测试或者黑盒测试方法进行测试,白盒测试和黑盒测试会在以后进行详细介绍,这里知道有这两种方法即可。

       代码评审有两类组织形式:一、办公桌检查,由程序员自己审查自己的代码,仅适用于规模很小的程序。二、以小组会的方式进行,又分为走查和代码会审两种,适用于各种规模的程序。

       单元测试不是独立的程序,在多模块程序中,模块之间可以相互调用,单元测试时往往需要为被测模块编制若干模块替身,替身模块仅是真实模块的简化,仅需模拟与被测模块直接相关的一部分功能。

       根据经验总结,在单元级发现问题时,问题肯定就在那个单元中,如果在多个单元模块集成时发现缺陷,那么它一定与模块之间的交互有关。在实际情况中,有很少的例外。

    好的,本节到此结束,下一节将详细介绍层次测试的第二步——集成测试。

     

     

    本节主要介绍一下层次测试的第二步——集成测试。上一节我们已经在一定程度上了解了单元测试,这一节我们要讲解的集成测试就是建立在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统而进行的测试,也称为联合测试或组装测试。

       集成测试应由独立于开发人员的测试小组负责实施。集成测试重点测试所有模块的接口部分,需设计测试过程所使用的驱动模块和桩模块,在单元测试时为被测试模块做的上下级模块做的替身分别称为驱动模块和桩模块。测试方法以黑盒为主。集成测试的方案大致可分为有三种,分别是自顶而下、由底向上以及从两头逼近的混合模式。看下面程序模块:

                                                                

                                              

    1. 自顶而下

         自顶而下的测试从顶模块开始,沿被测程序的结构图逐步向下测试,按照移动路线的差异,又可区分为两种不同的实施步骤,分别是先广后深和先深后广两种,以上图为例,先广后深的组装顺序:

    M1——M2——M3——M4——M5——M6——M7——M8

          先深后广的组装顺序:

    M1——M2——M5——M8——M6——M3——M4——M7

          自顶而下的测试要使用桩模块,如下图显示了先深后广的测试步骤:

     

                                                                                                                                                 

                 

      

     

                                                                                                                                                  

                         

    其中,S2、S3、S4、S5、S6和S8分别是M2、M3、M4、M5、M6和M8的替身。

     

    1. 由底而上

       

      由底而上模式的典型步骤:

      1. 从下层找出一个没有下层模块作为开始模块,由下向上逐步添加新模块,组成程序中的一个子系统或模块群。
      2. 从另一子系统或模块群中选出另一个无下级模块开始,按步骤1进行组成一个新的子系统。
      3. 重复上一步,直到得出所有子系统,最后组装成完整的系统。

       

      例图程序模块可能的组装顺序:

      M8——M5——M6——M2

      M7——M4——M3——M1

     

    1. 混合模式

         混合模式是以上两种模式的综合,其一般步骤:

    1. 对上层模块采取自顶向下测试
    2. 对关键模块或子系统采取由底向上测试

       

            此种模式兼有以上两种模式的优点,应用也最广泛。

     

        以上三种模式是从一个模块开始,测一次添一个模块,组装程序类似于滚雪球,所以统称为渐增式。三种模式都有各自的优缺点,综合起来,混合模式正在与扬长避短,综合了两种模式的优点,建议多采用混合模式进行总装。

     

        好的,本节到此结束,下一节将详细介绍层次测试的第三步——确认测试。

     

    经过了单元测试和集成测试的学习,组装测试已经完成,接下来要进行的就是确认测试,那么本节就主要介绍确认测试。确认测试又称有效性测试或合格性测试,其任务是验证系统的功能、性能等特性是否符合需求规格说明。如下图:

     

     

       有效性测试和软件配置审查是确认测试最重要的两项工作。

       确认测试一般是在模拟的环境或者就是开发环境下运用黑盒测试法,按照需求说明书,验证软件功能、特性是否与用户需求一致。经过确认测试后,可能有以下两种情况:

    1. 软件的功能、性能及其他要求均已经满足需求说明书,可能被认为是合格的软件。
    2. 发现软件与需求说明书有较大的偏离,得到一个缺陷清单。这样的错误,工作量非常大,往往很难在交付期以前把发现的缺陷修复过来。此时需要开发部门和用户一起协商进行解决。

     

       软件配置审查也称配置审计,指软件工程过程中所产生的所有信息项:文档、报告、程序、表格、数据等。此阶段主要复查SCI是否齐全,检查软件的所有文档资料的完整性和正确性,然后对发现的缺陷,进行修复,最后编排好目录,以便后期维护顺利进行。

     

       确认测试继集成测试之后进行,其目的在于确认组装完毕的程序是否满足需求说明书。确认测试是由软件开发单位组织实施的最后一项开发活动,测试结束后,软件就交付验收了,因此开发单位必须十分重视这项工作,和集成测试一样,也应由独立测试小组负责实施。

     

    好的,本节到此结束,下一节将详细介绍层次测试的第四步——系统测试。

     

    经过了前面的总结,今天该到层次测试的最后一步——系统测试了,系统测试是验收工作的一部分,应由用户单位组织实施。软件开发单位应该为系统测试创造良好的条件,负责回答和解决测试中可能发现的一切质量问题。

       系统测试是在更大范围内进行测试。除被测试程序外,系统还可能包括硬件和原有的其他软件。系统测试的目的在于把软件产品顺利安装到系统中以后,保证软件与系统其余部分协调工作,并且符合软件需求说明书的要求。

        下面说一下集成系统的测试,下图是集成系统测试的测试内容:

     

             其中:

       功能测试主要检查软件功能是否符合需求说明的要求,基本方法是构造一些合理的输入,检查是否得到期望的输出,假如输入范围是无限的,关键在于寻找等价区间,还有一种有效的测试方法就是边界值测试,会在以后具体介绍。

       性能测试是用来测试软件在集成系统中的运行性能,特别是针对实时系统和嵌入式系统,常常与强度测试结合起来进行。

       安全性测试是为了保证安装在系统内的保护机制能在实际运行中保护系统不受非法侵入等非法行为的干扰,测试过程中需要设置一些测试用例试图突破系统的安全保密措施,检验系统是否有安全保密的漏洞。

       恢复测试目的在于保证系统受到某些外部事故的破坏时能够重新恢复正常工作,可以通过各种手段,强制性地使软件出错而不能正常工作,进而检验系统恢复能力。

       强度测试主要是在一些极限条件下,检查软件系统的运行情况,例如一些超常数量的输入数据、超常数量的用户、超常数量的网络连接,这对于了解软件系统的性能和可靠性、健壮性具有十分重要的意义。

       文档测试主要检查文档的正确性、完整性和可理解性。正确性指不要把软件的功能和操作写错,也不允许文档内容前后矛盾;完整性是指文档不可以虎头蛇尾,更不允许漏掉关键内容;可理解性指文档内容让大众用户看得懂、能理解。

           

       到这里,层次测试的所有阶段都介绍完了,下一节将介绍软件测试的经典方法黑盒测试中的部分内容,最后介绍一下终止测试的标准。

       软件可以终止测试的标准有两个,一个标准是规定测试策略和应达目标,例如,在白盒测试中,可以规定完全覆盖为标准,即语句覆盖和分支覆盖率必须达到100%,满足了这些条件就可以停止测试;在黑盒测试中,可以规定设计各种方法来设计测试用例,当所有测试用例全部用完时即可停止测试。另一个标准是规定至少要查出的错误数量,例如根据以往的测试经验,估算系统中的缺陷数目,规定目标是消除95%的设计缺陷和98%的编码与结构缺陷,则可以停止错误。

    前面总结了软件测试层次的各阶段目标和任务等相关内容,接下来将总结软件测试的经典方法,即黑盒测试和白盒测试。其中黑盒测试有等价分类、边界值分析、错误推测和因果图等经典分析方法,本节先介绍黑盒测试中的等价分类,也称等价分配或等价划分,即分步骤的把过多(无限)的测试案例减小到同样有效的小范围过程。

     

     

        其中,有效等价类中的任何一个测试测试用例都能代表同一等价类中的其他测试用例,即从某一个等价类中任意选出一个测试用例若未能发现程序的缺陷,就可以合理地认为使用程序中的其他测试用例也不会发现程序的缺陷;无效等价类中的每一个无效等价类至少要用一个测试用例,否则有可能漏掉某一类错误。

        划分等价类有其一般步骤,下面我们就一个具体的例子来讲解等价类划分的具体步骤。

        具体问题:某软件开发公司进行人员扩增,规定应聘人员的年龄在20周岁(1992年11月前出生)到35周岁(1977年11月后出生)之间,若出生年月不在以上范围内,则拒绝面试,并显示“年龄不合格”,请使用等价类划分方法对这一程序功能设计测试用例。

        第一步:划分等价类。现规定出生年月由6位数字字符表示,前4位代表年,后2位代表月份,则给出以下3个有效等价类和7个无效等价类,如下表:

     

        第二步:设计有效等价类的测试用例在设计有效等价类测试用例前最好将所有等价类都先编号,如上图,然后根据编号设计测试用例,使其尽可能多的覆盖尚未被覆盖的等价类,下面是设计的测试用例表:

        让几个等价类公用一个测试用例,可以减少测试次数,有利而无弊。

        第三步:为每一无效等价类至少设计一个测试用例。本例有7个无效等价类,则至少设计7个测试用例,假如少设计测试用例,就有可能产生遗漏。下面是无效测试用例。

        本程序的等价类划分就算基本写完了,学习时注意划分的一般步骤,选择测试用例时也要仔细斟酌,看是否在所要测试的等价类中。

     

       等价类划分是一种典型的黑盒测试方法,也是一种非常实用的重要测试方法,作为一个合格的测试员,应具备划分等价类并为其设计合理的测试用例的基本能力。

     

       好的,本节结束,下一讲将总结黑盒测试的另一个经典方法——边界值分析法,敬请期待!谢谢!


    上一节讲到了黑盒测试中的等价分类,这一节继续总结黑盒测试又一经典测试方法——边界值分析法,其实边界值测试不是专属于黑盒测试,在白盒测试中也会用到边界值测试。

       

        边界值测试其实就是测试程序的各种边界值,边界值测试是等价分类的推广,在实际测试中,在测试程序的边界时,往往可以测试出很多缺陷,所以两种方法要结合使用,才能更好的满足程序的测试需求。边界值测试分为两部分:

     

     

          

            对于输入测试,大家也许可以理解,但是对于输出测试,大家可能理解起来有点困难了,说再多的道理不如举几个例子来说明道理,下面就和大家一起看下面的具体实例。

     

        问题一:某超市出售某品牌的高级盒装酸奶,现就元旦佳节开展促销活动,该超市将按照顾客购买量进行不同力度的促销,具体促销方案如下:

     

     

     

        分析:我们能够考虑到的边界值是1,10,20,30,因为问题中已经详细给出了边界条件,其实我们应该还要考虑的边界值还有0,9,19,29,31和无限大,具体测试用例如下:

     

     

     

        问题二:某保险公司人寿保险的保费计算方式为:

        1.保险费=投保额*保险费

        2.其中,保险费率根据投保人年龄、性别、婚姻状况和抚养人数的不同而有所不用,体现在不同的上述条件下对应的点数设定不同,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1,具体规则见下表:

     

     

     

        分析:本例需要考虑的边界值比较多。不仅需要考虑输入边界,还要考虑输出边界。其中输入边界有可以分为年龄边界和抚养人数边界,点数可以作为输出边界。

     

        其中,年龄边界有:0  1  19  20  39  40  59  60  90  100  无穷大

            抚养人数边界:0  1  6  7  9  10  无穷大

                    点数:9  10  11 

     

        下面是一位老师总结的边界值分析的原则:

        1.如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。

        2.如果输入条件规定了值的个数,则用最大个数,最小个数和比最大个数多一个,比最小个数少一个的数作为测试数据。

        3.如果程序的规格说明给出输入域或输出域是有序集合,则应选取集合中的第一个和最后一个元素作为测试用例。

        4.如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。

     

       当然原则还有好多,边界值分析的最根本的理论就是刚好大于最大值,或者刚好小于最小值。抓住这个基本点,将问题逐个分类,才是做好边界值测试的基本出发点。

     

       这一节结束,下一节将总结错误推测法,敬请关注!谢谢!

     

     

     

    三国中的诸葛亮能看破天象,对敌军的破绽之处也更是了如指掌,死孔明吓跑活仲达的笑话无人不知,无人不晓。作为软件测试员就应该有孔明先生这样的本领,测试员能该把软件当作自己的敌人,兵法云知己知彼方能百战不殆。本节将总结黑盒测试中的又一常用方法——错误推测法。

        

        在错误推测法中,测试员的角色就相当于三国中孔明的角色,测试员要根据自己的经验,预测出软件中哪些地方容易出现缺陷,我们应该怎样发现缺陷,确保缺陷得以修复。

     

        常见的输入与输出错误推测情况:

     

     

          以下是一个软件测试教师总结的经验,现分享给大家。

     

    经验分享一:时间性测试

              1.提交操作时限

              2.未到达的日期是否可选择

              3.前后时间限制问题

              4.系统时间的调整是否影响软件的使用权限

     

    经验分享二:密码输入框

              1.密码明文显示(超级用户)

              2.复制密码,明文显示

              3.截断(字符长度限制):Ctrl+V,鼠标

              4.限制

     

    经验分享三:配置文件安全性

              

    经验分享四:密宽窄屏缺陷

              

    经验分享五:同时操作问题

              1.在不同机器上同时登陆同一用户

              2.对一条记录在不同机器上进行不同操作(修改、删除)

              解决方法一:锁定记录 解决方法二:给出提示信息

              3.一人审核,一人退回

              4.两个人修改同一张工单

     

    经验分享六:删除为空时缺陷

              

    经验分享七:自动刷新问题

              1.是否具有自动刷新

              2.局部刷新与全部刷新

              3.刷新过程中出现分辨率下降等问题

              

    经验分享八:网页安全缺陷

              已登陆用户地址复制给其他用户,其他用户连接时是否显示欢迎界面

              

    经验分享九:判断顺序/逻辑缺陷

              

    经验分享十:用户管理

              1.超级用户,忘记删除

              2.超级用户,回收权限

              

    经验分享十一:聊天窗口功能

              1.输入特殊字符后,窗口是否能够正常显示

              2.输入空格,是否能够过滤,是否会算入长度计算

              3.输入html字符

              4.输入脚本语言函数

              5.图片头像显示

              6.在需要密码验证,或者需要二次输入确认的地方,通过复制粘贴第一次的输入内容是否能             够通过

     

    经验分享十二:查询功能

              1.无条件查询

              2.是否支持模糊查询

              3.查询的关键字之间是否可用连接符

              4.是否支持空格

              5.是否支持各类字符

     

    经验分享十三:翻页功能

              1.首页、上一页、下一页、尾页

              2.总页数、当前页数

              3.指定跳转页

              4.指定每页显示条数

     

    经验分享十四:删除功能

              1.不选择记录,进行删除,验证提示信息“请选择记录”

              2.删除记录权限验证

              3.删除结果检查

              4.删除成功后,再次添加相同记录,应可成功添加

     

    经验分享十五:导入/导出/打印问题

         

        导入:

              1.模版内容是否与系统一致

              2.模版中是否有必填项、字段长度等限制

              3.导入时格式不匹配的校验,提示信息是否准确

              4.导入两条相同数据是否提示重复导入

              5.导入后验证系统中内容是否正确

              6.批量导入时,容量上限的验证、个数验证

     

        导出:

              1.表头、图标是否显示正确

              2.文件名显示有规则和实际意义

              3.导出后信息验证

     

    这一节开始总结黑盒测试中的最后一种方法——因果图法,说到因果图法,就不能不说决策表法(也称判定表法),因为这两种方法经常联用,经验丰富的测试员有时跳过因果图的设计,直接设计决策表,决策表法也是最严格也最具有逻辑性的测试方法。下面先介绍一下因果图的基础知识。

     

     

       如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下应用因果图法设计决策表很合适。因果图是一种形式化语言,是一种组合逻辑网络图,它把输入条件视为因,把输入或程序状态的改变视为果,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系,最终生成决策表,写出相应的测试用例。   

     

     

     

        因果图的基本符号:

     

     

     

     

     

     

     

     

     

     

                      因果图的一些限制符号:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

         因果图绘制的一般步骤:

     

             1.提取因果,赋予标识符

     

             2.提取因果关系,表示因果图

     

             3.标明约束条件

     

     

     

        做完因果图就要转换成判定表,做判定表的一般步骤:

     

             1.抽象出所有的条件类和动作类

     

             2.确定规则的个数

     

             3.填入条件项

     

             4.简化(合并类似规则或相同动作)

     

         

     

         绘制决策表的一般步骤不固定,假如测试员经验丰富,可以提前简化。下面是一个简单的具体实例,建议读者先根据以上知识先自行设计因果图和决策表,然后再与下面的对比,你可能设计的会更好。

     

     

     

        问题:某公司要求,对功率大于50马力且维修记录不全已运行10年以上的机器,应给予优先的维修处理,请根据需求运用因果图法设计测试用例。

     

     

     

        因果图:

     

            a:功率大于50马力      b:维修记录不全    c:运行10年以上  

     

                     d:优先维修                 e:其他处理

     

         

     

         最初决策表:

     

     

          简化后决策表:

     

      

      
         测试用例也就是简化后的决策表用例,由于本例比较简单,所以要想全面了解因果图法,就必须多做例子,并且每个条件的情况可能数有时不一定是只有真假,有时候会很复杂,建议多做些生活中的例子,尽管很复杂,但是绘制步骤和简化思想大多是一样。

     

         到目前为止,黑盒测试的方法就总结完了,当然黑盒测试的方法还有很多,不只是只有这四种,在这里介绍的是最常用的四种。下一节将总结白盒测试,语言多以C++为主,敬请期待,谢谢。

     

    从这一节开始即将总结白盒测试的常用经典技术。前面详细总结了黑盒测试和一些常用的黑盒测试技术,但是都没有打开软件的代码进行测试,黑盒测试的概念就是针对白盒测试技术命名的,那么什么是白盒测试呢?白盒测试也称结构测试,白盒测试是针对被测单元内部是如何工作进行的测试,深入程序代码细节,它根据程序的控制结构设计测试用例,主要用于软件程序验证。

                   白盒测试又分为静态白盒测试和动态白盒测试。其中静态测试主要涉及代码走查和审查,就不在这里总结了,动态测试包括逻辑覆盖测试、路径覆盖测试和边界值测试等,当然分法还有好多,这里主要总结逻辑覆盖测试和路径覆盖测试。覆盖测试要以程序图和流程图辅助工具,所以在学习覆盖测试前要熟练掌握程序图和流程图的画法。

          本节主要介绍流程图和流程图到程序图之间的转化。程序流程图是描述和分析软件控制流向的通用工具,利用程序流程图设计测试用例有助于分离程序的路径,进行覆盖统计,程序流程图的主要符号:

          顺序:

         条件判断:

         先判断后循环:

         先执行后判断循环:

     

        下面看一段程序的代码,并分析画出其流程图:

        #include <iostream.h>

       void main()

      {

       inti,a[5];              //定义循环变量i,数列项n

       longsum=0;      //定义数列的和及临时变量

       cout<<"请输入5个数,作为数列每项的值:"<<endl;

       for(i=1;i<=5;i++)

       {

         cout<<"请输入第"<<i<<"个值:";

         cin>>a[i];

       }

       for(i=1;i<=5;i++)

       {

         sum+=a[i];

       }

       cout<<a[1]<<"+"<<a[2]<<"+...+"<<a[5]<<"="<<sum<<endl;

      }

     

     

          流程图:

     

     

     

          程序图:

     

          由于程序流程图的知识很简单,所以本节就介绍这么一个非常简单的实例,图都可以对比画出来的,程序流程图在逻辑覆盖测试中非常重要,所以以后章节的总结中也会渗透程序流程图的实例。

     

    快世界末日了,不知道这软件测试在传说中的末日来临之前还能总结完不,不管末日来不来,软件测试的总结还得进行下去。好了今天开始总结逻辑覆盖中的语句覆盖。

     

        什么是语句覆盖呢?从字面上理解,就是把程序代码每条语句都覆盖了,至少都要执行一遍,其实意思也差不多。语句覆盖是一个比较弱的测试标准,意在选择足够的测试用例,使得程序中每条语句至少都能被执行一次,下面举一个小程序作为实例,希望大家能够在这个例子中领会其中的思想。

     

        程序的代码:

    #include <iostream.h>

    void main()

    {

        //声明变量

        int A,B,C,a,b,c;

       //提示并存储用户输入

     

        cout<<"请输入一个整数A:";

     

        cin>>A;

     

        cout<<"请输入一个整数B:";

     

        cin>>B;

     

        cout<<"请输入一个整数C:";

     

        cin>>C;

     

        //条件选择

        if(A>5)

        {

           a=A*A;

           cout<<"A>5,所以a=A*A="<<a<<endl;

        }

        else

        {

           a=A;

           cout<<"A<=5,所以a=A="<<a<<endl;

        }

        if(B>10)

        {

          b=B*B;

          cout<<"B>10,所以b=B*B="<<b<<endl;

        }

        else

        {

           b=B;

           cout<<"B<=10,所以b=B="<<b<<endl;

        }

        if(C>15)

        {

           c=C*C;

           cout<<"C>15,所以c=C*C="<<c<<endl;

        }

        else

        {

           c=C;

           cout<<"C<=15,所以c=C="<<c<<endl;

        }

    }

     

       程序流程图如下:

     

       这段代码很简单,思路也很清晰,看到程序流程图后,思路就更清晰了,两幅图中用红色标出的路径表示E、H、K三个条件均取真时,程序执行的路径;土黄色的路径表示E、H、K三个条件均取假时,程序执行的路径。那么根据图可以看出只要走了这两条路径就可以把这段代码的所有语句执行一遍,所以测试用例也就可以相应的设计了,在这里给出了一对测试样例:

     

       测试用例1:A=6,B=11, C=16

       测试结果:

     

       测试用例2:A=5,  B=10, C=15

       测试结果:

     

        可以看出,测试结果符合题意。

        好了,语句覆盖就总结到这,过多了就不多说了,因为说多可能会和以后的覆盖分析混淆,学一种覆盖就牢牢掌握一种。

     

     

    学好软件测试,必须对软件的开发有足够的了解。软件的开发过程这章主要讲解一下内容:

     

     

     

     

     

             软件产品的组成部分:            

     

     

                    软件项目成员部分:

     

     

               软件的开发模式部分:

     

         

             图片上写的够详细的了,我就不再罗嗦了。

    学好软件测试,必须对软件的开发有足够的了解。软件的开发过程这章主要讲解一下内容:

     

     

     

     

             软件产品的组成部分:            

     

     

                    软件项目成员部分:

     

     

               软件的开发模式部分:

     

         

             图片上写的够详细的了,我就不再罗嗦了。

    这一章我们要了解一些软件测试的基本常识,下面请看内容提要。

     

     

                      测试需要遵循一定的原则,原则如下图:

     

     

                       作为软件测试员必须要知道一定的常识,测试的常识也如下图:

     

     

                      测试界的术语和定义。还是如下图:

     

     

     

                了解了软件测试的实质之后,就进入了软件测试的基础知识学习阶段,在以后的几章中我会介绍一些关于软件测试的基础知识,敬请关注,谢谢。

    从本章开始,将介绍软件测试的基础知识。说道软件大多都有软件产品说明书,那么怎么测试说明书以便在产品出厂之前发现缺陷呢?下面我将介绍一下测试软件产品说明书的方法。

     

            本章共分以下三部分:

     

     

                  其中开始测试介绍如下:

     

     

                 对产品说明书进行高级审查的介绍如下:

     

     

                 产品说明书的低级测试技术介绍:

     

     

     

              读完本章,读者可能会认为测试产品说明书是一个相当主管的过程、高级审查技术可以查出遗漏和丢失之处,低级测试技术用于保证所有细节都被定义,但是这些技术不是真正的按步操作过程。

                如果读者有兴趣了解更高级的审查产品说明书技术,那么就研究一下Michel Fagan的工作,Fagan先生在IBM公司任职时,率先采用一种称为软件检测的有序方法。许多公司,尤其是生产要求严格软件的公司用它正式审查软件说明书和代码。

     

     

    闭着眼睛测试软件其实就是指动态黑盒子测试。它是动态的,因为程序正在运行——软件测试员充当客户使用它;它是黑盒子,因为测试时不知道程序如何工作——闭上眼睛。   


          对于软件测试新手应聘软件测试职位,主考人一定会问如何测试新程序或者新特性,本章就将介绍最常用、最有效的软件测试技术,无论是何种类型的程序——公司的客户账目软件包、工业自动化程序还是市场流行的射击游戏,这些技术都适用。

     

            下面先看一下本章内容的概述:

     

     

               初识动态黑盒子测试:

     

     

                通过测试和失败测试:

     

     

              等价分配:

     

     

                 数据测试:

     

     

                 状态测试:

     

     

                         

     

               其他黑盒子测试技术:

     

     

           对于测试新手,这章是最重要的一章,这好比是面试或者上岗第一天接到软件进行测试。运用本章所讲的技术是快速找出缺陷行之有效的方法。

            本章的黑盒子测试技术是一套行之有效的测试技术,但是要用到新技术来完善。

    进行到现在,已经是第六章了。本章主要讲解检查代码——静态白盒子测试——被证实是早期发现软件缺陷最有效的方法。虽然这是一项需要大量准备工作才能有成效的任务,但是许多研究表明花费的时间与得到的好处相比是值得的。

     

            下面先来看一下本章的内容概述:

               静态白盒子测试:

     

     

              正式审查:

     

     

                    编码标准和规范:

     

     

              通用代码审查清单:

     

     

          

               目前,静态白盒子测试正在受到重视,而在某些开发过程中,没有它,项目就无法得到可靠的软件。

            

     

    展开全文
  • 在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试测试用例,辅之以黑盒测试测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。...

    单元测试内容:

    在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。

    (1) 模块接口测试:在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括: 调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块的参数是否正确; 全局量的定义在各模块中是否一致。在做内外存交换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件; 正文书写/输入错误;I/O错误是否检查并做了处理。
    (2) 局部数据结构测试。测试项目包括:不正确或不一致的数据类型说明;使用尚未赋值或尚未初始化的变量;错误的初始值或错误的缺省值; 变量名拼写错或书写错; 不一致的数据类型; 全局数据对模块的影响。
    (3) 路径测试。测试项目包括:选择适当的测试用例,对模块中重要的执行路径进行测试;应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误;对基本执行路径和循环进行测试可以发现大量的路径错误。
    (4) 错误处理测试。包括: 出错的描述是否难以理解;出错的描述是否能够对错误定位; 显示的错误与实际的错误是否相符;对错误条件的处理正确与否;在对错误进行处理之前,错误条件是否已经引起系统的干预等。
    (5) 边界测试。包括:注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。
    单元测试的步骤:
    模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。包括:驱动模块、桩模块 (stub) ── 存根模块。 如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。

    转载于:https://www.cnblogs.com/tan1994/p/4420806.html

    展开全文
  • 测试基础 软件测试的定义 ? 1983年IEEE提出的软件工程标准术语软件测试定义如2 使用人工和自动手段来运行或测试某个系统的过程其口的在于检验它是否满 足规定的需求或是弄清预期结果与实际结果之间的差别 图示 ...
  • 软件测试知识点及面试题目汇总 一 软件测试基本概念 1、软件=程序+文档,软件测试=程序测试+文档测试。 “程序”是指能够实现某种功能的指令的集合,“文档”是指软件在开发、使用和维护过程中产生的图文集合。...

    软件测试知识点及面试题目汇总

    软件测试基本概念

    1、软件=程序+文档,软件测试=程序测试+文档测试。
    “程序”是指能够实现某种功能的指令的集合,“文档”是指软件在开发、使用和维护过程中产生的图文集合。;

    2、软件的分类
    按功能分:系统软件、应用软件
    按技术架构分:单机版软件、C/S结构软件(C是指客户端, S指服务器端)、B/S结构软件(B是指浏览器)
    按照用户划分:产品软件、项目软件
    按开发规模划分:小型、中型、大型

    3、BUG的定义:软件的BUG指的是软件中(包括程序和文档)不符合用户需求的问题。常见的软件BUG分三种类型:完全没有实现的功能;基本实现了用户需求的功能;实现了用户不需要的功能。

    4、测试环境=软件+网络+硬件。搭建环境:真实、干净、无毒、独立

    5、软件环境的分类:软件开发环境\软件生产运行环境

    6、测试用例:指在测试执行之前设计的一套详细的测试方案,包括测试环境、测试步骤、测试数据和与其结果!测试用例=输入+输出+测试环境。测试用例有两个模板,word和excel,前者适合性能测试,后者适合功能测试。

    软件测试分类

    1、黑盒测试:指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果

       白盒测试:指的是把盒子盖打开,去研究里面的源代码和程序结构。

    2、静态测试:是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。

       动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。

       注:同一个测试,既有可能属于黑盒测试,也有可能属于动态测试;既有可能属于静态测试,也有可能属于白盒测试。他们之间也有可能交叉。

    3、单元测试:编译运行程序——静态测试——动态测试

       集成测试:是单元测试的下一个阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。

       系统测试:指的是将整个软件系统看作1个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。

       验收测试:指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序.

       验收测试又分为α测试和β测试,其实α测试指的是由用户、测试人员、开发人员等共同参与的内部测试,而β测试指的是内侧后的公测,即完全交给最终用户测试。

    4、功能测试:是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。功能测试又可以细分为很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。

       性能测试:软件的性能包括很多方面,主要有时间性能和空间性能两种。时间性能:主要指软件的一个具体事务的响应时间。空间性能:主要指软件运行时所消耗的系统资源。

       软件性能测试分为一般性能测试、稳定性测试、负载测试和压力测试。一般性能测试指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。稳定性测试,也叫可靠性测试,是指连续运行内测系统,检查系统运行时的稳定程度。我们通常用MTBF(错误发生的平均时间间隔)来衡量系统的稳定性,越大稳定性越强。负载测试是性能测试的一种,通常是指让被测系统在其能忍受的极限范围之内连续运行,来测试系统的稳定性。压力测试是性能测试的一种,通常是指连续不断地给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。

                假设一个人很轻松的就能背一袋米,背两袋米很吃力,最多就能背三袋米,那么:
                一般性能测试:我就让他背一袋米
                稳定性测试:我让他背一袋米,但是让他去操场上跑圈,看多久累倒。
                负载测试:我让他背两袋米去操场上跑圈,看多久累倒。
                压力测试:我让他背两袋米,三袋米,四袋米......发现他最多就能背三袋米。

    5、回归测试:是指对软件的新的版本测试时,重复执行上一个版本测试时的用例
       冒烟测试:是指在对一个新版本进行西戎大规模的测试之前,先验证一下软件的基本功能是否可以实现,是否具备可测性
       随机测试:是指测试中所有的输入数据都是都是随机生成的,其目的是模拟用户的真是操作,并发现一些边缘的错误。

    6、关系

    测试工程师

    1、测试工程应该具备的基本职业素质:三心二意一能力。三心:细心、耐心、信心。二意:服务意识、团队意识。一能力:沟通能力。

    2、如何成为一名优秀的测试工程师:内功(基础知识:计算机硬件、网络、操作系统、数据库等)、测试技术(黑盒测试中等价类、边界值、因果图等,白盒测试中的语句覆盖、分支覆盖、路径覆盖等)

       1)、不断学习充电
       2)、阅读原版书籍
       3)、阅读缺陷管理系统中的缺陷报告
       4)、阅读高手写的测试用例
       5)、学习产品相关的业务知识

    3、SQA——软件质量保障,CMM是SQA用来监督项目的一个标准质量模型,SQA按照CMM上面各种规则来检验各种各样的项目。CMM——能力成熟度模型

    4、软件测试的原则:

       1)、Zero bug——指的是软件没有任何bug,没有bug是不可能的,我们只能想方设法把软件的bug数控制在可以忍受的范围之内。Good enough——指的是只要软件达到一定的质量要求,就可以停止测试了。
       2)、不要试图穷举测试
       3)、开发人员不能既是运动员又是裁判员
       4)、软件测试要尽早执行
       5)、软件测试应该追溯需求
       6)、缺陷的二八定理——缺陷的集群现象或是虫子窝现象
       7)、缺陷具有免疫性

    黑盒测试技术、等价类技术、边界值技术、因果图法、流程图法

    缺陷管理

    1、BUG的分类

    Bug严重级别(Severity,Bug级别):是指因缺陷引起的故障对软件产品的影响程度。由测试人员指定。

    A
    错误导致了死机、产品失败(“崩溃”)、系统悬挂无法操作;
    B
    功能未实现或导致一个特性不能运行并且不可能有替代方案(包括计算错误);
    C
    错误导致了一个特性不能运行但可有一个替代方案;
    D
    错误是表面化或微小的(提示信息不太准确友好、错别字、UI布局或罕见故障等),对功能几乎没有影响,产品及属性仍可使用;
    E
    建设性的意见或建议。

    Bug优先级(Priority):指缺陷必须被修复的紧急程度。由Bug分配者(开发组长/经理)指定。

    5阻止相关开发人员的进一步开发活动,立即进行修复工作;阻止与此密切相关功能的进一步测试

    4必须修改,发版前必须修正

    3必须修改,不一定马上修改,但需确定在某个特定里程碑结束前须修正

    2如果时间允许应该修改

    1允许不修改


    缺陷类型(Type):是根据缺陷的自然属性划分的缺陷种类。

    Build
    由于配置库、变更管理或版本控制引起的错误。

    Data
    数据、数据库、计算错误等。

    Function
    影响了重要的特性、产品接口、硬件结构接口和全局数据结构。如逻辑,指针,循环,递归,功能等缺陷。

    Interface
    与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的接口缺陷。

    Performance
    不满足系统可测量的属性值,如:执行时间,事务处理速率等。

    Requirement
    需求方面缺陷如(不明确、错误、考虑不全面等等)。

    User Interface(简写UI)
    人机交互特性:屏幕格式,页面排版、控件位置等方面的缺陷。

    其它
    未知错误

    Bug状态(Status):指缺陷通过一个跟踪修复过程的进展情况。包括Open、Fixed、Closed及Postponed等Open
    为测试人员新问题提交所标志的状态。为任务分配人(开发组长/经理)对该问题准备进行修改并对该问题分配修改人员所标志的状态。Bug解决中的状态,由任务分配人改变。对没有进入此状态的Bug,程序员不用管。

    Fixed
    为开发人员修改问题后所标志的状态,修改后还未测试。

    Closed
    为测试人员对修改问题进行验证后通过所标志的状态。由测试人员改变。

    Postponed
    1、由于开发时间、进度、重要程度或者技术/设计/需求等方面的原因,认为不能解决、须延期解决、或者本版不做留待到后续版本解决的Bug;

    2、因设计结构问题无法修改。测试人员认为是Bug,不符合逻辑,也不符合用户的要求,但开发人员则认为是按照设计做的、只能如此处理,否则修改代价太大,这种问题可以拖后处理

    duplicated
    bug重复提交


    Not error
    测试员理解错,不是bug,测试员提错了

    2、提交BUG注意事项:确保重现、要用最少且必要的步骤描述BUG、简洁准确完整、一个BUG一个报告

    3、常见的BUG管理工具:TD、Track Record、Clearquest、Bugzilla、Mantis、JIRA

    测试管理

    测试周期:计划——测试设计——测试执行——测试评估

    软件测试工具简介

    1、一般软件测试工具分为黑盒测试工具、白盒测试工具、测试管理工具

    2、MI loadrunner——性能测试,MI winrunner——功能测试,MI testdirector——测试管理工具,MI QTP——功能测试工具......

    1、appium 怎么定位toast弹框

    appium1.6以后回答需要升级u2进行定位。

    2、什么是事务,知道事务提交、回滚

    事务是并发控制单位,用户定义的一个操作序列。这些操作要么都做,要么都不做,是不可分割的的工作单位。通过事务,sql server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性,主要用于一些对操作过程的完整性比较高的程序。(事务的特性:原子性、一致性、隔离性、持久性)。

    事务提交是提交事务的所有操作:具体来说就是将所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束。

    事务回滚是数据库返回到事务开始的状态;事务在运行过程中发生某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,使数据回滚到事务开始时的状态。

    3、怎么进行数据库优化

    大致是有8种方法:(具体参考链接:https://www.cnblogs.com/luokakale/p/7242839.html

    a、选取最试用字段属性

    b、使用连接(join)代替子查询

    c、使用联合(union)来代替手动创建的临时表

    d、使用事务 

    e、锁定表

    f、使用外键

    g、使用索引

    h、优化查询语句

    4、什么是分布式系统架构

    分布式架构系统简单的说是运行在多个处理器上的软件架构设计。分布式系统是建立在网络之上的软件系统、正是因为软件的特性,所以具有高度的内聚性和透明性。

    5、linux中使用top什么命令可以查看系统详细内存

    top 按 c 查看显示完整命令

    6、python中列表和字典的区别,列表和元祖的区别

    元祖(tuple):元祖常用小括号表示,即:(),元素加逗号,是元祖的标识。

    列表(list):列表常用方括号表示,即:[],创建一个列表,只要把用逗号分隔的不同的数据项使用方括号括起来即可。

    字典(dict):字典是由花括号{}来包含其数据的,花括号内包含键(key)和其对应的值(value),一对键和值成为一个项,键和值用冒号:隔开,项和项之间用逗号,隔开,空字典就是不包含任何项的字典,也可理解为空字典就是花括号内不包含任何内容,直接使用花括号{}表示

    列表和字典的区别:字典的查找和插入的速度极快,不会随着key值的增加而增加,需要占用大量的内存,内存浪费多

    列表和元祖的区别:元祖比列表操作速度快,对数据不可更改、可用于字符串格式化中、可作为字典的key

    7、数据库中有使用过if等函数吗?

    if既可以作为表达式用,也可在存储过程中作为流程控制语句使用(具体参考链接:https://blog.csdn.net/caidingnu/article/details/88772170

    8、什么是脏数据?

    脏数据是在临时更新(脏读)中产生,比如事务A更新了某个数据项x,但是由于某种原因,事务A出现了问题,于是要把A回滚。但是回滚之前,另一个事务读取了数据X的值(A更新后),A回滚了事务,数据项恢复了原值。事务B读取的就是数据项X的就是一个“临时”值,这就是脏数据。

    9、什么是幂等性?

    就是用户对同一操作发起一次请求或者多次请求的结果是一致的。不会因为多次点击二次产生副作用。简单的例子,就是支付,用户购买商品使用支付,支付扣款成功,但是返回结果的时候网络异常,此事钱已经扣了,用户再次点击,此时会产生二次扣款,结果返回成功,用户查询余额返现多扣钱了。流水记录变成了两条、这就是幂等性。

    10、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

    1、检查系统是否有中毒的特征;
    2、检查软件/硬件的配置是否符合软件的推荐标准;
    3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
    4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
    5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

    11、安卓四大组件

    activity 通过Intent进行通信
    service service用于在后台完成用户指定的操作
    Content provider 指定数据集提供给其他应用程序
    Broadcast Receiver 对外部事件进行过滤

    12、什么是多线程,

    线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

    13、linux中vim模式有

    1、命令模式,2、编辑模式、3、末行模式

    14、计算机网络模型

    七层模型(应用层、表示层、会话层、传输层、网络层、数据链层、物理层)五层模型(应用层、传输层、网络层、数据链层、物理层)

    15、什么是子网掩码

    它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

    16、如果测试时间不够,你会怎么办?

    测试目前主要是产品测试和项目测试。做自己公司的产品测试,如果碰到不能按原计划完成,本着为质量负责,一般都可以申请延期。
    如果是做项目,迫于合同和客户验收的压力,碰到不能按原计划完成的情况,就是项目风险了。而处理的方式基本都是“先测客户比较关心的,比较常用的功能”,保证通过客户验收,拿到项目款。分析客户验收所关心的功能点(比如客户最近几天提过什么需求,肯定要测试,因为时间短,他肯定记得),分析系统最脆弱的地方,走通所有业务流程等。而客户验收时候,不关心和不可能想到得地方可以不测试(比如系统中很多同步功能)

    17、性能指标有哪些?

    注册用户数、在线用户数、并发用户数、请求响应时间、事务响应时间、每秒点击数、吞吐率、业务成功率、tps(每秒事务处理数)、资源利用率

    18、什么是接口?

    传递数据的通道就叫接口

    19、测试的基本6大法则

    功能性、可靠性、效率性、可移植性、可维护性、易用性

    20、接口测试测哪些东西

    a、通过性验证

    b、参数组合

    c、接口安全

    d、异常验证

    e、根据业务逻辑来设计测试用例

    21、用fiddler抓包时怎么制造异常情况;

    通过请求前打断点,可以修改请求参数

    22、 什么是mq,mq的特点是什么?

    把要传输的数据放在队列中保存消息的容器.

    mq的特点是:异步、解耦、广播、流控与销峰

    23、怎么保证软件测试质量

    测试人员需要做的工作

    测试策略的设计: 质量是多维度的,功能测试、性能测试、兼容性测试等多种测试类型的结合

    用例质量: 采用合适的用例方法、如何进行需求分析、用例评审

    执行质量: 保证执行深度(界面、关联模块、数据库、日志)与广度(系统测试类型)

    缺陷质量:bug评审,引入合适的bug流程

    过程质量:合理的软件测试流程,测试过程监控

    24、android和ios系统测试的不同点

    1、Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
    2、多分辨率测试,Android端20多种,ios较少;
    3、手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
    4、操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
    5、push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
    6、安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有appstore,iTunes和testflight下载;
    7、升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)

    25、使用中间件,中间件的作用!

    具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

     26、什么是orm(对象关系映射)

    解决面向对象与关系数据库存在的互不匹配的现象技术,简单说,orm是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

    27、使用什么命令实现查看app手机内存

    adb shell dumpsys meminfo 包名(com.mbox.cn)

     28、什么是ANR(applicaton not responding)

    29、APP日志分析查找关键字 crash ANR Exception ERROR force closed

    30、多线程:线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

    31、unittest工作原理

    使用testcase 进行单元测试,通过testsuit 装载用例 使用testrunner执行用例,testresult执行用例。

    32、给你的一个测试项目,你怎么开展测试工作

    在拿到项目后,在熟悉需求、原型图后不必急着去设计用例,而是先需思考下测试思路,从哪方面下手,有哪些地方需要覆盖到,支持哪些平台,有哪些不同的常用场景,是否需要考虑到稳定性、性能等等,针对项目进行大概的测试规划,再根据大概的规划去逐个细化,最后形成用例,简单来说就是:
    1.明确测试任务
    2.分析测试范围
    3.制定测试计划和测试用例。

     33、什么是cdn?

    cdn的全称是 Content Delivery Network 即内容分发网络,通俗的理解就网站加速,CPU均衡负载,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速度慢等问题。

    1.软件测试方法有哪些分类?各有什么特点?设计测试用例的主要方法有哪些?

    软件测试方法分类

    1)白盒、黑盒、灰盒

    2)单元测试、集成测试、系统测试、验收测试、回归测试、Alpha 测试、Beta 测试

    3)静态测试和动态测试

    设计测试用例的主要方法

    1)等价类划分

    2)边界值分析法

    3)因果图法

    4)场景法

    2.系统测试是什么?需要考虑哪些方面?

    1)系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.。

    2)它的的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统"做得怎样?"。这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。

    3)测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。

    4)系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。

    系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试

    3.怎样才能成为一个合格的软件测试工程师?

    1)计算机专业技能

    2)测试专业技能

    3)软件编程技能

    4)网络、操作系统、数据库、中间件等知识

    5)较强的责任心,对待测试工作要有不厌其烦的态度,与需求人员、研发人员多交流多沟通

     

    4.一名军官要求24名士兵站成6排,每排都是5人,士兵们全犯傻了。最后一名士兵终于想出了一个好办法。他是怎样安排的?

    只要排成一个六边形即可

    5.为什么要在一个团队中开展软件测试工作?

    保证软件质量的最后一道关口。

    6.您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?

    测试计划->测试设计(测试用例,测试数据)->测试执行(单元测试,集成测试,系统测试,回归测试)

    7. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

    易用性测试-界面的友好性,操作方便性等。

    功能测试-系统中功能性需求的满足

    安全性测试-系统是否存在安全隐患和漏洞

    性能测试-系统在大并发下的响应速度和健壮性

    8.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

    黑盒/白盒:主要区别在是否了解系统或程序的内部结构和代码

    单元测试:关注某一个单元,函数,模块的正确性,一般需要编写相关测试代码。

    集成测试:模块或模块直接的集成接口测试,单个模块测试

    系统测试:一个完整功能的完全测试。

    9.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

    提前安排出测试工具选择,测试类型选择,人员需求,保证和项目开发协调一致,保证测试工作顺利进行。

    10.您认为做好测试计划工作的关键是什么?

    了解项目或系统的业务需求

    和项目经理协调好,了解项目的进度计划安排情况

    11.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

    边界值/等价类/业务流程图分析和状态转换分析/业务逻辑分析

    12.您认为做好测试用例设计工作的关键是什么?

    对业务和软件需求非常清楚,可以根据需求不同选择不同的测试用例设计

    13.您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。

    评审计划->预审->评审;

    评审内容主要是测试用例对软件需求的覆盖程度,对于相关边界是否考虑,是否针对复杂流程准备多套测试数据,是否有专门针对非功能性需求的测试。

    14.您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。

    制订计划->选择测试功能->选择测试工具->录制脚本->运行测试->分析结果

    15.您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

    微软WAS,LoadRunner

    16.您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

    关键是测试脚本的录制,测试时候测试环境的干净。

    17.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

    缺陷名词/描述/缺陷等级/严重程度/发现模块/发现步骤和过程/是否可以重现

    18.您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。

    CQ,也可以使用BugFree等免费工具。

     

    19.您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?

    将先进的经验或思想固化到过程中,通过过程改进和能力提高来改进软件质量。

    20、根据你的经验说说你对软件测试/质量保证的理解?

    软件质量保证与测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据和预期的输出结果),并利用这些测试用例去运行程序,以发现错误的过程。它是对应用程序的各个方面进行测试以检查其功能、语言有效性及外观排布.

    21、软件测试的流程是什么?

    需求调查: 全面了解您的系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等

    根据系统概况进行项目所需的人员、时间和工作量估计及项目报价。

    制定初步的项目计划: 在与您充分共同和协商的基础上制定我们的测试计划。

    测试准备: 组织测试团队、培训、建立测试和管理环境等。

    测试设计: 按照测试要求进行每个测试项的测试设计,包括测试用例的设计及测试脚本的开发等。

    测试实施: 按照测试计划进行实施测试。

    测试评估: 根据测试的结果,出具测试评估报告。

    22、(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 是软件工程化过程。

    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的有机集成。

    23、还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?

    测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。

    24、然后紧接着就基于目前中国的国情,大多数公司的软件项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?(大多数公司最想知道的就是在这种困难面前你该怎么保证软件的质量,因为这些公司一般就是这种情况—–既不想投入过多又想保证质量,faint )

    出现以上的情况,如果仅仅想通过测试来提高软件质量,那几乎是不可能,原因是没有足够的时间让你去测试,少而不规范的文档导致测试需求无法细化何谈足够且有针对性进行测试。所以,作为公司质量保证的你应该先和项目经理确定符合项目本身最适合的软件生命周期模型(比如RUP的剪裁,原型法),明确项目的开发流程并督促项目组按照此流程开展工作,所有项目组成员(项目经理更加重要)都要制定出合理的工作计划,加强代码的单元测试,在客户既定的产品交付日期范围之内,进行产品的持续集成等等,如果时间允许可以再配合客户进行必要的系统功能测试。

    25、一个测试工程师应具备那些素质和技能?

    1、掌握基本的测试基础理论 ;

    2、本着找出软件存在的问题的态度进行测试,即客观吧,不要以挑刺形象出现

    3、可熟练阅读需求规格说明书等文档 ;

    4、以用户的观点看待问题

    5、有着强烈的质量意识 ;

    6、细心和责任心 ;

    7、良好的有效的沟通方式(与开发人员及客户)

    8、具有以往的测试经验 ;能够及时准确地判断出高危险区在何处.

    9、为什么要在一个团队中开展软件测试工作?

    因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

    26、您所熟悉的软件测试类型都有哪些?

    测试类型有:功能测试,性能测试,界面测试。

    功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。

    性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。

    界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。

    27、您认为做好测试用例设计工作的关键是什么?

    白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果

    黑盒用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题

    软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:

    1、是否有不正确或遗漏的功能?

    2、在接口上,输入是否能正确的接受?能否输出正确的结果?

    3、是否有数据结构错误或外部信息(例如数据文件)访问错误?

    4、性能上是否能够满足要求?

    5、是否有初始化或终止性错误?

    软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

    1、对程序模块的所有独立的执行路径至少测试一遍。

    2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。

    3、在循环的边界和运行的界限内执行循环体。

    4、测试内部数据结构的有效性,等等。4、验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

    28、测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

    软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。

    测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试策略和测试方法(最好是能先评审)

    29、您认为做好测试计划工作的关键是什么?

    1. 明确测试的目标,增强测试计划的实用性

    编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确

    2.坚持“5W”规则,明确内容与过程

    “5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。

    3.采用评审和更新机制,保证测试计划满足实际需求

    测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。

    4. 分别创建测试计划与测试详细规格、测试用例

    应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

    30、 您所熟悉的测试用例设计方法都有哪些?

    1.等价类划分

    2.边界值分析法

    3.错误推测法

    4.因果图方法

    31、你的测试职业发展是什么?

    测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的11,12点要求自己,不断的更新自己改正自己,做好测试任务。

    32、你自认为测试的优势在哪里?

    优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。

    33、当开发人员说不是BUG时,你如何应付?

    开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。

    参考链接:https://www.cnblogs.com/z432110/p/10647360.html

    https://zhuanlan.zhihu.com/p/32053224

    https://www.cnblogs.com/z432110/p/10647486.html

    https://www.cnblogs.com/xdg920/p/13099486.html

    展开全文
  • (备注:以下链接均为其他...一、软件测试知识梳理 https://www.cnblogs.com/anliven/p/6209530.html 二、测试基础知识点汇总https://www.cnblogs.com/mujiujiu/p/9328840.html 三、黑盒测试用例设计方法https:...
  • 软件质量测试的知识点汇总,重点讲述白盒测试,黑盒测试,单元测试,并从主体上回顾整个软件测试领域的一些常用方法(注意全部为xmind格式的文件,需要下载xmind软件才能查看)
  • 学习软件测试各阶段知识点汇总

    千次阅读 2017-06-01 13:50:28
    软件测试基础理论:软件开发阶段划分,软件测试阶段划分,模型和分类、软件测试主要原则、测试用例概念、测试方法选择、TestDirector概述、软件测试计划编写 功能测试项目实践:熟悉软件需求、编写测试计划、编写...
  • 软件工程知识点汇总

    2020-12-08 23:56:59
    需求分析 → 软件分析 → 软件设计 → 编码(测试)→ 软件测试 →运行维护 传统的软件过程 瀑布模型 特点 线性开发模型 顺序性 依赖性 存在的问题 只有当分析员能够做出准确的需求分析时,才能得到预期的结果,...
  • 软件测试目标是实现软件质量、进度、成本之间的最佳平衡有效的测试管理需要企业管理层、软件开发团队、质量保证与测试团队能力合作,采用计划、组织、领导、控制等手段,组建高效团队,制定完善的测试流程,做好测试...
  • 测试基础知识点汇总

    2018-07-18 14:05:00
    如何定义缺陷 ...软件难以理解、不易使用、运行缓慢或者--从测试员的角度看--最终用户会认为不好 测试用例设计方法 白盒测试 语句覆盖 判定覆盖 条件覆盖 判定/条件...
  • 一开始写在了语雀文档上,结果复制过来文本格式不兼容。懒得重新调整啦,这里就截图分享一下吧~
  • 强连通图(Strongly Connected Graph) 是指一个有向图...功能强大、功能全面、易于使用,不仅适合于主机平台软件测试,同时适合于嵌入式软件测试。 编程标准验证是高可靠性软件开发不可缺少的软件质量保证方
  • 软件测试面试题汇总

    千次阅读 2019-03-05 16:51:07
    知识点总结: 1、什么是软件测试? 2、软件测试的目的? 3、什么是需求文档测试: 4、什么是设计文档测试? 5、什么是α测试? 6、什么是β测试? 7、什么是驱动模块? 8、什么是桩模块? 9、什么是白盒测试? 10、什么是...
  • 在谈论软件测试分类的时候,分类的结果五花八门。因为大家将各个维度划分的内容都集中到一起了,再加上各自不同的见解与补充,就有各种冲突存在。软件测试基本定为4类测试(最多5类,自动化或者兼容性单独提出来):...
  • 软件测试 岗位 基础知识点汇总(供大学毕业生参考)
  • 对应软件生命周期中软件开发时期的总体设计阶段 一 了解软件总体设计的任务、过程、...制定测试计划 书写文档 审查和复审 设计原理(原则) 模块化(箭头从调用模块指向被调用模块,表示调用模块调用了被调用...
  • 知识点汇总14

    2019-10-16 10:47:03
    1.配置管理:功能基线,分配基线,产品...6.功能测试:即黑盒测试 7.软件质量属性被分为6个等级 8.软件生存周期过程:基本过程(5个),支持过程(9个),组织过程(7个) 9.借助某种工具对代码进行检查,检验是否符...
  • App功能测试知识汇总

    2019-02-11 13:55:49
    2 App测试点 3  2.1安全测试 3  2.1.1软件权限 3  2.1.2安装与卸载安全性 4  2.1.3数据安全性 4  2.1.4通讯安全性 5  2.1.5人机接口安全性 5  2.2安装、卸载测试 5  2.2.1安装 6  2.2.2卸载 6  2.3 ...
  • 软件工程知识汇总

    2020-07-02 17:56:36
    文章目录软件生命周期模型软件危机需求分析数据流图实体联系图(E-R图)数据字典流程图盒图判定树判定表白盒测试黑盒测试类图用例图时序图状态图软件维护项目管理参考资料 软件生命周期模型 软件生命周期模型是描述...
  • app功能测试知识汇总

    千次阅读 2016-06-13 09:44:39
    1 APP测试基本流程 2 ...2 App测试点 3 2.1安全测试 3 2.1.1软件权限 3 2.1.2安装与卸载安全性 4 2.1.3数据安全性 4 2.1.4通讯安全性 5 2.1.5人机接口安全性 5 2.2安装、卸载测试 5 2.2.1安装 6
  • 软件测试知识整理

    2016-07-06 22:36:43
    在一个测试计划汇总能包含哪些内容? 答:在一个测试计划中可以包含需要测试的产品的特点和主要功能模块,列出需要测试的功能,并标明侧重点;测试的策略和记录(测试工具的确认,测试用例等文档模板,测试方法的...
  • 第二篇,博主:“Suny王维”的软件测试笔记面试题目完全汇总 10万+点击量,187点赞量 https://blog.csdn.net/qq_36595013/article/details/88231747 第三篇,博主:”白日梦想家wu”的软件测试工程师经典面试
  • nginx几个知识点汇总

    2016-11-11 16:17:00
    7理由足以说明一切:1 、高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 ~ 3 万并发连接数。?2 、内存消耗少: 在 3 万并发连接下,开启的 10 个 Nginx 进程才消耗 150M 内存( 15M*10=150...
  • C#.NET重点知识点汇总

    千次阅读 2012-10-12 08:52:46
    3.软件测试方法分为(黑盒测试)(白盒测试)。 4..NET通过对各语言先编译成(中间语言(IL)),然后再执行时用(JIT(即时编译器))将其编译成本地平台代码,来实现异构平台下对象的互操作 5.在SQL SER
  • 3.软件测试方法分为(黑盒测试)(白盒测试)。4..NET通过对各语言先编译成(中间语言(IL)),然后再执行时用(JIT(即时编译器))将其编译成本地平台代码,来实现异构平台下对象的互操作5.在SQL SERVER 中游标的...

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

软件测试知识点汇总