Unit testing 如何在有限的时间内实现自动化测试的最大价值?

Unit testing 如何在有限的时间内实现自动化测试的最大价值?,unit-testing,testing,automated-tests,qa,Unit Testing,Testing,Automated Tests,Qa,我有一个相对较大的项目,到目前为止几乎没有自动测试 现在管理层给了我们几个星期的时间来稳定产品,包括测试自动化 为了充分利用我们在自动测试上花费的X周时间,我需要知道首先要测试哪些类/方法 除了下面列出的方法之外,我如何确定测试工作的优先级(决定现在测试哪个类/方法,以后测试哪个类/方法) 计算每个类的依赖项(有多少其他类使用该类,包括可传递依赖项)。应首先测试依赖类数量最多的类 找出更改最频繁的类(根据版本控制系统)。频繁的更改可能是这些类中大量bug或活跃开发的症状。在这两种情况下,为它们编

我有一个相对较大的项目,到目前为止几乎没有自动测试

现在管理层给了我们几个星期的时间来稳定产品,包括测试自动化

为了充分利用我们在自动测试上花费的X周时间,我需要知道首先要测试哪些类/方法

除了下面列出的方法之外,我如何确定测试工作的优先级(决定现在测试哪个类/方法,以后测试哪个类/方法)

  • 计算每个类的依赖项(有多少其他类使用该类,包括可传递依赖项)。应首先测试依赖类数量最多的类
  • 找出更改最频繁的类(根据版本控制系统)。频繁的更改可能是这些类中大量bug或活跃开发的症状。在这两种情况下,为它们编写单元测试是有意义的
  • 找出测试人员和/或客户的bug报告中涉及哪些类

  • 你所有的想法似乎都很好。可以帮助您确定优先级并实现自动化

    这是如何估算测试工作量的公式:

    测试过程的方法(基于用例驱动的方法)

    测试用例总数=用例数X每个用例的平均测试用例数

    Step 4 : Set Avg Execution Time (AET) per a test case (idelly 15 min depends on your system) 
    
    Step 5 : Calculate Total Execution Time (TET) 
    
    TET = Total number of test cases * AET 
    
    Step 6 : Calculate Test Case Creation Time (TCCT)
    
    通常我们会将TET的1.5倍作为TCCT

    TCCT=1.5*TET

    Step 7 : Time for ReTest Case Execution (RTCE) this is for retesting
    
    通常我们服用0.5倍的TET

    RTCE = 0.5 * TET
    
    Step 8 : Set Report generation Time (RGT
    
    RGT = 0.2 * TET
    
    Step 9 : Set Test Environment Setup Time (TEST)
    
    通常我们服用0.2倍的TET

    RTCE = 0.5 * TET
    
    Step 8 : Set Report generation Time (RGT
    
    RGT = 0.2 * TET
    
    Step 9 : Set Test Environment Setup Time (TEST)
    
    这也取决于测试计划

    Step 10 : Total Estimation time = TET + TCCT+ RTCE + RGT + TEST + some buffer...;)
    
    下面是它的工作原理示例:

    用例总数(NUC):227

    每个用例的平均测试用例(AET):10

    估计测试用例(NTC):227*10=2270

    时间估计执行(TET):2270/4=567.5小时

    创建测试用例(TCCT)的时间:567.5*4/3=756.6小时

    重新测试时间(RTCE):567.5/2=283.75小时

    报告生成(RGT)=100小时

    测试环境设置时间(测试)=20小时

    总小时1727.85+缓冲区

    4表示每小时执行的测试用例数

    i、 e执行每个测试用例需要15分钟

    而且,由于您将几乎从零开始实现自动化

    到目前为止,几乎没有自动测试

    我认为你不仅可以考虑好处,也可以考虑自动化测试的神话:

    • 自动化不能代替人

    • 一旦实现自动化,成本节约就成为必然

    • 每个测试用例都可以自动化

    • 测试可以完全自动化

    • 一个测试工具适用于所有任务

    • 自动化测试并不意味着自动化

      经过所有的测试。。。它的意思是计算机辅助测试


    除了上述答案,我想再补充几点,重新划分自动化的优先级和覆盖范围: 1.在开始任何编码之前,请了解所有测试用例都可以为您提供的最大覆盖范围,如完整流或端到端测试场景。 2.始终保持自动化测试套件的可用性——就像代码一样——首先是那些可以一直使用的测试用例,可以覆盖大部分回归部分,而不是集中应用程序的特定功能。 3.当你的时间有限时,尽量避免实现诸如日志记录、电子邮件摘要报告、html报告等花哨的东西。。。 4.最好使用数据驱动的框架,而不是使用关键字或混合框架,因为您可以通过在有限的时间内改变测试数据来覆盖许多测试用例。 5.为测试数据、测试结果维护excel工作表或csv,您可以使用JXL库在java中处理excel工作表。 6.读excel工作表、写excel工作表是自动化代码中最常用的方法。您可以从以下博客获得有关此的参考: