A Software Engineer and data professional's blog on SQL, data, databases, data architectures, data management, programming, Software Engineering, Project Management, ERP implementation and other IT related topics.
Pages
- 🏠Home
- 🗃️Posts
- 🗃️Definitions
- 🏭Fabric
- ⚡Power BI
- 🔢SQL Server
- 📚Data
- 📚Engineering
- 📚Management
- 📚SQL Server
- 📚Systems Thinking
- ✂...Quotes
- 🧾D365: GL
- 💸D365: AP
- 💰D365: AR
- 👥D365: HR
- ⛓️D365: SCM
- 🔤Acronyms
- 🪢Experts
- 🗃️Quotes
- 🔠Dataviz
- 🔠D365
- 🔠Fabric
- 🔠Engineering
- 🔠Management
- 🔡Glossary
- 🌐Resources
- 🏺Dataviz
- 🗺️Social
- 📅Events
- ℹ️ About
13 September 2007
💎SQL Reloaded: XML on SQL Server 2005
💎SQL Reloaded: Null-ifying the World
CREATE TABLE Table1( ID int , [Year] int , Product varchar(30) , Price decimal(13,2) , Quantity decimal(13,3))
-- inserting the test data INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (1, 2002, NULL, 199.23, 100) --checking table's content SELECT * FROM Table1
-- checking for NULLs SELECT * FROM Table1 WHERE Product IS NULL
-- handling NULL values with a text SELECT ID, [Year], IsNull (Product, 'missing value'), Price, Quantity FROM Table1 -- handling NULL values with a text (different result) <span style="color: #000099;">SELECT</span> ID, [Year], IsNull(Product, 'The Prouct value is missing! Please correct it!') Product, Price, Quantity <span style="color: #000099;">FROM</span> Table1
SELECT ID, [Year], IsNull(Cast(Product as varchar(50)), 'The Prouct value is missing! Please correct it!') Product, Price, Quantity FROM Table1 -- inserting more NULL values. INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (1, 2002, 'Product 6', NULL, 100) INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (1, 2002, 'Product 7', 45.08, NULL) INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (1, 2002, 'Product 8', NULL, NULL) INSERTTable1(ID, [Year], Product, Price, Quantity) VALUES (1, NULL, 'Product 9', NULL, NULL)
-- individual checks SELECT * FROM Table1 WHERE Price IS NULL OR Quantity IS NULL -- simpler alternative SELECT * FROM Table1 WHERE IsNull(Price1, Price2) IS NULL
-- checking for multiple values SELECT * FROM Table1 WHERE COALESCE(Price1, Price2, Price3) IS NULL -- replacing NULL values SELECT ID , [Year] , IsNull(Product, 'The Prouct value is missing!') Product , IsNull(Price, 0) , IsNull(Quantity, 0) FROM Table1
Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'Product', table 'Learning.dbo.Table1'; column does not allow nulls. INSERT fails.
--droping the table DROP TABLE Table1 -- creating the table anew CREATE TABLE Table1( ID NOT NULL , [Year] int NOT NULL , Product varchar(30) NOT NULL , Price decimal(13,2) NOT NULL , Quantity decimal(13,3) NOT NULL) -- inserting NULL values INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (1, 2002, NULL, 199.23, 100)7
-- creating the table anew CREATE TABLE Table1( ID int NOT NULL , [Year] int NOT NULL , Product varchar(30) DEFAULT 'Unknown' , Price decimal(13,2) NOT NULL , Quantity decimal(13,3) NOT NULL) -- Inserting some values INSERT Table1(ID, [Year], Price, Quantity) VALUES (1, 2002, 199.23, 100) INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (1, 2002, NULL, 199.23, 100) --testing the output SELECT * FROM Table1
💎SQL Reloaded: Preparing Test Data
-- creating the test table CREATE TABLE Table1( ID int NOT NULL , [Year] int NOT NULL , Product varchar(30) NOT NULL , Price decimal(13,2) NOT NULL , Quantity decimal(13,3) NOT NULL) -- dropping the test table --DROP TABLE Table1 -- deleting the data --TRUNCATE TABLE Table1
-- inserting the data DECLARE @index int SET @index = 1 WHILE @index < 99 BEGIN INSERT Table1(ID, [Year], Product, Price, Quantity) VALUES (@index, 2000 + (@index % 4), 'Product ' + Cast(@index%10 as char(3)), 10 * RAND(), 100 * RAND()) SET @index = @index + 1 END --testing the output SELECT * FROM Table1 -- using the data SELECT [Year], Product, SUM(Price * Quantity) Amount FROM Table1 GROUP BY [Year], Product ORDER BY [Year], Product
💎SQL Reloaded: Lists as Parameters in Stored Procedures
-- creating the table CREATE TABLE dbo.Testing( value varchar(50)) --populating it with records INSERT dbo.Testing SELECT value FROM dbo.SplitList('1,5,7,56,67,34,33,54,76', ',') -- reviewing the output SELECT * FROM Testing
-- creating the stored procedure CREATE PROCEDURE dbo.TestingListsAsParameters( @listOfValues varchar(500)) AS DECLARE @SQL varchar(1000) SET @SQL = 'SELECT * FROM dbo.Testing WHERE Value IN (' + @listOfValues + ')' EXEC (@SQL) -- testing the stored procedure EXEC TestingListsAsParameters '5,7,56, 67'
-- creating the stored procedure (join-based logic) CREATE PROCEDURE dbo.TestingListsAsParameters1( @listOfValues varchar(500)) AS SELECT A.* FROM dbo.Testing A JOIN dbo.SplitList(@listOfValues, ',') B ON A.Value = B.Value -- testing the stored procedure EXEC TestingListsAsParameters1 '5,7,56,67'
-- creating the stored procedure CREATE PROCEDURE dbo.TestingListsAsParameters2( @listOfValues varchar(500)='') AS SELECT A.* FROM Testing A WHERE (Value IN (SELECT value FROM dbo.SplitList(@listOfValues, ',')) AND Len(@listOfValues)>0) OR Len(@listOfValues)=0 --testing the stored procedure EXEC TestingListsAsParameters2 '5,7,56,67' --returns only the matches from the list EXEC TestingListsAsParameters2 --returns all the values
Lists, Sets and a Little Math
-- intersection of two sets SELECT A.* FROM dbo.SplitList('23 34 50 71', ' ') A JOIN dbo.SplitList('23,34,25,45', ',') B ON A.Value = B.Value
A list is a collection of elements which can repeat in the list. When the elements of a list don't repeat we can talk about a set. Sets considered in combination with reunion, intersection, (set) difference, cartesian product and power set forms the basis of topology, however the most interesting part is when we start taking elements from the set or combining the elements of sets.
Arrangements with repetition, called also n-tuples of m-sets, given the fact that the arrangements are created by taking n elements from m sets. The number of elements is given by the formula: m^n. Thus, the arrangements of 2, 3, 4 elements with repetition will give 16, 64, respectively 256 combinations:
-- arrangements of 2 elements with repetition SELECT * FROM dbo.SplitList('1,2,3,4', ',') A , dbo.SplitList('1,2,3,4', ',') B
ORDER BY A.Value, B.Value -- arrangements of 3 elements with repetition SELECT * FROM dbo.SplitList('1,2,3,4', ',') A , dbo.SplitList('1,2,3,4', ',') B , dbo.SplitList('1,2,3,4', ',') C
ORDER BY A.Value, B.Value, C.Value -- arrangements of 4 elements with repetition SELECT * FROM dbo.SplitList('1,2,3,4', ',') A , dbo.SplitList('1,2,3,4', ',') B , dbo.SplitList('1,2,3,4', ',') C , dbo.SplitList('1,2,3,4', ',') D
ORDER BY A.Value, B.Value, C.Value, D.Value
Combinations are selections of items, such that the order of selection does not matter, though the elements don't repeat inside of the n-tuple. Combinations of 4 elements taken as 2, 3, respectively 4:
-- combinations of 4 elements taken as 2 SELECT * FROM dbo.SplitList('1,2,3,4', ',') A JOIN dbo.SplitList('1,2,3,4', ',') B ON A.Value < B.Value
ORDER BY A.Value, B.Value -- combinations of 4 elements taken as 3 SELECT * FROM dbo.SplitList('1,2,3,4', ',') A JOIN dbo.SplitList('1,2,3,4', ',') B ON A.Value < B.Value JOIN dbo.SplitList('1,2,3,4', ',') C ON B.Value < C.Value
ORDER BY A.Value, B.Value, C.Value -- combinations of 4 elements taken as 4 SELECT * FROM dbo.SplitList('1,2,3,4', ',') A JOIN dbo.SplitList('1,2,3,4', ',') B ON A.Value < B.Value JOIN dbo.SplitList('1,2,3,4', ',') C ON B.Value < C.Value JOIN dbo.SplitList('1,2,3,4', ',') D ON C.Value < D.Value
ORDER BY A.Value, B.Value, C.Value, D.Value
Permutations, in exchange, involve arranging the elements of a set by interchanging their position. The permutations of 4 elements are given by following code:
-- permutations of 4 elements SELECT * FROM dbo.SplitList('1,2,3,4', ',') A JOIN dbo.SplitList('1,2,3,4', ',') B ON A.Value <> B.Value JOIN dbo.SplitList('1,2,3,4', ',') C ON B.Value <> C.Value AND A.Value <> C.Value JOIN dbo.SplitList('1,2,3,4', ',') D ON C.Value <> D.Value AND B.Value <> D.Value AND A.Value <> D.Value ORDER BY A.Value, B.Value, C.Value, D.Value
In praxis there are specific algorithms for generating the arrangements, combinations or permutations of a set, however I think that the above examples are simpler to understand as they reflect also the mathematical heuristic. The downside is that the complexity of the queries increases with the number of elements in the set.
In the end here's a fun example on how simple propositions can be created:
-- creating propositions SELECT 'The ' + A.Value + ' ' + B.Value + ' ' + C.Value + '!' FROM dbo.SplitList('cat,dog,bird,fish', ',') A , dbo.SplitList('drinks,smells,eats,jumps', ',') B , dbo.SplitList('loudly,nicely,grumpy,alone', ',') C
Happy Coding!
Table-valued Functions and List of Values
Often, I needed to transform a list of values into a table-like structure to process the data easier, it was easy to do that in a stored procedure, but data were usable only inside the procedure. Once I jumped in the world of table-valued functions, new horizons opened. One can provide a list of values as parameter to a function and return the values in a tabular form, like in the below example:
CREATE FUNCTION dbo.SplitList( @ListValues varchar(500) , @Delimiter char(1)) RETURNS @Temp TABLE(Value varchar(50)) AS BEGIN DECLARE @Index int DECLARE @Length int SET @Index = CharIndex(@Delimiter, @ListValues) SET @Length = Len(@ListValues) - @Index WHILE @Index > 0 --if the fatch was successful BEGIN INSERT @Temp VALUES( Substring(@ListValues, 0, @Index)) SET @ListValues = Substring(@ListValues, @Index+1, @Length) SET @Index = CharIndex(@Delimiter, @ListValues) SET @Length = @Length - @Index END INSERT @Temp VALUES(@ListValues) RETURN END
And, here are a few simple examples with the function at work:
-- Example 1: SELECT * FROM dbo.SplitList('24,34,34,56,23', ',') -- Example 2: SELECT * FROM dbo.SplitList('24 34 34 56 23', ' ') -- Example 3: SELECT * FROM dbo.SplitList(NULL, ',')
The utility of such a function resides in the fact that it can be used in JOINs or subqueries, to filter or search for values. It can be mixed with tables as well with calls to the same functions:
-- intersection SELECT A.* FROM dbo.SplitList('23,34 50,71', ',') A JOIN dbo.SplitList('23,34,25,45', ',') B ON A.Value = B.Value -- A\B SELECT A.* FROM dbo.SplitList('23,34,50,71', ',') A LEFT JOIN dbo.SplitList('23,34,25,45', ',') B ON A.Value = B.Value WHERE B.Value IS NULL -- B\A SELECT B.* FROM dbo.SplitList('23,34,50,71', ',') A RIGHT JOIN dbo.SplitList('23,34,25,45', ',') B ON A.Value = B.Value WHERE A.Value IS NULL -- union SELECT A.* FROM dbo.SplitList('23,34,50,71', ',') A UNION SELECT * FROM dbo.SplitList('23,34,25,45', ',') B -- carthesian product SELECT A.*, B.* FROM dbo.SplitList('23,34,50,71', ',') A JOIN dbo.SplitList('23,34,25,45', ',') B ON 1=1
Unfortunately, such JOINs have poor performance when the number of values is increasing. The performance can be improved by declaring the "value" column as PRIMARY KEY, however this won't work with NULL values and duplicates. Thus by replacing the RETURN line with the following, the queries will perform faster:
RETURNS @Temp TABLE(Value varchar(50) PRIMARY KEY)
Happy coding!
11 September 2007
🏗️Software Engineering: Art (Just the Quotes)
"Doing engineering is practicing the art of the organized forcing of technological change." (George Spencer-Brown, Electronics, Vol. 32 (47), 1959)
"Engineering is a method and a philosophy for coping with that which is uncertain at the earliest possible moment and to the ultimate service to mankind. It is not a science struggling for a place in the sun. Engineering is extrapolation from existing knowledge rather than interpolation between known points. Because engineering is science in action - the practice of decision making at the earliest moment - it has been defined as the art of skillful approximation. No situation in engineering is simple enough to be solved precisely, and none worth evaluating is solved exactly. Never are there sufficient facts, sufficient time, or sufficient money for an exact solution, for if by chance there were, the answer would be of academic and not economic interest to society. These are the circumstances that make engineering so vital and so creative." (Ronald B Smith, "Engineering Is…", Mechanical Engineering Vol. 86 (5), 1964)
"We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak of the state of the Art." (Donald E Knuth, "The Art of Computer Programming", 1968)
"The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible." (Edsger W Dijkstra, "Notes on Structured Programming", 1970)
"Programming is the art of writing essays in crystal clear prose and making them executable." (Per B Hansen, "The architecture of concurrent programs", 1977)
"If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires that he expand his repertory of paradigms." (Robert Floyd, "The Paradigms of Programming", 1979)
"No matter how vigorously a 'science' of design may be pushed, the successful design of real things in a contingent world will always be based more on art than on science. Unquantifiable judgments and choices are the elements that determine the way a design comes together. Engineering design is simply that kind of process. It always has been; it always will be. (Eugene S Ferguson , "Engineering and the Mind’s Eye", 1992)
"Model building is the art of selecting those aspects of a process that are relevant to the question being asked. As with any art, this selection is guided by taste, elegance, and metaphor; it is a matter of induction, rather than deduction. High science depends on this art." (John H Holland," Hidden Order: How Adaptation Builds Complexity", 1995)
"Much of the art of system dynamics modeling is discovering and representing the feedback processes, which, along with stock and flow structures, time delays, and nonlinearities, determine the dynamics of a system. […] the most complex behaviors usually arise from the interactions (feedbacks) among the components of the system, not from the complexity of the components themselves." (John D Sterman, "Business Dynamics: Systems thinking and modeling for a complex world", 2000)
"As a noun, design is the named (although sometimes unnamable) structure or behavior of a system whose presence resolves or contributes to the resolution of a force or forces on that system. A design thus represents one point in a potential decision space. A design may be singular (representing a leaf decision) or it may be collective (representing a set of other decisions). As a verb, design is the activity of making such decisions. Given a large set of forces, a relatively malleable set of materials, and a large landscape upon which to play, the resulting decision space may be large and complex. As such, there is a science associated with design (empirical analysis can point us to optimal regions or exact points in this design space) as well as an art (within the degrees of freedom that range beyond an empirical decision; there are opportunities for elegance, beauty, simplicity, novelty, and cleverness). All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change." (Grady Booch, "On design", 2006)
"Architecting is both an art and a science - both synthesis and analysis, induction and deduction, and conceptualization and certification - using guidelines from its art and methods from its science. As a process, it is distinguished from systems engineering in its greater use of heuristic reasoning, lesser use of analytics, closer ties to the client, and particular concern with certification of readiness for use." (Mark W Maier, "The Art Systems of Architecting" 3rd Ed., 2009)
"Programming is a science dressed up as art, because most of us don’t understand the physics of software and it’s rarely, if ever, taught. The physics of software is not algorithms, data structures, languages, and abstractions. These are just tools we make, use, and throw away. The real physics of software is the physics of people. Specifically, it’s about our limitations when it comes to complexity and our desire to work together to solve large problems in pieces. This is the science of programming: make building blocks that people can understand and use easily, and people will work together to solve the very largest problems." (Pieter Hintjens, "ZeroMQ: Messaging for Many Applications", 2012)
"Computer programming is like the ability or skill to see what Picasso saw from all the different angles at once. If it is an art, the crucial element of art is to look at things from an angle that produces new insight or at least has that potential." (Erik Naggum)
"To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge." (Grace Hopper)
03 August 2007
🌁Software Engineering: Total Quality Management [TQM] (Definitions)
"A concept that focuses on managing the total organization to deliver quality to customers. Four significant elements of TQM are employee involvement, focus on the customer, benchmarking, and continuous improvement." (Timothy J Kloppenborg et al, "Project Leadership", 2003)
"A management concept (and associated tools) that involves the entire workforce in focusing on customer satisfaction and continuous improvement." (Martin J Eppler, "Managing Information Quality" 2nd Ed., 2006)
"A management strategy aimed at embedding awareness of quality in all organizational processes." (Linda Volonino & Efraim Turban, "Information Technology for Management" 8th Ed., 2011)
"Procedures and policies aimed at organization-wide continuous improvement." (Leslie G Eldenburg & Susan K Wolcott, "Cost Management 2nd Ed", 2011)
"Techniques, methods and management principles for continuous improvement, based on the work of Deming, Juran, Crosby and others." (DAMA International, "The DAMA Dictionary of Data Management", 2011)
"A management philosophy based on the premise that the quality of products and processes can be continuously improved." (Bonnie Biafore & Teresa Stover, "Your Project Management Coach: Best Practices for Managing Projects in the Real World", 2012)
"A philosophy and a set of principles that set the stage for a continuously improving organization." (Joan C Dessinger, "Fundamentals of Performance Improvement" 3rd Ed., 2012)
"A management philosophy from the 1940s and 1950s, consisting of various strategies to ensure quality products and services." (Sally-Anne Pitt, "Internal Audit Quality", 2014)
"A comprehensive approach to the management of quality from the production environment that proves that the costs of preventive quality management exceed the total costs for all reactive measures in the management of quality. This applies to material, as well as immaterial, goods like data." (Boris Otto & Hubert Österle, "Corporate Data Quality", 2015)
"A holistic approach to long-term success that views continuous improvement in all aspects of an organization as a process and not as a short-term goal." (Kijpokin Kasemsap, "Applying Lean Production and Six Sigma in Global Operations", 2016)
"A systematic, organization-wide approach to quality that stresses continually improving all processes that deliver products and services, with the major outcome of 'delighting' the customer." (Atila Ertas, "Transdisciplinary Engineering Design Process", 2018)
"An organization-wide management approach centered on quality, based on the participation of all members of the organization and aiming at long-term success through customer satisfaction, and benefits to all members of the organization and to society. Total Quality Management consists of planning, organizing, directing, control, and assurance. (ISO 8402)
🌁Software Engineering: Cost of Quality [CoQ] (Definitions)
"Cost of poor quality is the cost associated with providing poor-quality products or services. There are four categories: internal failure costs (costs associated with defects found before the customer receives the product or service), external failure costs (costs associated with defects found after the customer receives the product or service), appraisal costs (costs incurred to determine the degree of conformance to quality requirements), and prevention costs (costs incurred to keep failure and appraisal costs to a minimum)." (Laura Sebastian-Coleman, "Measuring Data Quality for Ongoing Improvement ", 2012)
"A method of determining the costs incurred to ensure quality. Prevention and appraisal costs (cost of conformance) include costs for quality planning, quality control (QC), and quality assurance to ensure compliance to requirements (i.e., training, QC systems, etc.). Failure costs (cost of non-conformance) include costs to rework products, components, or processes that are non-compliant, costs of warranty work and waste, and loss of reputation. " (Cynthia Stackpole, "PMP® Certification All-in-One For Dummies®", 2011)
"Costs incurred to insure high quality and/or the actual and opportunity costs from problems with poor quality. Also see quality-related activities." (Leslie G Eldenburg & Susan K Wolcott, "Cost Management 2nd Ed", 2011)
"Money spent during the project to avoid failures, including prevention and testing costs. COQ operates on the premise that costs for meeting quality requirements are less than those for dealing with nonconformance to requirements." (Bonnie Biafore & Teresa Stover, "Your Project Management Coach: Best Practices for Managing Projects in the Real World", 2012)
"All costs incurred over the life of the product by investment in preventing nonconformance to requirements, appraisal of the product or service for conformance to requirements, and failure to meet requirements." (Project Management Institute, "A Guide to the Project Management Body of Knowledge (PMBOK Guide )", 2017)
"The total costs incurred on quality activities and issues and often split into prevention costs, appraisal costs, internal failure costs and external failure costs." (Software Quality Assurance)
30 July 2007
🌁Software Engineering: Black-Box Testing (Definitions)
"A specification-based test that looks at a system or unit exclusively from the outside, that is, over its public interface." (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)
"This test compares the externally observable behavior at the external software interfaces (without knowledge of their structure) with the desired behavior. Black-Box tests are frequently equated with »functional tests«, although they can of course also include non-functional tests." (Lars Dittmann et al, "Automotive SPICE in Practice", 2008)
"Repeatable procedure to derive and/or select test cases based on an analysis of the specification, either functional or nonfunctional, of a component or system without reference to its internal structure." (Tilo Linz et al, "Software Testing Foundations" 4th Ed., 2014)
"A software testing methodology that looks at available inputs for an application and the expected outputs from each input." (Mike Harwood, "Internet Security: How to Defend Against Attackers on the Web" 2nd Ed., 2015)
[Data coverage (black-box) testing:] "Testing a program or subprogram based on the possible input values, treating the code as a black box" (Nell Dale & John Lewis, "Computer Science Illuminated" 6th Ed., 2015)
[black-box test design technique:] "Procedure to derive and/or select test cases based on an analysis of the specification, either functional or non-functional, of a component or system without reference to its internal structure." (Software Quality Assurance)
"Testing, either functional or non-functional, without reference to the internal structure of the component or system." (Software Quality Assurance)
16 July 2007
🌁Software Engineering: White-Box Test/Testing (Definitions)
"An implementation-based test, in contrast to a specification-based test" (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)
"This test is derived knowing the inner structure of the software and based on the program code, design, interface descriptions, and so on. White-box tests are also called 'structure based tests'." (Lars Dittmann et al, "Automotive SPICE in Practice", 2008)
"Any technique used to derive and/or select test cases based on an analysis of the internal structure of the test object." (Tilo Linz et al, "Software Testing Foundations" 4th Ed., 2014)
"This kind of testing requires you to look at the code and see how it works, so you can test individual blocks and choices within the code." (Matt Telles, "Beginning Programming", 2014)
"White box test design technique in which the test cases are designed using the internal structure of the test object. Completeness of such a test is judged using coverage of structural elements (for example, branches, paths, data). General term for control- or data-flow-based test." (Tilo Linz et al, "Software Testing Foundations", 4th Ed., 2014)
"A software testing methodology that examines the code of an application. This contrasts with black box testing, which focuses only on inputs and outputs of an application." (Mike Harwood, "Internet Security: How to Defend Against Attackers on the Web" 2nd Ed., 2015)
"A test designed by someone who knows how the code works internally. That person can guess where problems may lie and create tests specifically to look for those problems." (Rod Stephens, "Beginning Software Engineering", 2015)
"Procedure to derive and select test cases based on an analysis of the internal structure of a component or system." (Standard Glossary, "ISTQB", 2015)
"Testing based on an analysis of the internal structure of the component or system. " (Standard Glossary, "ISTQB", 2015)
About Me
- Adrian
- Koeln, NRW, Germany
- IT Professional with more than 24 years experience in IT in the area of full life-cycle of Web/Desktop/Database Applications Development, Software Engineering, Consultancy, Data Management, Data Quality, Data Migrations, Reporting, ERP implementations & support, Team/Project/IT Management, etc.