可测试性战术
可测试性战术(基于运行的测试)的目标是允许在完成软件开发的一个增量后,较轻松地对软件进行测试。
根据课上的讲解,下面分别从两方面用于测试的战术进行讨论:提供输入/捕获输出;内部监视。
可测用性一般场景
这个涉及到最近学习的软件测试技术,我认为与场景测试法比较接近。可以是任何涉及到的人员对软件进行任意测试,用户是在软件完成之后开始测试,测试人员贯穿测试其中。
输入/输出
-
记录/回放
记录/回放是指捕获跨接口的信息,并将其作为测试专用软件的输入。 -
将接口与实现分离
将接口与实现分离允许实现的代替,以支持各种测试目的。点位实现允许在缺少被占位的组件时,对系统的剩余部分进行测试。 -
特化访问路线/接口
具有特化的测试接口允许通过测试工具并独立于其正常操作,来捕获或指定组件的变量值。
综上所诉,我对输入输出的理解是将接口与功能实现部分分开,这一点在上学期的软件设计中有多次的体现(高内聚、低耦合),方便代码修改,也方便找到问题的出处。
拿之前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("结束")); } }
内部监视
组件可以根据内部状态实现战术,以支持测试过程。
内置监视器
组件可以维持状态、性能负载、容量、安全性或其他可通过接口访问的信息。当监视状态被激活时记录事件(如通过接口的信息)。
我觉得是后面一句比较好理解,监视状态激活时记录事件,我看完之后的第一反应是各个浏览器的历史记录功能,可以记录用户浏览的各个界面。