zoukankan      html  css  js  c++  java
  • 可测试性战术总结

    可测试性战术

    可测试性战术(基于运行的测试)的目标是允许在完成软件开发的一个增量后,较轻松地对软件进行测试。
    根据课上的讲解,下面分别从两方面用于测试的战术进行讨论:提供输入/捕获输出;内部监视。

    可测用性一般场景 

     这个涉及到最近学习的软件测试技术,我认为与场景测试法比较接近。可以是任何涉及到的人员对软件进行任意测试,用户是在软件完成之后开始测试,测试人员贯穿测试其中。

    输入/输出

    • 记录/回放
      记录/回放是指捕获跨接口的信息,并将其作为测试专用软件的输入。

    • 将接口与实现分离
      将接口与实现分离允许实现的代替,以支持各种测试目的。点位实现允许在缺少被占位的组件时,对系统的剩余部分进行测试。

    • 特化访问路线/接口
      具有特化的测试接口允许通过测试工具并独立于其正常操作,来捕获或指定组件的变量值。

    综上所诉,我对输入输出的理解是将接口与功能实现部分分开,这一点在上学期的软件设计中有多次的体现(高内聚、低耦合),方便代码修改,也方便找到问题的出处。

    拿之前MVC模式写的家庭日常流程课堂测试的源码举一个简单的例子:

    接口(在这里看不到核心的代码、应该是软件测试技术里的黑盒测试)

    package utils;
    
    import controller.FamilyController;
    import service.FamilyService;
    import view.FamilyView;
    
    public class Client {
    
        public static void main(String[] args) {
            
            FamilyView homeView = new FamilyView();
            FamilyService homeService = new FamilyService(homeView);
            FamilyController homeController = new FamilyController(homeService);
            homeController.startOneDay();
        }
    }

    功能实现的核心代码

    package controller;
    
    import java.util.Scanner;
    
    import model.Person;
    import service.FamilyService;
    
    public class FamilyController {
    
        private FamilyService homeService;
        
        public FamilyController(FamilyService homeService) {
            this.homeService = homeService;
        }
        
        @SuppressWarnings("resource")
        public void startOneDay() {
            
            String temp = null;
            
            Person dad = new Person("爸爸");
            Person mom = new Person("妈妈");
            Person me = new Person("本人");
            Person bro = new Person("弟弟");
    
            System.out.println("------一天开始------");
            do {
                Scanner input = new Scanner(System.in);
                temp = input.nextLine();
                if(temp.equals("早晨")) {
                    homeService.maicai(dad);
                    homeService.zuoFan(me);
                }
                else if(temp.equals("到晚饭点")) {
                    homeService.zuoFan(dad);
                }
                else if(temp.equals("到午饭点")) {
                    homeService.zuoFan(mom);
                }
                else if(temp.equals("吃完饭")) {
                    homeService.shuWan(mom);
                }
                else if(temp.equals("房子不干净")) {
                    homeService.saoDi(me);
                    homeService.caDi(dad);
                    homeService.saoDi(bro);
                    homeService.caDi(mom);
                }
                else if(temp.equals("有换下来的衣服")) {
                    homeService.xiYiFu(mom);
                }
                else if(temp.equals("工作日")) {
                    homeService.zuoye(me);
                    homeService.zuoye(bro);
                    homeService.work(dad);
                    homeService.work(mom);
                }
                else {
                    System.out.println("---------------------");
                }
            } while(!temp.equals("结束"));
        }
        
    }

    内部监视

    组件可以根据内部状态实现战术,以支持测试过程。

    内置监视器
    组件可以维持状态、性能负载、容量、安全性或其他可通过接口访问的信息。当监视状态被激活时记录事件(如通过接口的信息)。

    我觉得是后面一句比较好理解,监视状态激活时记录事件,我看完之后的第一反应是各个浏览器的历史记录功能,可以记录用户浏览的各个界面。

  • 相关阅读:
    何为 ISAPI
    MacDown-The open source Markdown editor for OS X.
    Atom使用
    运维
    Perl
    Kaggle
    J2EE
    leetcode
    Tensorflow 学习笔记
    EXCEL公式及宏
  • 原文地址:https://www.cnblogs.com/0518liu/p/12400584.html
Copyright © 2011-2022 走看看