需求:
在软件测试的bug管理过程中,有时需要知道某一个版本在未来的bug走势(当然不是准确的,只是大概一个估计),如果我们已经有了最近一段时间内的bug统计情况(比如近一个月每天的bug数),可以通过曲线拟合的方式来进行简单的预测。根据这个需要,做了一个方便界面操作的小工具。
代码环境:
代码环境:python2.7 + numpy + scipy + matplotlib + PyQt4
(注意,相关库的版本和位数,要和所安装的python版本和位数保持一致,否则可能无法安装成功或安装之后无法正常使用)
如果python没有自带py2exe, 则还要另外下载py2exe进行安装,以便后面打包用。
代码(DefectPredict.py):
# -*-coding:UTF-8 -*-
__author__ = 'GraceDD'
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
import matplotlib.pyplot as plt
import pylab as pl
from scipy.optimize import leastsq
from scipy.integrate import *
import warnings
import matplotlib.backends.backend_qt5agg
import math
pl.mpl.rcParams['font.sans-serif'] = ['SimHei']#指定默认字体
pl.mpl.rcParams['axes.unicode_minus'] = False#解决保存图像是负号'-'显示为方块的问题
class Window(QtGui.QWidget):
param=[0,0,0]
def __init__(self):
super(Window, self).__init__()
# a figure instance to plot on
self.figure = plt.figure()
# this is the Canvas Widget that displays the `figure`
# it takes the `figure` instance as a parameter to __init__
self.canvas = FigureCanvas(self.figure)
# this is the Navigation widget
# it takes the Canvas widget and a parent
self.toolbar = NavigationToolbar(self.canvas, self)
# Just some button connected to `plot` method
self.button = QtGui.QPushButton('Plot')
self.button.clicked.connect(self.plot)
self.inLbl=QtGui.QLabel(u"输入",self)
self.inEdit=QtGui.QLineEdit(self)
self.modelLbl=QtGui.QLabel(u"函数模型:a*b^c^x",self)
self.blankLbll=QtGui.QLabel("",self)
self.oriALbl=QtGui.QLabel(u"初始参数a:",self)
self.oriAEdit=QtGui.QLineEdit(self)
self.oriBLbl=QtGui.QLabel(u"初始参数b:",self)
self.oriBEdit=QtGui.QLineEdit(self)
self.oriCLbl=QtGui.QLabel(u"初始参数c:",self)
self.oriCEdit=QtGui.QLineEdit(self)
self.resALbl=QtGui.QLabel(u"预测参数a:",self)
self.resAEdit=QtGui.QLineEdit(self)
self.resBLbl=QtGui.QLabel(u"预测参数b:",self)
self.resBEdit=QtGui.QLineEdit(self)
self.resCLbl=QtGui.QLabel(u&#