可测试性战术总结

可测试性战术

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

 

可测用性一般场景 

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

 

输入/输出

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

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

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

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

拿之前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("结束"));
    }
    
}

 

内部监视

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

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

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

 

 

posted on 2020-03-03 09:36  小朝~~~  阅读(303)  评论(0编辑  收藏  举报

导航