Beispiel #1
0
        public void Single_throughput_history()
        {
            var historicalTPs = new[] { 1, 2, 3 };
            var randomNumbers = new Queue <int>(new[] { 2, 2, 2, 2, 0, 1, 2, 0, 1, 2 });
            var sut           = new SoftwareDeliverySimulation(2, maxNumber => randomNumbers.Dequeue());

            var result = sut.SimulateIssueDeliveryBasedOnThroughput(new DateTime(2019, 10, 3), 10, historicalTPs);

            Assert.Empty(randomNumbers);
            Assert.Equal(new[] { 5, 7 }, result);
        }
        public void Forecast_8_issues()
        {
            DateTime  START_DATE       = new DateTime(2019, 11, 18);
            const int NUMBER_OF_ISSUES = 8;

            var issues = IssueRepository.Import().ToArray();
            var tp     = issues.BusinessDayThroughputs();

            _testOutputHelper.WriteLine($"TP sum: {tp.Sum()}");

            var sut = new SoftwareDeliverySimulation();
            var simulationresult = sut.SimulateIssueDeliveryBasedOnThroughput(START_DATE, NUMBER_OF_ISSUES, tp);
            var distribution     = Statistics.Distribution(simulationresult);

            var deDE = new CultureInfo("de-DE");

            foreach (var x in distribution.OrderBy(o => o.value))
            {
                _testOutputHelper.WriteLine($"{x.value}\t{x.frequency}\t{x.probability.ToString("0.000", deDE)}\t{x.percentile.ToString("0.0", deDE)}");
            }
        }
Beispiel #3
0
        public void Forecast_10_stories_with_single_issue_forecast()
        {
            DateTime  START_DATE        = new DateTime(2019, 11, 18);
            const int NUMBER_OF_STORIES = 10;

            var issues         = IssueRepository.Import().ToArray();
            var issuesPerStory = issues.IssuesPerStory();

            var sut = new SoftwareDeliverySimulation();
            var issueSimulationresult = sut.SimulateIssuesDerivedFromStories(
                Enumerable.Range(1, NUMBER_OF_STORIES).Select(_ => issuesPerStory).ToArray()
                );
            var issueDistribution = Statistics.Distribution(issueSimulationresult);

            _testOutputHelper.WriteLine("issues from stories forecast");
            var deDE = new CultureInfo("de-DE");

            foreach (var x in issueDistribution.OrderBy(o => o.value))
            {
                _testOutputHelper.WriteLine($"{x.value}\t{x.frequency}\t{x.probability.ToString("0.000", deDE)}\t{x.percentile.ToString("0.0", deDE)}");
            }



            _testOutputHelper.WriteLine("delivery forecast");

            var number_of_issues = issueDistribution.First(x => x.percentile > 80.0).value;

            _testOutputHelper.WriteLine($"Number of issues selected: {number_of_issues}");

            var tp = issues.BusinessDayThroughputs();
            var deliverySimulationresult = sut.SimulateIssueDeliveryBasedOnThroughput(START_DATE, number_of_issues, tp);
            var distribution             = Statistics.Distribution(deliverySimulationresult);

            foreach (var x in distribution.OrderBy(o => o.value))
            {
                _testOutputHelper.WriteLine($"{x.value}\t{x.frequency}\t{x.probability.ToString("0.000", deDE)}\t{x.percentile.ToString("0.0", deDE)}");
            }
        }
Beispiel #4
0
        public void Multiple_throughput_histories()
        {
            var historicalTPsA = new[] { 1, 2, 3 };
            var historicalTPsB = new[] { 0, 1, 2 };
            var randomNumbers  = new Queue <int>(new[] {
                1, 2, // 2+2=4
                2, 0, // 3+0=3/7
                0, 2, // 1+2=3/10

                0, 1, // 1+1=2
                1, 0, // 2+0=2/4
                2, 0, // 3+0=3/7
                0, 0, // 1+0=1/8
                0, 0, // 1+0=1/9
                1, 2  // 2+2=4/13
            });       //2,2,3,1,1,
            var sut = new SoftwareDeliverySimulation(2, maxNumber => randomNumbers.Dequeue());

            var result = sut.SimulateIssueDeliveryBasedOnThroughput(new DateTime(2019, 10, 3), 10, historicalTPsA, historicalTPsB);

            Assert.Empty(randomNumbers);
            Assert.Equal(new[] { 4, 7 }, result);
        }