CSCI 494-002: Industry Methods
2/5/2019
Survey Results, Unit Testing
Agenda
Attendance
ARTICLES.md
merged this morning- https://github.com/sleddog/methods/pull/51
...The best GitHub repos in December 2018...
Course Feedback / Notes
Reminder to use Course Notes document
grades for Project 1 online in D2L
grades for Project 2, 3 posted by next week
sleddog/methods
Started our LinkedIn Group
I still need to connect with:
https://www.linkedin.com/in/brady-cornett/
https://www.linkedin.com/in/trenton-baker-94aa4bbb/
https://www.linkedin.com/in/alex-ackerlund-4507a4178/
https://www.linkedin.com/in/ryan-cummings-947510159/
https://www.linkedin.com/in/marielle-korringa-400ba1178/
https://www.linkedin.com/in/ryder-wing-137014179/
https://www.linkedin.com/in/logan-shy-7b2015179/
https://www.linkedin.com/in/michael-seeley-b0825617a/
https://www.linkedin.com/in/jonathan-sorem-a69870173/
No Linkedin Profile...
John Watts
Scott Neuville
Gage O'Neill
Nick Hager
Alex Sutherland
Favorite Language?
Student Survey Results
“...Git, Development methodologies...”
“...gain valuable insights into the industry to better prepare me for internships/jobs...”
“...interested in docker, git, and unit tests...”
“...continuous integration, authentication, docker/kubernetes, testing (unit and stress/load?)...”
Student Survey Results
“... help me add value when I join a company. I want to focus on industry methods that are ignored in the typical CS classes...”
“...git and code review...”
“...get really familiar with git...”
“GitHub”
“Control Flow, IDE Setup, and connecting the dots between school/real world”
Student Survey Results
“Kubernetes, literally anything!”
“Workflow and tools used in industry”
“monitoring, code reviews, communication, unit testing, clean code, continuous integration, kubernetes”
“Tools that are used to launch and maintain live software”
“Git, command line, workflow in industry, anything that will help me when I get out”
“...be comfortable with git”
“Build systems”
“The topic of what to learn more about! I am wandering in the forest of my field!”
kubernetes
Industry Leader Survey Results
18 responses
Pulsara, Oracle, Schedulicity, Resonon, 45 North Solutions, PolSource, OnX, wolfSSL Inc., Foundant Technologies, SAP Concur, Workiva, Dataminr, CrossTx, Inc., Submittable, Quiq, Figure Technologies Inc., Kinsa Creative Incorporated, Salesforce
Version Control?
Cloud Providers
Typical Process at Workiva
1. A PR is created
2. Code reviews are required
4. A slew of automated tests run which includes Security analysis, unit/functional/integration tests as well as internal compliance checks
3. QA testing is performed
4. If everything looks good we have a Bot that lurks on github and you can request the Bot to merge the PR
Typical Process at Pulsara
Typical Process at Figure
We utilize a standard git flow where features are branched from develop and merged back in. The develop branch is considered ready for production and is merged to master to complete a production release.
DEMO - jenkins + github integration
Advice from Industry
Please read through the entire survey results (request for access please), as there are some common themes of advice.
Next slides are the highlights...
Erich Hannah - CTO Pulsara
Mark Campanelli - Software Engineer
Code is read many more times than it is written. Projects have long term architecture that usually outlives any single developer. The simple solution is usually the easiest to maintain/extend. Good architecture usually makes testing easier. If you have to skip testing due to resource limitations, then don't also skimp on good architecture and ASAP (as simple as possible!).
Recommends watching: Simplicity Matters by Rich Hickey
Other tips
What should a new hire know?
Need an Internship?
https://www.pulsara.com/careers
https://www.pulsara.com/msu-cs-intern
https://essentials.schedulicity.com/careers/
mark.campanelli@gmail.com
jobs@45northsolutions.com
info@wolfssl.com
https://www.foundant.com/careers/
https://www.workiva.com/careers?flexslider_nav_tabs_0=4
https://www.dataminr.com/careers
Yes, www.crosstx.com
https://resume.submittable.com/submit/126212/summer-2019-technical-fellowship
Yes, please see https://goquiq.com/careers/
etc...
In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.[1]
Example - java
import org.junit.Test;
import static org.junit.Assert.*;
public class MyUnitTest {
@Test
public void testConcatenate() {
MyUnit myUnit = new MyUnit();
String result = myUnit.concatenate("one", "two");
assertEquals("onetwo", result);
}
}
Example - python - link
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
if __name__ == '__main__':
unittest.main()
Unit Test Tips
Keep them short and sweet
They should be very fast to execute
Try writing your test FIRST
Additional Reading
Project 4 - FizzBuzzBazz + Unit Test
Next Lecture
Questions?