Powered By Blogger

Search Here!

Showing posts with label Automation. Show all posts
Showing posts with label Automation. Show all posts

Thursday, December 7, 2023

Calculate Software Automation ROI

Software automation ROI" refers to the Return on Investment (ROI) associated with implementing software automation in a business or organizational context. ROI is a measure used to evaluate the financial benefits of an investment relative to its cost. In the case of software automation, ROI assesses the value gained from automating specific processes or tasks compared to the expenses incurred in implementing and maintaining the automation.

Here are the following calculation parameters: (used google sheets)
 





Considering 2 years(12 months) of ROI projection:

Data Calculation parameters: 

  • Number of test-cases can be automated: (B5 -(B5*B6)/100) 
  • Automation of the test-cases needs: =(($B$7*$B$11)+B9)/B12
  • Time-to-market acceleration: =(B10*B7*B8)/8


Statistics calculation parameters: 


Saved manual testing time (accumulated), hrs = 

  • =$B$10*F21*$B$8*0
  • =H21+($B$10*F22*$B$8) ...

Automation costs (accumulated), hrs =

  • =D21
  • =D22+I21 ...

Autotests run and support cost, hrs= 

  • 0.00
  • =$B$13 ...

Test cases automated = 

  • =IF((E21/$B$11)*B12 >= $B$7, $B$7, (E21/$B$11)*B12)
  • =IF(((E22/$B$11)*$B$12) + $F21 >= $B$7, $B$7, (($E22/$B$11)*$B$12) + F21) ...


Autotests development cost, hrs using standard working hrs/month =

  • =IF($B$14 <= $B$18 * $B$12, $B$14, $B$18*$B$12)
  • =IF(SUM($E$21:E21)+$B$18 >= $B$14, MAX(0, $B$14 - SUM($E$21:E21)), $B$18*$B$12) ...

Automation costs, hrs =

  • =E21+G21
  • =E22+G22 ...

Saved manual testing time, hrs = 

  • =$B$10*F21*$B$8*0
  • =$B$10*F22*$B$8 ...

ROI, hrs = 

  • =H21-I21
  • =H22-I22 ...

Total saved in $ (- ve means in loss) = 

  • =(B45*B17)

Tuesday, June 15, 2021

Setup Automated Mobile Test Build Parameters in Jenkins !

Jenkins File -

properties([ 
disableConcurrentBuilds(),
buildDiscarder(logRotator(numToKeepStr: '25')),
parameters([
string(defaultValue: "localhost", description: 'Server Login IP address', name: 'LOGIN-IP-VALUE'),
choice(choices: ['All','Smoke','Regression'], description: 'Test Suite Name', name: 'Test_Suite_Name'),
choice(choices: ['emulator','device'], description: 'Device Type', name: 'DEVICE_TYPE'),
extendedChoice(name: 'Slave', value: 'Manish,Evan,Max', defaultValue: 'Manish', description: 'Slave Machine Name', type: 'PT_MULTI_SELECT', visibleItemCount: 2)
])
])

node("${env.Slave}") {
stage('Checkout') {
timestamps {
checkout scm
}
}

stage('Test') {
timestamps {
try {
bat 'python.exe -m robot --variable LOGIN-IP-VALUE:%LOGIN-IP-VALUE% --variable DEVICE_TYPE:%DEVICE_TYPE% -d Output -i %Test_Suite_Name% --loglevel TRACE Tests/'
} catch (Exception e) {
emailSubject = "Jenkins build Failure: ${JOB_NAME} #${BUILD_NUMBER}"
emailRecipients = [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
emailBody = """
<style>
table {border:1px solid #ccc}
th {border:1px solid #ccc}
td {border:1px solid #ccc}
</style>
<table>
<tr><th>Result</th><td>${e}</td></tr>
<tr><th>Name</th><td>${currentBuild.fullDisplayName}</td></tr>
<tr><th>Job URL</th><td><a href="${JOB_URL}">${JOB_URL}</a></td></tr>
<tr><th>Build URL</th><td><a href="${BUILD_URL}">${BUILD_URL}</a></td></tr>
</table>
""".stripIndent()
emailext attachLog: true, mimeType: 'text/html', subject: emailSubject, body: emailBody, recipientProviders: emailRecipients
throw e
} finally {
stage('Generate report') {
publishHTML([allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir:'Output',
reportFiles:'report.html',
reportName:'Mobile Integration Test Report'
])
}
                        }
                }
        }
}

Preview in Jenkins -

As per my assumption out tests should be enough capable to run on the given environment -

LOGIN-IP-VALUE - Execute test's on given IP address.
Test_Suite_Name - Execute tests based on selected types of scenarios.
DEVICE_TYPE - Using emulator or on the real device connected via USB.
Slave - Execute test on different machines based on user identity.