• 可测试性战术


    可测试性战术:

      软件可测试性是指通过测试(通常是基于运行的测试)揭示软件缺陷的容易程度。软件的开发和测试是并行的,这就需要测试人员尽快找出软件的关键bug并且快速的修复他,这就需要程序员提高软件的可测试性,让软件在测试阶段更加方便明了的被测试,而不是结构混乱,难以测试,难以维护。

      可测试性战术的目标是允许在完成软件开发的一个增量后,轻松地对软件进行测试。

     

    可测试性战术可以分为两类:

      一个是提供输入并捕获输出结果进行测试,一个是对软件内部进行监视,第一个就对应软件测试里的黑盒测试,不看软件内部的构造,只看输入什么,输出什么,而后一个则是白盒测试,要监视软件内部的结果、数据和事件。

    输入输出:

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

       其实最简单的记录回放就是

     System.out.println(  ); 

      控制台输出,这也是平时写代码的时候常用的测试方法。

      还有就是例如数据库的异常响应,try catch语句捕获异常信息:

    public static Connection getConn () {
            Connection conn = null;
            
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection(db_url, db_user, db_pass);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            return conn;
        }

     这里就调用了连接数据库的方法,并且通过try-catch语句抛出跨接口调用的异常信息。

     还有java中的撤销,返回功能 ctrl z  ctrl y  他就是利用一个首尾相连的链表,实现这个功能的:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.undo.*;
    
    class UndoDemo extends JFrame {
    
        static JTextArea text = new JTextArea();
        static JPanel pnl = new JPanel();
        static JButton unbtn = new JButton("撤销");
        static JButton rebtn = new JButton("恢复");
        static UndoManager undomg = new UndoManager();
    
        UndoDemo() {
    
            super("撤销、恢复功能实例");
            setVisible(true);
            setSize(400,300);
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLayout(new BorderLayout(5,5));
    
            pnl.setLayout(new FlowLayout(5));
            pnl.add(unbtn);
            pnl.add(rebtn);
            add(pnl,BorderLayout.NORTH);
            add(text,BorderLayout.CENTER);
    
            text.getDocument().addUndoableEditListener(undomg);
    
            unbtn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    if(undomg.canUndo()) {
                        undomg.undo();
                    } else {
                        JOptionPane.showMessageDialog(null,"无法撤销","警告",JOptionPane.WARNING_MESSAGE);
                    }
                }
            });
    
            rebtn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    if(undomg.canRedo()) {
                        undomg.redo();
                    } else {
                        JOptionPane.showMessageDialog(null,"无法恢复","警告",JOptionPane.WARNING_MESSAGE);
                    }
                }
            });
        }
    
        public static void main(String[] args) {
            new UndoDemo();
        }
    }

    引用自:https://blog.csdn.net/ProComFan/article/details/5124501

    2、将接口与实现分离(Separate interface from implementation :将接口与实现分离允许实现的代替。占位实现允许在缺少被占位组件时,对系统的剩余部分进行测试

     学过设计模式后就知道,写程序要高内聚低耦合,编码的原则要实现单一职责原则。将接口与实现隔离,就好像一个家用电器,有各个功能模块,再用线路将各个器件连接在一起,如果一个器件出现故障,其他器件不受影响。这样就保证了,在缺少一个器件时,不影响对其他部件的测试。

    例:利用servlet实现接口隔离

    //通过ID得到账单信息(删除项)
        private void getitById2(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
            
            req.setCharacterEncoding("utf-8");
            int id = Integer.parseInt(req.getParameter("id"));
            if(dao.delete(id)) {
                req.setAttribute("message", "删除成功!");
                req.getRequestDispatcher("Mainpage.jsp").forward(req, resp);
            }else{
                req.setAttribute("message", "删除失败!");
                req.getRequestDispatcher("Mainpage.jsp").forward(req, resp);
            }
        }

     如果一个方法除了问题,那么只需要检查这一个方法就可以,而不用把整个项目都查一遍

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

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

    内部监视:

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

      白盒测试是把测试对象看作是一个透明的盒子,而程序员利用内部的逻辑结构哈信息,对程序的逻辑路径进行测试,而内部监视器则可以返回基本路径节点的信息和记录,更方便了对系统进行百合测试,增强了项目的可测试性。

      浏览器中的 检查 功能就是一个内部监视器,他可以明了的把网页的各个节点的信息反馈给开发者:

     

  • 相关阅读:
    Use JAWS 14 in a VM
    远程文件拷贝
    MVA Prototype Only User License
    Global.asax 详解
    GridView of different size items
    Windows Phone 8, 添加Map控件
    动态规划——递归写法和递推写法
    守形数
    遍历链表
    成绩排序
  • 原文地址:https://www.cnblogs.com/jmdd/p/12418204.html
Copyright © 2020-2023  润新知